1---------------------------------------- 210 January 2020. Summary of changes for version 20200110: 3 4 51) ACPICA kernel-resident subsystem: 6 7Updated all copyrights to 2020. This affects all ACPICA source code 8modules. 9 10 112) iASL Compiler/Disassembler and ACPICA tools: 12 13ASL test suite (ASLTS): Updated all copyrights to 2020. 14 15Tools and utilities: Updated all signon copyrights to 2020. 16 17iASL: fix forward reference analysis for field declarations. Fixes 18forward reference analysis for field declarations by searching the 19parent scope for the named object when the object is not present in 20the current scope. 21 22iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 23full pathname of the name that already exists is printed. 24 25iASL: Enhance duplicate Case() detection for buffers. Add check for 26buffers with no initializer list (these buffers will be filled with 27zeros at runtime.) 28 29 30---------------------------------------- 3113 December 2019. Summary of changes for version 20191213: 32 33 341) ACPICA kernel-resident subsystem: 35 36Return a Buffer object for all fields created via the CreateField 37operator. Previously, an Integer would be returned if the size of 38the field was less than or equal to the current size of an Integer. 39Although this goes against the ACPI specification, it provides 40compatibility with other ACPI implementations. Also updated the 41ASLTS test suite to reflect this new behavior. 42 432) iASL Compiler/Disassembler and ACPICA tools: 44 45iASL: Implemented detection of (and throw an error for) duplicate 46values for Case statements within a single Switch statement. Duplicate 47Integers, Strings, and Buffers are supported. 48 49iASL: Fix error logging issue during multiple file compilation -- 50Switch to the correct input file during error node creation. 51 52iASL: For duplicate named object creation, now emit an error instead 53of a warning - since this will cause a runtime error. 54 55AcpiSrc: Add unix line-ending support for non-Windows builds. 56 57iASL: Add an error condition for an attempt to create a NameString 58with > 255 NameSegs (the max allowable via the AML definition). 59 60 61---------------------------------------- 6218 October 2019. Summary of changes for version 20191018: 63 64 651) ACPICA kernel-resident subsystem: 66 67Debugger: added a new command: ?Fields [address space ID]?. This command 68dumps the contents of all field units that are defined within the 69namespace with a particular address space ID. 70 71Modified the external interface AcpiLoadTable() to return a table index. 72This table index can be used for unloading a table for debugging. 73 ACPI_STATUS 74 AcpiLoadTable ( 75 ACPI_TABLE_HEADER *Table, 76 UINT32 *TableIndex)) 77 78Implemented a new external interface: AcpiUnloadTable() This new function 79takes a table index as an argument and unloads the table. Useful for 80debugging only. 81 ACPI_STATUS 82 AcpiUnloadTable ( 83 UINT32 TableIndex)) 84 85Ported the AcpiNames utility to use the new table initialization 86sequence. The utility was broken before this change. Also, it was 87required to include most of the AML interpreter into the utility in order 88to process table initialization (module-level code execution.) 89 90Update for results from running Clang V8.0.1. This fixes all "dead 91assignment" warnings. There are still several "Dereference of NULL 92pointer" warnings, but these have been found to be false positive 93warnings. 94 95 962) iASL Compiler/Disassembler and ACPICA tools: 97 98iASL: numerous table compiler changes to ensure that the usage of 99yacc/bison syntax is POSIX-compliant. 100 101iASL/disassembler: several simple bug fixes in the data table 102disassembler. 103 104Acpiexec: expanded the initialization file (the -fi option) to initialize 105strings, buffers, packages, and field units. 106 107 108---------------------------------------- 10916 August 2019. Summary of changes for version 20190816: 110 111This release is available at https://acpica.org/downloads 112 113 1141) ACPICA kernel-resident subsystem: 115 116Modified the OwnerId mechanism to allow for more Owner Ids. The previous 117limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 118exceptions on machines with a large number of initialization threads, 119many CPU cores and nested initialization control methods. 120 121Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 122checking if the given GPE (as represented by a GPE device handle and a 123GPE number) is currently active and dispatching it (if that's the case) 124outside of interrupt context. 125 126Table load: exit the interpreter before initializing objects within the 127new table This prevents re-acquiring the interpreter lock when loading 128tables 129 130Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 131uk Kim 132 133Macros: removed pointer math on a null pointer. Causes warnings on some 134compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 135instead of using arithmetic. 136 137Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 138across all "printf-like" internal functions. Also, cleanup all calls to 139such functions (both in 32-bit mode and 64-bit mode) now that they are 140analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 141 142 1432) iASL Compiler/Disassembler and ACPICA tools: 144 145iASL: implemented a new data table compiler flex/bison front-end. This 146change is internal and is not intended to result in changes to the 147compiled code. This new compiler front-end can be invoked using the -tp 148option for now, until the old mechanism is removed. 149 150ASLTS: Implemented a new data table compiler test suite. This test suite 151generates all table templates and compile/disassemble/re-compile/binary- 152compare each file. 153 154iASL: return -1 if AML files were not generated due to compiler errors 155 156iASL: added a warning on use of the now-legacy ASL Processor () keyword. 157 158iASL: added an error on _UID object declaration that returns a String 159within a Processor () declaration. A _UID for a processor must be an 160Integer. 161 162iASL: added a null terminator to name strings that consist only of 163multiple parent prefixes (^) 164 165iASL: added support to compile both ASL and data table files in a single 166command. 167 168Updated the tool generation project files that were recently migrated to 169MSVC 2017 to eliminate all new warnings. The new project files appear in 170the directory \acpica\generate\msvc2017. This change effectively 171deprecates the older project files in \acpica\generate\msvc9. 172 173 174---------------------------------------- 17503 July 2019. Summary of changes for version 20190703: 176 177 1781) ACPICA kernel-resident subsystem: 179 180Remove legacy module-level support code. There were still some remnants 181of the legacy module-level code executions. Since we no longer support 182this option, this is essentially dead code and has been removed from the 183ACPICA source. 184 185iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 186scope. If these named objects are declared outside the root scope, they 187will not be invoked by any host Operating System. 188 189Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 190one) can be enabled in two situations. First, the GPEs with existing _Lxx 191and _Exx methods are enabled implicitly by ACPICA during system 192initialization. Second, the GPEs without these methods (like GPEs listed 193by _PRW objects for wakeup devices) need to be enabled directly by the 194code that is going to use them (e.g. ACPI power management or device 195drivers). 196 197In the former case, if the status of a given GPE is set to start with, 198its handler method (either _Lxx or _Exx) needs to be invoked to take care 199of the events (possibly) signaled before the GPE was enabled. In the 200latter case, however, the first caller of AcpiEnableGpe() for a given GPE 201should not be expected to care about any events that might be signaled 202through it earlier. In that case, it is better to clear the status of 203the GPE before enabling it, to prevent stale events from triggering 204unwanted actions (like spurious system resume, for example). 205 206For this reason, modify AcpiEvAddGpeReference() to take an additional 207boolean argument indicating whether or not the GPE status needs to be 208cleared when its reference counter changes from zero to one and make 209AcpiEnableGpe() pass TRUE to it through that new argument. 210 211 2122) iASL Compiler/Disassembler and ACPICA tools: 213 214The tool generation process has been migrated to MSVC 2017, and all 215project files have been upgraded. The new project files appear in the 216directory \acpica\generate\msvc2017. This change effectively deprecates 217the older project files in \acpica\generate\msvc9. 218 219iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 220scope. If these named objects are declared outside the root scope, they 221will not be invoked by any host Operating System 222 223---------------------------------------- 22409 May 2019. Summary of changes for version 20190509: 225 226 2271) ACPICA kernel-resident subsystem: 228 229Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 230them") that causes problems with Thunderbolt controllers to occur if a 231dock device is connected at init time (the xhci_hcd and thunderbolt 232modules crash which prevents peripherals connected through them from 233working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 234Dispatch active GPEs at init time") to get undone, so the problem 235addressed by commit ecc1165b8b74 appears again as a result of it. 236 237 2382) iASL Compiler/Disassembler and ACPICA tools: 239 240Reverted iASL: Additional forward reference detection. This change 241reverts forward reference detection for field declarations. The feature 242unintentionally emitted AML bytecode with incorrect package lengths for 243some ASL code related to Fields and OperationRegions. This malformed AML 244can cause systems to crash 245during boot. The malformed AML bytecode is emitted in iASL version 24620190329 and 20190405. 247 248iASL: improve forward reference detection. This change improves forward 249reference detection for named objects inside of scopes. If a parse object 250has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 251a named object that is declared later in the AML bytecode. This is 252allowed if the reference is inside of a method and the declaration is 253outside of a method like so: 254 255DefinitionBlock(...) 256{ 257 Method (TEST) 258 { 259 Return (NUM0) 260 } 261 Name (NUM0,0) 262} 263 264However, if the declaration and reference are both in the same method or 265outside any methods, this is a forward reference and should be marked as 266an error because it would result in runtime errors. 267 268DefinitionBlock(...) 269{ 270 Name (BUFF, Buffer (NUM0) {}) // Forward reference 271 Name (NUM0, 0x0) 272 273 Method (TEST) 274 { 275 Local0 = NUM1 276 Name (NUM1, 0x1) // Forward reference 277 return (Local0) 278 } 279} 280 281iASL: Implemented additional buffer overflow analysis for BufferField 282declarations. Check if a buffer index argument to a create buffer field 283operation is beyond the end of the target buffer. 284 285This affects these AML operators: 286 287 AML_CREATE_FIELD_OP 288 AML_CREATE_BIT_FIELD_OP 289 AML_CREATE_BYTE_FIELD_OP 290 AML_CREATE_WORD_FIELD_OP 291 AML_CREATE_DWORD_FIELD_OP 292 AML_CREATE_QWORD_FIELD_OP 293 294 There are three conditions that must be satisfied in order to allow this 295validation at compile time: 296 297 1) The length of the target buffer must be an integer constant 298 2) The index specified in the create* must be an integer constant 299 3) For CreateField, the bit length argument must be non-zero. 300 301Example: 302 Name (BUF1, Buffer() {1,2}) 303 CreateField (BUF1, 7, 9, CF03) // 3: ERR 304 305dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 306Error 6165 - ^ Buffer index beyond end of 307target buffer 308 309 310---------------------------------------- 31105 April 2019. Summary of changes for version 20190405: 312 313 3141) ACPICA kernel-resident subsystem: 315 316Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 317unconditionally clearing ACPI IRQs during suspend/resume") was added 318earlier to stop clearing of event status bits unconditionally on suspend 319and resume paths. Though this change fixed an issue on suspend path, it 320introduced regressions on several resume paths. In the case of S0ix, 321events are enabled as part of device suspend path. If status bits for the 322events are set when they are enabled, it could result in premature wake 323from S0ix. If status is cleared for any event that is being enabled so 324that any stale events are cleared out. In case of S0ix, events are 325enabled as part of device suspend path. If status bits for the events are 326set when they are enabled, it could result in premature wake from S0ix. 327 328This change ensures that status is cleared for any event that is being 329enabled so that any stale events are cleared out. 330 331 3322) iASL Compiler/Disassembler and ACPICA tools: 333 334iASL: Implemented an enhanced multiple file compilation that combines 335named objects from all input files to a single namespace. With this 336feature, any unresolved external declarations as well as duplicate named 337object declarations can be detected during compilation rather than 338generating errors much later at runtime. The following commands are 339examples that utilize this feature: 340 iasl dsdt.asl ssdt.asl 341 iasl dsdt.asl ssdt1.asl ssdt2.asl 342 iasl dsdt.asl ssdt*.asl 343 344---------------------------------------- 34529 March 2019. Summary of changes for version 20190329: 346 347 3481) ACPICA kernel-resident subsystem: 349 350Namespace support: Remove the address nodes from global list after method 351termination. The global address list contains pointers to namespace nodes 352that represent Operation Regions. This change properly removes Operation 353Region namespace nodes that are declared dynamically during method 354execution. 355 356Linux: Use a different debug default than ACPICA. There was a divergence 357between Linux and the ACPICA codebases. In order to resolve this 358divergence, Linux now declares its own debug default in aclinux.h 359 360Renamed some internal macros to improve code understanding and 361maintenance. The macros below all operate on single 4-character ACPI 362NameSegs, not generic strings (old -> new): 363 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 364 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 365 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 366 367Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 368table. 369 370Test suite: Update makefiles, add PCC operation region support 371 372 3732) iASL Compiler/Disassembler and Tools: 374 375iASL: Implemented additional illegal forward reference detection. Now 376detect and emit an error upon detection of a forward reference from a 377Field to an Operation Region. This will fail at runtime if allowed to 378pass the compiler. 379 380AcpiExec: Add an address list check for dynamic Operation Regions. This 381feature performs a sanity test for each node the global address list. 382This is done in order to ensure that all dynamic operation regions are 383properly removed from the global address list and no dangling pointers 384are left behind. 385 386Disassembler: Improved generation of resource pathnames. This change 387improves the code that generates resource descriptor and resource tag 388pathnames. The original code used a bunch of str* C library functions 389that caused warnings on some compilers. 390 391iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 392function can overwrite buffers if the calling code is not very careful. 393In the case of generating a module/table header, use of memmove is a 394better implementation. 395 396 3973) Status of new features that have not been completed at this time: 398 399iASL: Implementing an enhanced multiple file compilation into a single 400namespace feature (Status): This feature will be released soon, and 401allows multiple ASL files to be compiled into the same single namespace. 402By doing so, any unresolved external declarations as well as duplicate 403named object declarations can be detected during compilation (rather than 404later during runtime). The following commands are examples that utilize 405this feature: 406 iasl dsdt.asl ssdt.asl 407 iasl dsdt.asl ssdt1.asl ssdt2.asl 408 iasl dsdt.asl ssdt*.asl 409 410ASL tutorial status: Feedback is being gathered internally and the 411current plan is to publish this tutorial on the ACPICA website after a 412final review by a tech writer. 413 414---------------------------------------- 41515 February 2019. Summary of changes for version 20190215: 416 417 4180) Support for ACPI specification version 6.3: 419 420Add PCC operation region support for the AML interpreter. This adds PCC 421operation region support in the AML interpreter and a default handler for 422acpiexec. The change also renames the PCC region address space keyword to 423PlatformCommChannel. 424 425Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 426These methods provide OSPM with health information and device boot 427status. 428 429PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 430defines if the trigger needs to be invoked by OSPM before or at the end 431of kernel crash dump processing/handling operation. 432 433SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 434is used for describing devices such as heterogeneous processors, 435accelerators, GPUs, and IO devices with integrated compute or DMA 436engines. 437 438MADT: Add support for statistical profiling in GICC. Statistical 439profiling extension (SPE) is an architecture-specific feature for ARM. 440 441MADT: Add online capable flag. If this bit is set, system hardware 442supports enabling this processor during OS runtime. 443 444New Error Disconnect Recover Notification value. There are a number of 445scenarios where system Firmware in collaboration with hardware may 446disconnect one or more devices from the rest of the system for purposes 447of error containment. Firmware can use this new notification value to 448alert OSPM of such a removal. 449 450PPTT: New additional fields in Processor Structure Flags. These flags 451provide more information about processor topology. 452 453NFIT/Disassembler: Change a field name from "Address Range" to "Region 454Type". 455 456HMAT updates: make several existing fields to be reserved as well as 457rename subtable 0 to "memory proximity domain attributes". 458 459GTDT: Add support for new GTDT Revision 3. This revision adds information 460for the EL2 timer. 461 462iASL: Update the HMAT example template for new fields. 463 464iASL: Add support for the new revision of the GTDT (Rev 3). 465 466 4671) ACPICA kernel-resident subsystem: 468 469AML Parser: fix the main AML parse loop to correctly skip erroneous 470extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 471byte extended opcodes. If an error occurs during an AML table load, the 472AML parser will continue loading the table by skipping the offending 473opcode. This implements a "load table at any cost" philosophy. 474 475 4762) iASL Compiler/Disassembler and Tools: 477 478iASL: Add checks for illegal object references, such as a reference 479outside of method to an object within a method. Such an object is only 480temporary. 481 482iASL: Emit error for creation of a zero-length operation region. Such a 483region is rather pointless. If encountered, a runtime error is also 484implemented in the interpeter. 485 486Debugger: Fix a possible fault with the "test objects" command. 487 488iASL: Makefile: support parent directory filenames containing embedded 489spaces. 490 491iASL: Update the TPM2 template to revision 4. 492 493iASL: Add the ability to report specific warnings or remarks as errors. 494 495Disassembler: Disassemble OEMx tables as actual AML byte code. 496Previously, these tables were treated as "unknown table". 497 498iASL: Add definition and disassembly for TPM2 revision 3. 499 500iASL: Add support for TPM2 rev 3 compilation. 501 502 503---------------------------------------- 50408 January 2019. Summary of changes for version 20190108: 505 506 5071) ACPICA kernel-resident subsystem: 508 509Updated all copyrights to 2019. This affects all source code modules. 510 511 5122) iASL Compiler/Disassembler and Tools: 513 514ASL test suite (ASLTS): Updated all copyrights to 2019. 515 516Tools: Updated all signon copyrights to 2019. 517 518AcpiExec: Added a new option to dump extra information concerning any 519memory leaks detected by the internal object/cache tracking mechanism. - 520va 521 522iASL: Updated the table template for the TPM2 table to the newest version 523of the table (Revision 4) 524 525 526---------------------------------------- 52713 December 2018. Summary of changes for version 20181213: 528 529 5301) ACPICA Kernel-resident Subsystem: 531 532Fixed some buffer length issues with the GenericSerialBus, related to two 533of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 534which are rarely seen in the field. For these, the LEN field of the ASL 535buffer is now ignored. Hans de Goede 536 537Implemented a new object evaluation trace mechanism for control methods 538and data objects. This includes nested control methods. It is 539particularly useful for examining the ACPI execution during system 540initialization since the output is relatively terse. The flag below 541enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 542 #define ACPI_LV_EVALUATION 0x00080000 543 544Examples: 545 Enter evaluation : _SB.PCI0._INI (Method) 546 Exit evaluation : _SB.PCI0._INI 547 Enter evaluation : _OSI (Method) 548 Exit evaluation : _OSI 549 Enter evaluation : _SB.PCI0.TEST (Method) 550 Nested method call : _SB.PCI0.NST1 551 Exit nested method : _SB.PCI0.NST1 552 Exit evaluation : _SB.PCI0.TEST 553 554Added two recently-defined _OSI strings. See 555https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 556osi. 557 "Windows 2018" 558 "Windows 2018.2" 559 560Update for buffer-to-string conversions via the ToHexString ASL operator. 561A "0x" is now prepended to each of the hex values in the output string. 562This provides compatibility with other ACPI implementations. The ACPI 563specification is somewhat vague on this issue. 564 Example output string after conversion: 565"0x01,0x02,0x03,0x04,0x05,0x06" 566 567Return a run-time error for TermArg expressions within individual package 568elements. Although this is technically supported by the ASL grammar, 569other ACPI implementations do not support this either. Also, this fixes a 570fault if this type of construct is ever encountered (it never has been). 571 572 5732) iASL Compiler/Disassembler and Tools: 574 575iASL: Implemented a new compile option (-ww) that will promote individual 576warnings and remarks to errors. This is intended to enhance the firmware 577build process. 578 579AcpiExec: Implemented a new command-line option (-eo) to support the new 580object evaluation trace mechanism described above. 581 582Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 583instead of a "unknown table" message. 584 585AcpiHelp: Improved support for the "special" predefined names such as 586_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 587used for "xx" and "x". 588 589---------------------------------------- 59031 October 2018. Summary of changes for version 20181031: 591 592 593An Operation Region regression was fixed by properly adding address 594ranges to a global list during initialization. This allows OS to 595accurately check for overlapping regions between native devices (such as 596PCI) and Operation regions as well as checking for region conflicts 597between two Operation Regions. 598 599Added support for the 2-byte extended opcodes in the code/feature that 600attempts to continue parsing during the table load phase. Skip parsing 601Device declarations (and other extended opcodes) when an error occurs 602during parsing. Previously, only single-byte opcodes were supported. 603 604Cleanup: Simplified the module-level code support by eliminating a 605useless global variable (AcpiGbl_GroupModuleLeveCode). 606 607 6082) iASL Compiler/Disassembler and Tools: 609 610iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 611could cause a fault in the preprocessor. This was an inadvertent side- 612effect from moving more allocations/frees to the local cache/memory 613mechanism. 614 615iASL: Enhanced error detection by validating that all NameSeg elements 616within a NamePatch actually exist. The previous behavior was spotty at 617best, and such errors could be improperly ignored at compiler time (never 618at runtime, however. There are two new error messages, as shown in the 619examples below: 620 621dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 622Error 6161 - ^ One or more objects within 623the Pathname do not exist (TTTT.BXXX) 624 625dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 626Error 6160 - One or more prefix Scopes do not exist ^ 627(BBBB.CBF1) 628 629iASL: Disassembler/table-compiler: Added support for the static data 630table TPM2 revision 3 (an older version of TPM2). The support has been 631added for the compiler and the disassembler. 632 633Fixed compilation of DOS format data table file on Unix/Linux systems. 634iASL now properly detects line continuations (\) for DOS format data 635table definition language files on when executing on Unix/Linux. 636 637---------------------------------------- 63803 October 2018. Summary of changes for version 20181003: 639 640 6412) iASL Compiler/Disassembler and Tools: 642 643Fixed a regression introduced in version 20180927 that could cause the 644compiler to fault, especially with NamePaths containing one or more 645carats (^). Such as: ^^_SB_PCI0 646 647Added a new remark for the Sleep() operator when the sleep time operand 648is larger than one second. This is a very long time for the ASL/BIOS code 649and may not be what was intended by the ASL writer. 650 651---------------------------------------- 65227 September 2018. Summary of changes for version 20180927: 653 654 6551) ACPICA kernel-resident subsystem: 656 657Updated the GPE support to clear the status of all ACPI events when 658entering any/all sleep states in order to avoid premature wakeups. In 659theory, this may cause some wakeup events to be missed, but the 660likelihood of this is small. This change restores the original behavior 661of the ACPICA code in order to fix a regression seen from the previous 662"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 663This regression could cause some systems to incorrectly wake immediately. 664 665Updated the execution of the _REG methods during initialization and 666namespace loading to bring the behavior into closer conformance to the 667ACPI specification and other ACPI implementations: 668 669From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 670 "Control methods must assume all operation regions are inaccessible 671until the _REG(RegionSpace, 1) method is executed" 672 673 "The exceptions to this rule are: 6741. OSPM must guarantee that the following operation regions are always 675accessible: 676 SystemIO operation regions. 677 SystemMemory operation regions when accessing memory returned by the 678System Address Map reporting interfaces." 679 680Since the state of both the SystemIO and SystemMemory address spaces are 681defined by the specification to never change, this ACPICA change ensures 682that now _REG is never called on them. This solves some problems seen in 683the field and provides compatibility with other ACPI implementations. An 684update to the upcoming new version of the ACPI specification will help 685clarify this behavior. 686 687Updated the implementation of support for the Generic Serial Bus. For the 688"bidirectional" protocols, the internal implementation now automatically 689creates a return data buffer of the maximum size (255). This handles the 690worst-case for data that is returned from the serial bus handler, and 691fixes some problems seen in the field. This new buffer is directly 692returned to the ASL. As such, there is no true "bidirectional" buffer, 693which matches the ACPI specification. This is the reason for the "double 694store" seen in the example ASL code in the specification, shown below: 695 696Word Process Call (AttribProcessCall): 697 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 698 Field(TOP1, BufferAcc, NoLock, Preserve) 699 { 700 FLD1, 8, // Virtual register at command value 1. 701 } 702 703 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 704 // as BUFF 705 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 706 707 Store(0x5416, DATA) // Save 0x5416 into the data buffer 708 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 709transaction 710 // This is the "double store". The write to 711 // FLD1 returns a new buffer, which is stored 712 // back into BUFF with the second Store. 713 714 7152) iASL Compiler/Disassembler and Tools: 716 717iASL: Implemented detection of extraneous/redundant uses of the Offset() 718operator within a Field Unit list. A remark is now issued for these. For 719example, the first two of the Offset() operators below are extraneous. 720Because both the compiler and the interpreter track the offsets 721automatically, these Offsets simply refer to the current offset and are 722unnecessary. Note, when optimization is enabled, the iASL compiler will 723in fact remove the redundant Offset operators and will not emit any AML 724code for them. 725 726 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 727 Field (OPR1) 728 { 729 Offset (0), // Never needed 730 FLD1, 32, 731 Offset (4), // Redundant, offset is already 4 (bytes) 732 FLD2, 8, 733 Offset (64), // OK use of Offset. 734 FLD3, 16, 735 } 736dsdt.asl 14: Offset (0), 737Remark 2158 - ^ Unnecessary/redundant use of Offset 738operator 739 740dsdt.asl 16: Offset (4), 741Remark 2158 - ^ Unnecessary/redundant use of Offset 742operator 743 744---------------------------------------- 74510 August 2018. Summary of changes for version 20180810: 746 747 7481) ACPICA kernel-resident subsystem: 749 750Initial ACPI table loading: Attempt to continue loading ACPI tables 751regardless of malformed AML. Since migrating table initialization to the 752new module-level code support, the AML interpreter rejected tables upon 753any ACPI error encountered during table load. This is a problem because 754non-serious ACPI errors during table load do not necessarily mean that 755the entire definition block (DSDT or SSDT) is invalid. This change 756improves the table loading by ignoring some types of errors that can be 757generated by incorrect AML. This can range from object type errors, scope 758errors, and index errors. 759 760Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 761during suspend/resume. The status of ACPI events is no longer cleared 762when entering the ACPI S5 system state (power off) which caused some 763systems to power up immediately after turning off power in certain 764situations. This was a functional regression. It was fixed by clearing 765the status of all ACPI events again when entering S5 (for system-wide 766suspend or hibernation the clearing of the status of all events is not 767desirable, as it might cause the kernel to miss wakeup events sometimes). 768Rafael Wysocki. 769 770 7712) iASL Compiler/Disassembler and Tools: 772 773AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 774elements listed in the initialization file were previously initialized 775after the table load and before executing module-level code blocks. 776Recent changes in the module-level code support means that the table load 777becomes a large control method execution. If fields are used within 778module-level code and we are executing with the -fi option, the 779initialization values were used to initialize the namespace object(s) 780only after the table was finished loading. This change Provides an early 781initialization of objects specified in the initialization file so that 782field unit values are populated during the table load (not after the 783load). 784 785AcpiExec: Fixed a small memory leak regression that could result in 786warnings during exit of the utility. These warnings were similar to 787these: 788 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 789 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 790 791---------------------------------------- 79229 June 2018. Summary of changes for version 20180629: 793 794 7951) iASL Compiler/Disassembler and Tools: 796 797iASL: Fixed a regression related to the use of the ASL External 798statement. Error checking for the use of the External() statement has 799been relaxed. Previously, a restriction on the use of External meant that 800the referenced named object was required to be defined in a different 801table (an SSDT). Thus it would be an error to declare an object as an 802external and then define the same named object in the same table. For 803example: 804 DefinitionBlock (...) 805 { 806 External (DEV1) 807 Device (DEV1){...} // This was an error 808 } 809However, this behavior has caused regressions in some existing ASL code, 810because there is code that depends on named objects and externals (with 811the same name) being declared in the same table. This change will allow 812the ASL code above to compile without errors or warnings. 813 814iASL: Implemented ASL language extensions for four operators to make some 815of their arguments optional instead of required: 816 1) Field (RegionName, AccessType, LockRule, UpdateRule) 817 2) BankField (RegionName, BankName, BankValue, 818 AccessType, LockRule, UpdateRule) 819 3) IndexField (IndexName, DataName, 820 AccessType, LockRule, UpdateRule) 821For the Field operators above, the AccessType, LockRule, and UpdateRule 822are now optional arguments. The default values are: 823 AccessType: AnyAcc 824 LockRule: NoLock 825 UpdateRule: Preserve 826 4) Mutex (MutexName, SyncLevel) 827For this operator, the SyncLevel argument is now optional. This argument 828is rarely used in any meaningful way by ASL code, and thus it makes sense 829to make it optional. The default value is: 830 SyncLevel: 0 831 832iASL: Attempted use of the ASL Unload() operator now results in the 833following warning: 834 "Unload is not supported by all operating systems" 835This is in fact very true, and the Unload operator may be completely 836deprecated in the near future. 837 838AcpiExec: Fixed a regression for the -fi option (Namespace initialization 839file. Recent changes in the ACPICA module-level code support altered the 840table load/initialization sequence . This means that the table load has 841become a large method execution of the table itself. If Operation Region 842Fields are used within any module-level code and the -fi option was 843specified, the initialization values were populated only after the table 844had completely finished loading (and thus the module-level code had 845already been executed). This change moves the initialization of objects 846listed in the initialization file to before the table is executed as a 847method. Field unit values are now initialized before the table execution 848is performed. 849 850---------------------------------------- 85131 May 2018. Summary of changes for version 20180531: 852 853 8541) ACPICA kernel-resident Subsystem: 855 856Implemented additional support to help ensure that a DSDT or SSDT is 857fully loaded even if errors are incurred during the load. The majority of 858the problems that are seen is the failure of individual AML operators 859that occur during execution of any module-level code (MLC) existing in 860the table. This support adds a mechanism to abort the current ASL 861statement (AML opcode), emit an error message, and to simply move on to 862the next opcode -- instead of aborting the entire table load. This is 863different than the execution of a control method where the entire method 864is aborted upon any error. The goal is to perform a very "best effort" to 865load the ACPI tables. The most common MLC errors that have been seen in 866the field are direct references to unresolved ASL/AML symbols (referenced 867directly without the use of the CondRefOf operator to validate the 868symbol). This new ACPICA behavior is now compatible with other ACPI 869implementations. 870 871Interpreter: The Unload AML operator is no longer supported for the 872reasons below. An AE_NOT_IMPLEMENTED exception is returned. 8731) A correct implementation on at least some hosts may not be possible. 8742) Other ACPI implementations do not correctly/fully support it. 8753) It requires host device driver support which is not known to exist. 876 (To properly support namespace unload out from underneath.) 8774) This AML operator has never been seen in the field. 878 879Parser: Added a debug option to dump AML parse sub-trees as they are 880being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 881ACPI_DB_PARSE_TREES. 882 883Debugger: Reduced the verbosity for errors incurred during table load and 884module-level code execution. 885 886Completed an investigation into adding a namespace node "owner list" 887instead of the current "owner ID" associated with namespace nodes. This 888list would link together all nodes that are owned by an individual 889control method. The purpose would be to enhance control method execution 890by speeding up cleanup during method exit (all namespace nodes created by 891a method are deleted upon method termination.) Currently, the entire 892namespace must be searched for matching owner IDs if (and only if) the 893method creates named objects outside of the local scope. However, by far 894the most common case is that methods create objects locally, not outside 895the method scope. There is already an ACPICA optimization in place that 896only searches the entire namespace in the rare case of a method creating 897objects elsewhere in the namespace. Therefore, it is felt that the 898overhead of adding an additional pointer to each namespace node to 899implement the owner list makes this feature unnecessary. 900 901 9022) iASL Compiler/Disassembler and Tools: 903 904iASL, Disassembler, and Template generator: Implemented support for 905Revision D of the IORT table. Adds a new subtable that is used to specify 906SMMUv3 PMCGs. rmurphy-arm. 907 908Disassembler: Restored correct table header validation for the "special" 909ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 910table header and must be special-cased. This was a regression that has 911been present for apparently a long time. 912 913AcpiExec: Reduced verbosity of the local exception handler implemented 914within acpiexec. This handler is invoked by ACPICA upon any exceptions 915generated during control method execution. A new option was added: -vh 916restores the original verbosity level if desired. 917 918AcpiExec: Changed the default base from decimal to hex for the -x option 919(set debug level). This simplifies the use of this option and matches the 920behavior of the corresponding iASL -x option. 921 922AcpiExec: Restored a force-exit on multiple control-c (sigint) 923interrupts. This allows program termination even if other issues cause 924the control-c to fail. 925 926ASL test suite (ASLTS): Added tests for the recently implemented package 927element resolution mechanism that allows forward references to named 928objects from individual package elements (this mechanism provides 929compatibility with other ACPI implementations.) 930 931 932---------------------------------------- 9338 May 2018. Summary of changes for version 20180508: 934 935 9361) ACPICA kernel-resident subsystem: 937 938Completed the new (recently deployed) package resolution mechanism for 939the Load and LoadTable ASL/AML operators. This fixes a regression that 940was introduced in version 20180209 that could result in an 941AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 942(SSDT) that contains package objects. 943 944 9452) iASL Compiler/Disassembler and Tools: 946 947AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 9481 MB. This change allows for table offsets within the acpidump file to be 949up to 8 characters. These changes are backwards compatible with existing 950acpidump files. 951 952 953---------------------------------------- 95427 April 2018. Summary of changes for version 20180427: 955 956 9571) ACPICA kernel-resident subsystem: 958 959Debugger: Added support for Package objects in the "Test Objects" 960command. This command walks the entire namespace and evaluates all named 961data objects (Integers, Strings, Buffers, and now Packages). 962 963Improved error messages for the namespace root node. Originally, the root 964was referred to by the confusing string "\___". This has been replaced by 965"Namespace Root" for clarification. 966 967Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 968Ian King <colin.king@canonical.com>. 969 970 9712) iASL Compiler/Disassembler and Tools: 972 973iASL: Implemented support to detect and flag illegal forward references. 974For compatibility with other ACPI implementations, these references are 975now illegal at the root level of the DSDT or SSDTs. Forward references 976have always been illegal within control methods. This change should not 977affect existing ASL/AML code because of the fact that these references 978have always been illegal in the other ACPI implementation. 979 980iASL: Added error messages for the case where a table OEM ID and OEM 981TABLE ID strings are longer than the ACPI-defined length. Previously, 982these strings were simply silently truncated. 983 984iASL: Enhanced the -tc option (which creates an AML hex file in C, 985suitable for import into a firmware project): 986 1) Create a unique name for the table, to simplify use of multiple 987SSDTs. 988 2) Add a protection #ifdef in the file, similar to a .h header file. 989With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 990evan.lloyd@arm.com 991 992AcpiExec: Added a new option, -df, to disable the local fault handler. 993This is useful during debugging, where it may be desired to drop into a 994debugger on a fault. 995 996---------------------------------------- 99713 March 2018. Summary of changes for version 20180313: 998 999 10001) ACPICA kernel-resident subsystem: 1001 1002Implemented various improvements to the GPE support: 1003 10041) Dispatch all active GPEs at initialization time so that no GPEs are 1005lost. 10062) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 1007before devices are enumerated. 10083) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 1009IRQs are not lost. 10104) Add parallel GPE handling to eliminate the possibility of dispatching 1011the same GPE twice. 10125) Dispatch any pending GPEs after enabling for the first time. 1013 1014AcpiGetObjectInfo - removed support for the _STA method. This was causing 1015problems on some platforms. 1016 1017Added a new _OSI string, "Windows 2017.2". 1018 1019Cleaned up and simplified the module-level code support. These changes 1020are in preparation for the eventual removal of the legacy MLC support 1021(deferred execution), replaced by the new MLC architecture which executes 1022the MLC as a table is loaded (DSDT/SSDTs). 1023 1024Changed a compile-time option to a runtime option. Changes the option to 1025ignore ACPI table load-time package resolution errors into a runtime 1026option. Used only for platforms that generate many AE_NOT_FOUND errors 1027during boot. AcpiGbl_IgnorePackageResolutionErrors. 1028 1029Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 1030ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 1031compilation errors from unused variables (seen with some compilers). 1032 1033 10342) iASL Compiler/Disassembler and Tools: 1035 1036ASLTS: parallelized execution in order to achieve an (approximately) 2X 1037performance increase. 1038 1039ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 1040error reporting. 1041 1042---------------------------------------- 104309 February 2018. Summary of changes for version 20180209: 1044 1045 10461) ACPICA kernel-resident subsystem: 1047 1048Completed the final integration of the recent changes to Package Object 1049handling and the module-level AML code support. This allows forward 1050references from individual package elements when the package object is 1051declared from within module-level code blocks. Provides compatibility 1052with other ACPI implementations. 1053 1054The new architecture for the AML module-level code has been completed and 1055is now the default for the ACPICA code. This new architecture executes 1056the module-level code in-line as the ACPI table is loaded/parsed instead 1057of the previous architecture which deferred this code until after the 1058table was fully loaded. This solves some ASL code ordering issues and 1059provides compatibility with other ACPI implementations. At this time, 1060there is an option to fallback to the earlier architecture, but this 1061support is deprecated and is planned to be completely removed later this 1062year. 1063 1064Added a compile-time option to ignore AE_NOT_FOUND exceptions during 1065resolution of named reference elements within Package objects. Although 1066this is potentially a serious problem, it can generate a lot of 1067noise/errors on platforms whose firmware carries around a bunch of unused 1068Package objects. To disable these errors, define 1069ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 1070errors are always reported for ACPICA applications such as AcpiExec. 1071 1072Fixed a regression related to the explicit type-conversion AML operators 1073(ToXXXX). The regression was introduced early in 2017 but was not seen 1074until recently because these operators are not fully supported by other 1075ACPI implementations and are thus rarely used by firmware developers. The 1076operators are defined by the ACPI specification to not implement the 1077"implicit result object conversion". The regression incorrectly 1078introduced this object conversion for the following explicit conversion 1079operators: 1080 ToInteger 1081 ToString 1082 ToBuffer 1083 ToDecimalString 1084 ToHexString 1085 ToBCD 1086 FromBCD 1087 1088 10892) iASL Compiler/Disassembler and Tools: 1090 1091iASL: Fixed a problem with the compiler constant folding feature as 1092related to the ToXXXX explicit conversion operators. These operators do 1093not support the "implicit result object conversion" by definition. Thus, 1094ASL expressions that use these operators cannot be folded to a simple 1095Store operator because Store implements the implicit conversion. This 1096change uses the CopyObject operator for the ToXXXX operator folding 1097instead. CopyObject is defined to not implement implicit result 1098conversions and is thus appropriate for folding the ToXXXX operators. 1099 1100iASL: Changed the severity of an error condition to a simple warning for 1101the case where a symbol is declared both locally and as an external 1102symbol. This accommodates existing ASL code. 1103 1104AcpiExec: The -ep option to enable the new architecture for module-level 1105code has been removed. It is replaced by the -dp option which instead has 1106the opposite effect: it disables the new architecture (the default) and 1107enables the legacy architecture. When the legacy code is removed in the 1108future, the -dp option will be removed also. 1109 1110---------------------------------------- 111105 January 2018. Summary of changes for version 20180105: 1112 1113 11141) ACPICA kernel-resident subsystem: 1115 1116Updated all copyrights to 2018. This affects all source code modules. 1117 1118Fixed a possible build error caused by an unresolved reference to the 1119AcpiUtSafeStrncpy function. 1120 1121Removed NULL pointer arithmetic in the various pointer manipulation 1122macros. All "(void *) NULL" constructs are converted to "(void *) 0". 1123This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 1124 1125Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 1126Mittal. 1127 1128 11292) iASL Compiler/Disassembler and Tools: 1130 1131ASLTS: Updated all copyrights to 2018. 1132 1133Tools: Updated all signon copyrights to 2018. 1134 1135AcpiXtract: Fixed a regression related to ACPI table signatures where the 1136signature was truncated to 3 characters (instead of 4). 1137 1138AcpiExec: Restore the original terminal mode after the use of the -v and 1139-vd options. 1140 1141ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 1142 1143---------------------------------------- 114414 December 2017. Summary of changes for version 20171214: 1145 1146 11471) ACPICA kernel-resident subsystem: 1148 1149Fixed a regression in the external (public) AcpiEvaluateObjectTyped 1150interface where the optional "pathname" argument had inadvertently become 1151a required argument returning an error if omitted (NULL pointer 1152argument). 1153 1154Fixed two possible memory leaks related to the recently developed "late 1155resolution" of reference objects within ASL Package Object definitions. 1156 1157Added two recently defined _OSI strings: "Windows 2016" and "Windows 11582017". Mario Limonciello. 1159 1160Implemented and deployed a safer version of the C library function 1161strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 1162creation of unterminated strings as a possible result of a standard 1163strncpy. 1164 1165Cleaned up and restructured the global variable file (acglobal.h). There 1166are many changes, but no functional changes. 1167 1168 11692) iASL Compiler/Disassembler and Tools: 1170 1171iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 1172optional OemData field at the end of the table was incorrectly required 1173for proper compilation. It is now correctly an optional field. 1174 1175ASLTS: The entire suite was converted from standard ASL to the ASL+ 1176language, using the ASL-to-ASL+ converter which is integrated into the 1177iASL compiler. A binary compare of all output files has verified the 1178correctness of the conversion. 1179 1180iASL: Fixed the source code build for platforms where "char" is unsigned. 1181This affected the iASL lexer only. Jung-uk Kim. 1182 1183---------------------------------------- 118410 November 2017. Summary of changes for version 20171110: 1185 1186 11871) ACPICA kernel-resident subsystem: 1188 1189This release implements full support for ACPI 6.2A: 1190 NFIT - Added a new subtable, "Platform Capabilities Structure" 1191No other changes to ACPICA were required, since ACPI 6.2A is primarily an 1192errata release of the specification. 1193 1194Other ACPI table changes: 1195 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 1196 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 1197Linton 1198 1199Utilities: Modified the string/integer conversion functions to use 1200internal 64-bit divide support instead of a native divide. On 32-bit 1201platforms, a 64-bit divide typically requires a library function which 1202may not be present in the build (kernel or otherwise). 1203 1204Implemented a targeted error message for timeouts returned from the 1205Embedded Controller device driver. This is seen frequently enough to 1206special-case an AE_TIME returned from an EC operation region access: 1207 "Timeout from EC hardware or EC device driver" 1208 1209Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 1210runtime error messages have the identical prefix. 1211 1212 12132) iASL Compiler/Disassembler and Tools: 1214 1215AcpiXtract: Fixed a problem with table header detection within the 1216acpidump file. Processing a table could be ended early if a 0x40 (@) 1217appears in the original binary table, resulting in the @ symbol appearing 1218in the decoded ASCII field at the end of the acpidump text line. The 1219symbol caused acpixtract to incorrectly think it had reached the end of 1220the current table and the beginning of a new table. 1221 1222AcpiXtract: Added an option (-f) to ignore some errors during table 1223extraction. This initial implementation ignores non-ASCII and non- 1224printable characters found in the acpidump text file. 1225 1226TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 1227for ASLTS. This feature is used to track memory allocations from 1228different memory caches within the ACPICA code. At the end of an ASLTS 1229run, these memory statistics are recorded and stored in a log file. 1230 1231Debugger (user-space version): Implemented a simple "Background" command. 1232Creates a new thread to execute a control method in the background, while 1233control returns to the debugger prompt to allow additional commands. 1234 Syntax: Background <Namepath> [Arguments] 1235 1236---------------------------------------- 123729 September 2017. Summary of changes for version 20170929: 1238 1239 12401) ACPICA kernel-resident subsystem: 1241 1242Redesigned and implemented an improved ASL While() loop timeout 1243mechanism. This mechanism is used to prevent infinite loops in the kernel 1244AML interpreter caused by either non-responsive hardware or incorrect AML 1245code. The new implementation uses AcpiOsGetTimer instead of a simple 1246maximum loop count, and is thus more accurate and constant across 1247different machines. The default timeout is currently 30 seconds, but this 1248may be adjusted later. 1249 1250Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 1251better reflect the new implementation of the loop timeout mechanism. 1252 1253Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 1254and to fix an off-by-one error. Jung-uk Kim. 1255 1256Fixed an EFI build problem by updating the makefiles to for a new file 1257that was added, utstrsuppt.c 1258 1259 12602) iASL Compiler/Disassembler and Tools: 1261 1262Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 1263includes support in the table disassembler, compiler, and template 1264generator. 1265 1266iASL: Added an exception for an illegal type of recursive method 1267invocation. If a method creates named objects, the first recursive call 1268will fail at runtime. This change adds an error detection at compile time 1269to catch the problem up front. Note: Marking such a method as 1270"serialized" will not help with this problem, because the same thread can 1271acquire the method mutex more than once. Example compiler and runtime 1272output: 1273 1274 Method (MTH1) 1275 { 1276 Name (INT1, 1) 1277 MTH1 () 1278 } 1279 1280 dsdt.asl 22: MTH1 () 1281 Error 6152 - ^ Illegal recursive call to method 1282 that creates named objects (MTH1) 1283 1284Previous runtime exception: 1285 ACPI Error: [INT1] Namespace lookup failure, 1286 AE_ALREADY_EXISTS (20170831/dswload2-465) 1287 1288iASL: Updated support for External() opcodes to improve namespace 1289management and error detection. These changes are related to issues seen 1290with multiple-segment namespace pathnames within External declarations, 1291such as below: 1292 1293 External(\_SB.PCI0.GFX0, DeviceObj) 1294 External(\_SB.PCI0.GFX0.ALSI) 1295 1296iASL: Implemented support for multi-line error/warning messages. This 1297enables more detailed and helpful error messages as below, from the 1298initial deployment for the duplicate names error: 1299 1300 DSDT.iiii 1692: Device(PEG2) { 1301 Error 6074 - ^ Name already exists in scope 1302(PEG2) 1303 1304 Original name creation/declaration below: 1305 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 1306 1307AcpiXtract: Added additional flexibility to support differing input hex 1308dump formats. Specifically, hex dumps that contain partial disassembly 1309and/or comments within the ACPI table data definition. There exist some 1310dump utilities seen in the field that create this type of hex dump (such 1311as Simics). For example: 1312 1313 DSDT @ 0xdfffd0c0 (10999 bytes) 1314 Signature DSDT 1315 Length 10999 1316 Revision 1 1317 Checksum 0xf3 (Ok) 1318 OEM_ID BXPC 1319 OEM_table_id BXDSDT 1320 OEM_revision 1 1321 Creator_id 1280593481 1322 Creator_revision 537399345 1323 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 1324 ... 1325 2af0: 5f 4c 30 46 00 a4 01 1326 1327Test suite: Miscellaneous changes/fixes: 1328 More cleanup and simplification of makefiles 1329 Continue compilation of test cases after a compile failure 1330 Do not perform binary compare unless both files actually exist 1331 1332iASL: Performed some code/module restructuring. Moved all memory 1333allocation functions to new modules. Two new files, aslallocate.c and 1334aslcache.c 1335 1336---------------------------------------- 133731 August 2017. Summary of changes for version 20170831: 1338 1339 13401) ACPICA kernel-resident subsystem: 1341 1342Implemented internal support for full 64-bit addresses that appear in all 1343Generic Address Structure (GAS) structures. Previously, only the lower 32 1344bits were used. Affects the use of GAS structures in the FADT and other 1345tables, as well as the GAS structures passed to the AcpiRead and 1346AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 1347 1348Added header support for the PDTT ACPI table (Processor Debug Trigger 1349Table). Full support in the iASL Data Table Compiler and disassembler is 1350forthcoming. 1351 1352 13532) iASL Compiler/Disassembler and Tools: 1354 1355iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 1356Properties Topology Table) where a flag bit was specified in the wrong 1357bit position ("Line Size Valid", bit 6). 1358 1359iASL: Implemented support for Octal integer constants as defined by the 1360ASL language grammar, per the ACPI specification. Any integer constant 1361that starts with a zero is an octal constant. For example, 1362 Store (037777, Local0) /* Octal constant */ 1363 Store (0x3FFF, Local0) /* Hex equivalent */ 1364 Store (16383, Local0) /* Decimal equivalent */ 1365 1366iASL: Improved overflow detection for 64-bit string conversions during 1367compilation of integer constants. "Overflow" in this case means a string 1368that represents an integer that is too large to fit into a 64-bit value. 1369Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 1370the low-order 32 bits with a warning, as previously implemented. Several 1371new exceptions are defined that indicate a 64-bit overflow, as well as 1372the base (radix) that was used during the attempted conversion. Examples: 1373 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 1374 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 1375 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 1376 1377iASL: Added a warning for the case where a ResourceTemplate is declared 1378with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 1379this case, the resulting template is created with a single END_TAG 1380descriptor, which is essentially useless. 1381 1382iASL: Expanded the -vw option (ignore specific warnings/remarks) to 1383include compilation error codes as well. 1384 1385---------------------------------------- 138628 July 2017. Summary of changes for version 20170728: 1387 1388 13891) ACPICA kernel-resident subsystem: 1390 1391Fixed a regression seen with small resource descriptors that could cause 1392an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 1393 1394AML interpreter: Implemented a new feature that allows forward references 1395from individual named references within package objects that are 1396contained within blocks of "module-level code". This provides 1397compatibility with other ACPI implementations and supports existing 1398firmware that depends on this feature. Example: 1399 1400 Name (ABCD, 1) 1401 If (ABCD) /* An If() at module-level */ 1402 { 1403 Name (PKG1, Package() 1404 { 1405 INT1 /* Forward reference to object INT1 1406*/ 1407 }) 1408 Name (INT1, 0x1234) 1409 } 1410 1411AML Interpreter: Fixed a problem with the Alias() operator where aliases 1412to some ASL objects were not handled properly. Objects affected are: 1413Mutex, Event, and OperationRegion. 1414 1415AML Debugger: Enhanced to properly handle AML Alias objects. These 1416objects have one level of indirection which was not fully supported by 1417the debugger. 1418 1419Table Manager: Added support to detect and ignore duplicate SSDTs within 1420the XSDT/RSDT. This error in the XSDT has been seen in the field. 1421 1422EFI and EDK2 support: 1423 Enabled /WX flag for MSVC builds 1424 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 1425 Added local support for 64-bit multiply and shift operations 1426 Added support to compile acpidump.efi on Windows 1427 Added OSL function stubs for interfaces not used under EFI 1428 1429Added additional support for the _DMA predefined name. _DMA returns a 1430buffer containing a resource template. This change add support within the 1431resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 1432resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 1433 1434 14352) iASL Compiler/Disassembler and Tools: 1436 1437iASL: Fixed a problem where the internal input line buffer(s) could 1438overflow if there are very long lines in the input ASL source code file. 1439Implemented buffer management that automatically increases the size of 1440the buffers as necessary. 1441 1442iASL: Added an option (-vx) to "expect" particular remarks, warnings and 1443errors. If the specified exception is not raised during compilation, the 1444compiler emits an error. This is intended to support the ASL test suite, 1445but may be useful in other contexts. 1446 1447iASL: Implemented a new predefined macro, __METHOD__, which returns a 1448string containing the name of the current control method that is being 1449compiled. 1450 1451iASL: Implemented debugger and table compiler support for the SDEI ACPI 1452table (Software Delegated Exception Interface). James Morse 1453<james.morse@arm.com> 1454 1455Unix/Linux makefiles: Added an option to disable compile optimizations. 1456The disable occurs when the NOOPT flag is set to TRUE. 1457theracermaster@gmail.com 1458 1459Acpidump: Added support for multiple DSDT and FACS tables. This can occur 1460when there are different tables for 32-bit versus 64-bit. 1461 1462Enhanced error reporting for the ASL test suite (ASLTS) by removing 1463unnecessary/verbose text, and emit the actual line number where an error 1464has occurred. These changes are intended to improve the usefulness of the 1465test suite. 1466 1467---------------------------------------- 146829 June 2017. Summary of changes for version 20170629: 1469 1470 14711) ACPICA kernel-resident subsystem: 1472 1473Tables: Implemented a deferred ACPI table verification. This is useful 1474for operating systems where the tables cannot be verified in the early 1475initialization stage due to early memory mapping limitations on some 1476architectures. Lv Zheng. 1477 1478Tables: Removed the signature validation for dynamically loaded tables. 1479Provides compatibility with other ACPI implementations. Previously, only 1480SSDT tables were allowed, as per the ACPI specification. Now, any table 1481signature can be used via the Load() operator. Lv Zheng. 1482 1483Tables: Fixed several mutex issues that could cause errors during table 1484acquisition. Lv Zheng. 1485 1486Tables: Fixed a problem where an ACPI warning could be generated if a 1487null pointer was passed to the AcpiPutTable interface. Lv Zheng. 1488 1489Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 1490AcpiPutTable interfaces. This applies to the "late stage" table loading 1491when the use of AcpiPutTable is no longer required (since the system 1492memory manager is fully running and available). Lv Zheng. 1493 1494Fixed/Reverted a regression during processing of resource descriptors 1495that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 1496exception in this case. 1497 1498Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 1499I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 1500 1501Interpreter: Fixed a possible fault if an Alias operator with an invalid 1502or duplicate target is encountered during Alias creation in 1503AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 1504 1505Added an option to use designated initializers for function pointers. 1506Kees Cook <keescook@google.com> 1507 1508 15092) iASL Compiler/Disassembler and Tools: 1510 1511iASL: Allow compilation of External declarations with target pathnames 1512that refer to existing named objects within the table. Erik Schmauss. 1513 1514iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 1515FieldUnit name also is declared via External in the same table. Erik 1516Schmauss. 1517 1518iASL: Allow existing scope names within pathnames used in External 1519statements. For example: 1520 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 1521 Device (ABCD) 1522 1523iASL: IORT ACPI table: Implemented changes required to decode the new 1524Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 1525compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 1526 1527Disassembler: Don't abort disassembly on errors from External() 1528statements. Erik Schmauss. 1529 1530Disassembler: fixed a possible fault when one of the Create*Field 1531operators references a Resource Template. ACPICA Bugzilla 1396. 1532 1533iASL: In the source code, resolved some naming inconsistences across the 1534parsing support. Fixes confusion between "Parse Op" and "Parse Node". 1535Adds a new file, aslparseop.c 1536 1537---------------------------------------- 153831 May 2017. Summary of changes for version 20170531: 1539 1540 15410) ACPI 6.2 support: 1542 1543The ACPI specification version 6.2 has been released and is available at 1544http://uefi.org/specifications 1545 1546This version of ACPICA fully supports the ACPI 6.2 specification. Changes 1547are summarized below. 1548 1549New ACPI tables (Table Compiler/Disassembler/Templates): 1550 HMAT (Heterogeneous Memory Attributes Table) 1551 WSMT (Windows SMM Security Mitigation Table) 1552 PPTT (Processor Properties Topology Table) 1553 1554New subtables for existing ACPI tables: 1555 HEST (New subtable, Arch-deferred machine check) 1556 SRAT (New subtable, Arch-specific affinity structure) 1557 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 1558 1559Simple updates for existing ACPI tables: 1560 BGRT (two new flag bits) 1561 HEST (New bit defined for several subtables, GHES_ASSIST) 1562 1563New Resource Descriptors and Resource macros (Compiler/Disassembler): 1564 PinConfig() 1565 PinFunction() 1566 PinGroup() 1567 PinGroupConfig() 1568 PinGroupFunction() 1569 New type for hardware error notification (section 18.3.2.9) 1570 1571New predefined names/methods (Compiler/Interpreter): 1572 _HMA (Heterogeneous Memory Attributes) 1573 _LSI (Label Storage Information) 1574 _LSR (Label Storage Read) 1575 _LSW (Label Storage Write) 1576 1577ASL grammar/macro changes (Compiler): 1578 For() ASL macro, implemented with the AML while operator 1579 Extensions to Concatenate operator 1580 Support for multiple definition blocks in same ASL file 1581 Clarification for Buffer operator 1582 Allow executable AML code underneath all scopes (Devices, etc.) 1583 Clarification/change for the _OSI return value 1584 ASL grammar update for reference operators 1585 Allow a zero-length string for AML filename in DefinitionBlock 1586 1587Miscellaneous: 1588 New device object notification value 1589 Remove a notify value (0x0C) for graceful shutdown 1590 New UUIDs for processor/cache properties and 1591 physical package property 1592 New _HID, ACPI0014 (Wireless Power Calibration Device) 1593 1594 15951) ACPICA kernel-resident subsystem: 1596 1597Added support to disable ACPI events on hardware-reduced platforms. 1598Eliminates error messages of the form "Could not enable fixed event". Lv 1599Zheng 1600 1601Fixed a problem using Device/Thermal objects with the ObjectType and 1602DerefOf ASL operators. This support had not been fully/properly 1603implemented. 1604 1605Fixed a problem where if a Buffer object containing a resource template 1606was longer than the actual resource template, an error was generated -- 1607even though the AML is legal. This case has been seen in the field. 1608 1609Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 1610The values for DUAL_PIC and MULTIPLE_APIC were reversed. 1611 1612Added header file changes for the TPM2 ACPI table. Update to new version 1613of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 1614 1615Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 1616These interfaces are intended to be used only in conjunction with the 1617predefined _DLM method (Device Lock Method). "This object appears in a 1618device scope when AML access to the device must be synchronized with the 1619OS environment". 1620 1621Example Code and Data Size: These are the sizes for the OS-independent 1622acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1623debug version of the code includes the debug output trace mechanism and 1624has a much larger code and data size. 1625 1626 Current Release: 1627 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 1628 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 1629 Previous Release: 1630 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1631 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1632 1633 16342) iASL Compiler/Disassembler and Tools: 1635 1636iASL: Fixed a problem where an External() declaration could not refer to 1637a Field Unit. Erik Schmauss. 1638 1639Disassembler: Improved support for the Switch/Case operators. This 1640feature will disassemble AML code back to the original Switch operators 1641when possible, instead of an If..Else sequence. David Box 1642 1643iASL and disassembler: Improved the handling of multiple extraneous 1644parentheses for both ASL input and disassembled ASL output. 1645 1646Improved the behavior of the iASL compiler and disassembler to detect 1647improper use of external declarations 1648 1649Disassembler: Now aborts immediately upon detection of an unknown AML 1650opcode. The AML parser has no real way to recover from this, and can 1651result in the creation of an ill-formed parse tree that causes errors 1652later during the disassembly. 1653 1654All tools: Fixed a problem where the Unix application OSL did not handle 1655control-c correctly. For example, a control-c could incorrectly wake the 1656debugger. 1657 1658AcpiExec: Improved the Control-C handling and added a handler for 1659segmentation faults (SIGSEGV). Supports both Windows and Unix-like 1660environments. 1661 1662Reduced the verbosity of the generic unix makefiles. Previously, each 1663compilation displayed the full set of compiler options. This has been 1664eliminated as the options are easily inspected within the makefiles. Each 1665compilation now results in a single line of output. 1666 1667---------------------------------------- 166803 March 2017. Summary of changes for version 20170303: 1669 1670 16710) ACPICA licensing: 1672 1673The licensing information at the start of each source code module has 1674been updated. In addition to the Intel license, the dual GPLv2/BSD 1675license has been added for completeness. Now, a single version of the 1676source code should be suitable for all ACPICA customers. This is the 1677major change for this release since it affects all source code modules. 1678 1679 16801) ACPICA kernel-resident subsystem: 1681 1682Fixed two issues with the common asltypes.h header that could cause 1683problems in some environments: (Kim Jung-uk) 1684 Removed typedef for YY_BUFFER_STATE ? 1685 Fixes an error with earlier versions of Flex. 1686 Removed use of FILE typedef (which is only defined in stdio.h) 1687 1688 16892) iASL Compiler/Disassembler and Tools: 1690 1691Disassembler: fixed a regression introduced in 20170224. A fix for a 1692memory leak related to resource descriptor tags (names) could fault when 1693the disassembler was generated with 64-bit compilers. 1694 1695The ASLTS test suite has been updated to implement a new testing 1696architecture. During generation of the suite from ASL source, both the 1697ASL and ASL+ compilers are now validated, as well as the disassembler 1698itself (Erik Schmauss). The architecture executes as follows: 1699 1700 For every ASL source module: 1701 Compile (legacy ASL compilation) 1702 Disassemble the resulting AML to ASL+ source code 1703 Compile the new ASL+ module 1704 Perform a binary compare on the legacy AML and the new ASL+ AML 1705 The ASLTS suite then executes normally using the AML binaries. 1706 1707---------------------------------------- 170824 February 2017. Summary of changes for version 20170224: 1709 1710 17111) ACPICA kernel-resident subsystem: 1712 1713Interpreter: Fixed two issues with the control method return value auto- 1714repair feature, where an attempt to double-delete an internal object 1715could result in an ACPICA warning (for _CID repair and others). No fault 1716occurs, however, because the attempted deletion (actually a release to an 1717internal cache) is detected and ignored via object poisoning. 1718 1719Debugger: Fixed an AML interpreter mutex issue during the single stepping 1720of control methods. If certain debugger commands are executed during 1721stepping, a mutex acquire/release error could occur. Lv Zheng. 1722 1723Fixed some issues generating ACPICA with the Intel C compiler by 1724restoring the original behavior and compiler-specific include file in 1725acenv.h. Lv Zheng. 1726 1727Example Code and Data Size: These are the sizes for the OS-independent 1728acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1729debug version of the code includes the debug output trace mechanism and 1730has a much larger code and data size. 1731 1732 Current Release: 1733 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1734 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1735 Previous Release: 1736 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1737 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1738 1739 17402) iASL Compiler/Disassembler and Tools: 1741 1742iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 1743tool has been designed, implemented, and included in this release. The 1744key feature of this utility is that the original comments within the 1745input ASL file are preserved during the conversion process, and included 1746within the converted ASL+ file -- thus creating a transparent conversion 1747of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 1748 1749 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 1750converted code 1751 1752iASL/Disassembler: Improved the detection and correct disassembly of 1753Switch/Case operators. This feature detects sequences of if/elseif/else 1754operators that originated from ASL Switch/Case/Default operators and 1755emits the original operators. David Box. 1756 1757iASL: Improved the IORT ACPI table support in the following areas. Lv 1758Zheng: 1759 Clear MappingOffset if the MappingCount is zero. 1760 Fix the disassembly of the SMMU GSU interrupt offset. 1761 Update the template file for the IORT table. 1762 1763Disassembler: Enhanced the detection and disassembly of resource 1764template/descriptor within a Buffer object. An EndTag descriptor is now 1765required to have a zero second byte, since all known ASL compilers emit 1766this. This helps eliminate incorrect decisions when a buffer is 1767disassembled (false positives on resource templates). 1768 1769---------------------------------------- 177019 January 2017. Summary of changes for version 20170119: 1771 1772 17731) General ACPICA software: 1774 1775Entire source code base: Added the 2017 copyright to all source code 1776legal/licensing module headers and utility/tool signons. This includes 1777the standard Linux dual-license header. This affects virtually every file 1778in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 1779the ACPICA test suite. 1780 1781 17822) iASL Compiler/Disassembler and Tools: 1783 1784iASL: Removed/fixed an inadvertent remark when a method argument 1785containing a reference is used as a target operand within the method (and 1786never used as a simple argument), as in the example below. Jeffrey Hugo. 1787 1788 dsdt.asl 1507: Store(0x1, Arg0) 1789 Remark 2146 - ^ Method Argument is never used (Arg0) 1790 1791All tools: Removed the bit width of the compiler that generated the tool 1792from the common signon for all user space tools. This proved to be 1793confusing and unnecessary. This includes similar removal of HARDWARE_NAME 1794from the generic makefiles (Thomas Petazzoni). Example below. 1795 1796 Old: 1797 ASL+ Optimizing Compiler version 20170119-32 1798 ASL+ Optimizing Compiler version 20170119-64 1799 1800 New: 1801 ASL+ Optimizing Compiler version 20170119 1802 1803---------------------------------------- 180422 December 2016. Summary of changes for version 20161222: 1805 1806 18071) ACPICA kernel-resident subsystem: 1808 1809AML Debugger: Implemented a new mechanism to simplify and enhance 1810debugger integration into all environments, including kernel debuggers 1811and user-space utilities, as well as remote debug services. This 1812mechanism essentially consists of new OSL interfaces to support debugger 1813initialization/termination, as well as wait/notify interfaces to perform 1814the debugger handshake with the host. Lv Zheng. 1815 1816 New OSL interfaces: 1817 AcpiOsInitializeDebugger (void) 1818 AcpiOsTerminateDebugger (void) 1819 AcpiOsWaitCommandReady (void) 1820 AcpiOsNotifyCommandComplete (void) 1821 1822 New OS services layer: 1823 osgendbg.c -- Example implementation, and used for AcpiExec 1824 1825Update for Generic Address Space (GAS) support: Although the AccessWidth 1826and/or BitOffset fields of the GAS are not often used, this change now 1827fully supports these fields. This affects the internal support for FADT 1828registers, registers in other ACPI data tables, and the AcpiRead and 1829AcpiWrite public interfaces. Lv Zheng. 1830 1831Sleep support: In order to simplify integration of ACPI sleep for the 1832various host operating systems, a new OSL interface has been introduced. 1833AcpiOsEnterSleep allows the host to perform any required operations 1834before the final write to the sleep control register(s) is performed by 1835ACPICA. Lv Zheng. 1836 1837 New OSL interface: 1838 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 1839 1840 Called from these internal interfaces: 1841 AcpiHwLegacySleep 1842 AcpiHwExtendedSleep 1843 1844EFI support: Added a very small EFI/ACPICA example application. Provides 1845a simple demo for EFI integration, as well as assisting with resolution 1846of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 1847 1848 source/tools/efihello/efihello.c 1849 1850Local C library: Implemented several new functions to enhance ACPICA 1851portability, for environments where these clib functions are not 1852available (such as EFI). Lv Zheng: 1853 putchar 1854 getchar 1855 strpbrk 1856 strtok 1857 memmove 1858 1859Fixed a regression where occasionally a valid resource descriptor was 1860incorrectly detected as invalid at runtime, and a 1861AE_AML_NO_RESOURCE_END_TAG was returned. 1862 1863Fixed a problem with the recently implemented support that enables 1864control method invocations as Target operands to many ASL operators. 1865Warnings of this form: "Needed type [Reference], found [Processor]" were 1866seen at runtime for some method invocations. 1867 1868Example Code and Data Size: These are the sizes for the OS-independent 1869acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1870debug version of the code includes the debug output trace mechanism and 1871has a much larger code and data size. 1872 1873 Current Release: 1874 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 1875 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 1876 Previous Release: 1877 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1878 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1879 1880 18812) iASL Compiler/Disassembler and Tools: 1882 1883Disassembler: Enhanced output by adding the capability to detect and 1884disassemble ASL Switch/Case statements back to the original ASL source 1885code instead of if/else blocks. David Box. 1886 1887AcpiHelp: Split a large file into separate files based upon 1888functionality/purpose. New files are: 1889 ahaml.c 1890 ahasl.c 1891 1892---------------------------------------- 189317 November 2016. Summary of changes for version 20161117: 1894 1895 18961) ACPICA kernel-resident subsystem: 1897 1898Table Manager: Fixed a regression introduced in 20160729, "FADT support 1899cleanup". This was an attempt to remove all references in the source to 1900the FADT version 2, which never was a legal version number. It was 1901skipped because it was an early version of 64-bit support that was 1902eventually abandoned for the current 64-bit support. 1903 1904Interpreter: Fixed a problem where runtime implicit conversion was 1905incorrectly disabled for the ASL operators below. This brings the 1906behavior into compliance with the ACPI specification: 1907 FromBCD 1908 ToBCD 1909 ToDecimalString 1910 ToHexString 1911 ToInteger 1912 ToBuffer 1913 1914Table Manager: Added a new public interface, AcpiPutTable, used to 1915release and free an ACPI table returned by AcpiGetTable and related 1916interfaces. Lv Zheng. 1917 1918Example Code and Data Size: These are the sizes for the OS-independent 1919acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1920debug version of the code includes the debug output trace mechanism and 1921has a much larger code and data size. 1922 1923 Current Release: 1924 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1925 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1926 Previous Release: 1927 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1928 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1929 1930 19312) iASL Compiler/Disassembler and Tools: 1932 1933Disassembler: Fixed a regression for disassembly of Resource Template. 1934Detection of templates in the AML stream missed some types of templates. 1935 1936iASL: Fixed a problem where an Access Size error was returned for the PCC 1937address space when the AccessSize of the GAS register is greater than a 1938DWORD. Hoan Tran. 1939 1940iASL: Implemented several grammar changes for the operators below. These 1941changes are slated for the next version of the ACPI specification: 1942 RefOf - Disallow method invocation as an operand 1943 CondRefOf - Disallow method invocation as an operand 1944 DerefOf - Disallow operands that use the result from operators 1945that 1946 do not return a reference (Changed TermArg to 1947SuperName). 1948 1949iASL: Control method invocations are now allowed for Target operands, as 1950per the ACPI specification. Removed error for using a control method 1951invocation as a Target operand. 1952 1953Disassembler: Improved detection of Resource Templates, Unicode, and 1954Strings within Buffer objects. These subtypes do not contain a specific 1955opcode to indicate the originating ASL code, and they must be detected by 1956other means within the disassembler. 1957 1958iASL: Implemented an optimization improvement for 32-bit ACPI tables 1959(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 1960only after 64-bit to 32-bit truncation. A truncation warning message is 1961still emitted, however. 1962 1963AcpiXtract: Implemented handling for both types of line terminators (LF 1964or CR/LF) so that it can accept AcpiDump output files from any system. 1965Peter Wu. 1966 1967AcpiBin: Added two new options for comparing AML files: 1968 -a: compare and display ALL mismatches 1969 -o: start compare at this offset into the second file 1970 1971---------------------------------------- 197230 September 2016. Summary of changes for version 20160930: 1973 1974 19751) ACPICA kernel-resident subsystem: 1976 1977Fixed a regression in the internal AcpiTbFindTable function where a non 1978AE_OK exception could inadvertently be returned even if the function did 1979not fail. This problem affects the following operators: 1980 DataTableRegion 1981 LoadTable 1982 1983Fixed a regression in the LoadTable operator where a load to any 1984namespace location other than the root no longer worked properly. 1985 1986Increased the maximum loop count value that will result in the 1987AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 1988prevent infinite loops within the AML interpreter and thus the host OS 1989kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 19901,048,575). 1991 1992Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 1993acpixf.h file. This allows hosts to easily configure the maximum loop 1994count at runtime. 1995 1996Removed an illegal character in the strtoul64.c file. This character 1997caused errors with some C compilers. 1998 1999Example Code and Data Size: These are the sizes for the OS-independent 2000acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2001debug version of the code includes the debug output trace mechanism and 2002has a much larger code and data size. 2003 2004 Current Release: 2005 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2006 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2007 Previous Release: 2008 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 2009 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2010 2011 20122) iASL Compiler/Disassembler and Tools: 2013 2014Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 2015the simpler ASL ElseIf keyword. During the conversion, a trailing If 2016block could be lost and missing from the disassembled output. 2017 2018iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 2019the missing rule caused a parse error when using the Index operator as an 2020operand to ObjectType. This construct now compiles properly. Example: 2021 ObjectType(PKG1[4]). 2022 2023iASL: Correctly handle unresolved symbols in the hardware map file (-lm 2024option). Previously, unresolved symbols could cause a protection fault. 2025Such symbols are now marked as unresolved in the map file. 2026 2027iASL: Implemented support to allow control method invocations as an 2028operand to the ASL DeRefOf operator. Example: 2029 DeRefOf(MTH1(Local0)) 2030 2031Disassembler: Improved support for the ToPLD ASL macro. Detection of a 2032possible _PLD buffer now includes examination of both the normal buffer 2033length (16 or 20) as well as the surrounding AML package length. 2034 2035Disassembler: Fixed a problem with the decoding of complex expressions 2036within the Divide operator for ASL+. For the case where both the quotient 2037and remainder targets are specified, the entire statement cannot be 2038disassembled. Previously, the output incorrectly contained a mix of ASL- 2039and ASL+ operators. This mixed statement causes a syntax error when 2040compiled. Example: 2041 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 2042disassembled to: 2043 Divide (INT1 + 6, 128, RSLT, QUOT) 2044 2045iASL/Tools: Added support to process AML and non-AML ACPI tables 2046consistently. For the disassembler and AcpiExec, allow all types of ACPI 2047tables (AML and data tables). For the iASL -e option, allow only AML 2048tables (DSDT/SSDT). 2049 2050---------------------------------------- 205131 August 2016. Summary of changes for version 20160831: 2052 2053 20541) ACPICA kernel-resident subsystem: 2055 2056Improve support for the so-called "module-level code", which is defined 2057to be math, logical and control AML opcodes that appear outside of any 2058control method. This change improves the support by adding more opcodes 2059that can be executed in the manner. Some other issues have been solved, 2060and the ASL grammar changes to support such code under all scope 2061operators (Device, etc.) are complete. Lv Zheng. 2062 2063UEFI support: these OSL functions have been implemented. This is an 2064additional step toward supporting the AcpiExec utility natively (with 2065full hardware access) under UEFI. Marcelo Ferreira. 2066 AcpiOsReadPciConfiguration 2067 AcpiOsWritePciConfiguration 2068 2069Fixed a possible mutex error during control method auto-serialization. Lv 2070Zheng. 2071 2072Updated support for the Generic Address Structure by fully implementing 2073all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 2074Zheng. 2075 2076Updated the return value for the internal _OSI method. Instead of 20770xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 2078for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 2079implementations, and will be reflected and clarified in the next version 2080of the ACPI specification. 2081 2082Implemented two new table events that can be passed to an ACPICA table 2083handler. These events are used to indicate a table installation or 2084uninstallation. These events are used in addition to existed table load 2085and unload events. Lv Zheng. 2086 2087Implemented a cleanup for all internal string-to-integer conversions. 2088Consolidate multiple versions of this functionality and limit possible 2089bases to either 10 or 16 to simplify the code. Adds a new file, 2090utstrtoul64. 2091 2092Cleanup the inclusion order of the various compiler-specific headers. 2093This simplifies build configuration management. The compiler-specific 2094headers are now split out from the host-specific headers. Lv Zheng. 2095 2096Example Code and Data Size: These are the sizes for the OS-independent 2097acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2098debug version of the code includes the debug output trace mechanism and 2099has a much larger code and data size. 2100 2101 Current Release: 2102 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 2103 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2104 2105 21062) iASL Compiler/Disassembler and Tools: 2107 2108iASL/AcpiExec: Added a command line option to display the build date/time 2109of the tool (-vd). This can be useful to verify that the correct version 2110of the tools are being used. 2111 2112AML Debugger: Implemented a new subcommand ("execute predef") to execute 2113all predefined control methods and names within the current namespace. 2114This can be useful for debugging problems with ACPI tables and the ACPI 2115namespace. 2116 2117---------------------------------------- 211829 July 2016. Summary of changes for version 20160729: 2119 2120 21211) ACPICA kernel-resident subsystem: 2122 2123Implemented basic UEFI support for the various ACPICA tools. This 2124includes: 21251) An OSL to implement the various AcpiOs* interfaces on UEFI. 21262) Support to obtain the ACPI tables on UEFI. 21273) Local implementation of required C library functions not available on 2128UEFI. 21294) A front-end (main) function for the tools for UEFI-related 2130initialization. 2131 2132The initial deployment of this support is the AcpiDump utility executing 2133as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 2134Current environments supported are Linux/Unix. MSVC generation is not 2135supported at this time. See the generate/efi/README file for build 2136instructions. Lv Zheng. 2137 2138Future plans include porting the AcpiExec utility to execute natively on 2139the platform with I/O and memory access. This will allow viewing/dump of 2140the platform namespace and native execution of ACPI control methods that 2141access the actual hardware. To fully implement this support, the OSL 2142functions below must be implemented with UEFI interfaces. Any community 2143help in the implementation of these functions would be appreciated: 2144 AcpiOsReadPort 2145 AcpiOsWritePort 2146 AcpiOsReadMemory 2147 AcpiOsWriteMemory 2148 AcpiOsReadPciConfiguration 2149 AcpiOsWritePciConfiguration 2150 2151Restructured and standardized the C library configuration for ACPICA, 2152resulting in the various configuration options below. This includes a 2153global restructuring of the compiler-dependent and platform-dependent 2154include files. These changes may affect the existing platform-dependent 2155configuration files on some hosts. Lv Zheng. 2156 2157The current C library configuration options appear below. For any issues, 2158it may be helpful to examine the existing compiler-dependent and 2159platform-dependent files as examples. Lv Zheng. 2160 21611) Linux kernel: 2162 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2163library. 2164 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 21652) Unix/Windows/BSD applications: 2166 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 2167library. 2168 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 21693) UEFI applications: 2170 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2171library. 2172 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 21734) UEFI applications (EDK2/StdLib): 2174 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 2175 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 2176 2177 2178AML interpreter: "module-level code" support. Allows for execution of so- 2179called "executable" AML code (math/logical operations, etc.) outside of 2180control methods not just at the module level (top level) but also within 2181any scope declared outside of a control method - Scope{}, Device{}, 2182Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 2183 2184Simplified the configuration of the "maximum AML loops" global option by 2185adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 2186modified at runtime. 2187 2188 2189Example Code and Data Size: These are the sizes for the OS-independent 2190acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2191debug version of the code includes the debug output trace mechanism and 2192has a much larger code and data size. 2193 2194 Current Release: 2195 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 2196 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2197 2198 21992) iASL Compiler/Disassembler and Tools: 2200 2201iASL: Add full support for the RASF ACPI table (RAS Features Table). 2202Includes disassembler, data table compiler, and header support. 2203 2204iASL Expand "module-level code" support. Allows for 2205compilation/disassembly of so-called "executable" AML code (math/logical 2206operations, etc.) outside of control methods not just at the module level 2207(top level) but also within any scope declared outside of a control 2208method - Scope{}, Device{}, Processor{}, PowerResource{}, and 2209ThermalZone{}. 2210 2211AcpiDump: Added support for dumping all SSDTs on newer versions of 2212Windows. These tables are now easily available -- SSDTs are not available 2213through the registry on older versions. 2214 2215---------------------------------------- 221627 May 2016. Summary of changes for version 20160527: 2217 2218 22191) ACPICA kernel-resident subsystem: 2220 2221Temporarily reverted the new arbitrary bit length/alignment support in 2222AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 2223a number of regressions with the new code that need to be fully resolved 2224and tested before this support can be finally integrated into ACPICA. 2225Apologies for any inconveniences these issues may have caused. 2226 2227The ACPI message macros are not configurable (ACPI_MSG_ERROR, 2228ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 2229and ACPI_MSG_BIOS_WARNING). Lv Zheng. 2230 2231Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 2232option. Adds a new return macro, return_STR. Junk-uk Kim. 2233 2234Example Code and Data Size: These are the sizes for the OS-independent 2235acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2236debug version of the code includes the debug output trace mechanism and 2237has a much larger code and data size. 2238 2239 Current Release: 2240 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 2241 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2242 Previous Release: 2243 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2244 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 2245 2246---------------------------------------- 224722 April 2016. Summary of changes for version 20160422: 2248 22491) ACPICA kernel-resident subsystem: 2250 2251Fixed a regression in the GAS (generic address structure) arbitrary bit 2252support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 2253and incorrect return values. Lv Zheng. ACPICA BZ 1270. 2254 2255ACPI 6.0: Added support for new/renamed resource macros. One new argument 2256was added to each of these macros, and the original name has been 2257deprecated. The AML disassembler will always disassemble to the new 2258names. Support for the new macros was added to iASL, disassembler, 2259resource manager, and the acpihelp utility. ACPICA BZ 1274. 2260 2261 I2cSerialBus -> I2cSerialBusV2 2262 SpiSerialBus -> SpiSerialBusV2 2263 UartSerialBus -> UartSerialBusV2 2264 2265ACPI 6.0: Added support for a new integer field that was appended to the 2266package object returned by the _BIX method. This adds iASL compile-time 2267and AML runtime error checking. ACPICA BZ 1273. 2268 2269ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 2270Subspace Type2" (Headers, Disassembler, and data table compiler). 2271 2272Example Code and Data Size: These are the sizes for the OS-independent 2273acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2274debug version of the code includes the debug output trace mechanism and 2275has a much larger code and data size. 2276 2277 Current Release: 2278 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2279 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2280 Previous Release: 2281 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2282 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2283 2284 22852) iASL Compiler/Disassembler and Tools: 2286 2287iASL: Implemented an ASL grammar extension to allow/enable executable 2288"module-level code" to be created and executed under the various 2289operators that create new scopes. This type of AML code is already 2290supported in all known AML interpreters, and the grammar change will 2291appear in the next version of the ACPI specification. Simplifies the 2292conditional runtime creation of named objects under these object types: 2293 2294 Device 2295 PowerResource 2296 Processor 2297 Scope 2298 ThermalZone 2299 2300iASL: Implemented a new ASL extension, a "For" loop macro to add greater 2301ease-of-use to the ASL language. The syntax is similar to the 2302corresponding C operator, and is implemented with the existing AML While 2303opcode -- thus requiring no changes to existing AML interpreters. 2304 2305 For (Initialize, Predicate, Update) {TermList} 2306 2307Grammar: 2308 ForTerm := 2309 For ( 2310 Initializer // Nothing | TermArg => ComputationalData 2311 Predicate // Nothing | TermArg => ComputationalData 2312 Update // Nothing | TermArg => ComputationalData 2313 ) {TermList} 2314 2315 2316iASL: The _HID/_ADR detection and validation has been enhanced to search 2317under conditionals in order to allow these objects to be conditionally 2318created at runtime. 2319 2320iASL: Fixed several issues with the constant folding feature. The 2321improvement allows better detection and resolution of statements that can 2322be folded at compile time. ACPICA BZ 1266. 2323 2324iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 2325conversion to the ASL ElseIf operator where incorrect ASL code could be 2326generated. 2327 2328iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 2329sometimes an extra (and extraneous) set of parentheses were emitted for 2330some combinations of operators. Although this did not cause any problems 2331with recompilation of the disassembled code, it made the code more 2332difficult to read. David Box. ACPICA BZ 1231. 2333 2334iASL: Changed to ignore the unreferenced detection for predefined names 2335of resource descriptor elements, when the resource descriptor is 2336created/defined within a control method. 2337 2338iASL: Disassembler: Fix a possible fault with externally declared Buffer 2339objects. 2340 2341---------------------------------------- 234218 March 2016. Summary of changes for version 20160318: 2343 23441) ACPICA kernel-resident subsystem: 2345 2346Added support for arbitrary bit lengths and bit offsets for registers 2347defined by the Generic Address Structure. Previously, only aligned bit 2348lengths of 8/16/32/64 were supported. This was sufficient for many years, 2349but recently some machines have been seen that require arbitrary bit- 2350level support. ACPICA BZ 1240. Lv Zheng. 2351 2352Fixed an issue where the \_SB._INI method sometimes must be evaluated 2353before any _REG methods are evaluated. Lv Zheng. 2354 2355Implemented several changes related to ACPI table support 2356(Headers/Disassembler/TableCompiler): 2357NFIT: For ACPI 6.1, updated to add some additional new fields and 2358constants. 2359FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 23606). 2361DMAR: Added new constants per the 10/2014 DMAR spec. 2362IORT: Added new subtable per the 10/2015 IORT spec. 2363HEST: For ACPI 6.1, added new constants and new subtable. 2364DBG2: Added new constants per the 12/2015 DBG2 spec. 2365FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 2366ACPICA BZ 1249. 2367ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 2368 2369Updated header support for the DMAR table to match the current version of 2370the related spec. 2371 2372Added extensions to the ASL Concatenate operator to allow any ACPI object 2373to be passed as an operand. Any object other than Integer/String/Buffer 2374simply returns a string containing the object type. This extends the 2375usefulness of the Printf macros. Previously, Concatenate would abort the 2376control method if a non-data object was encountered. 2377 2378ACPICA source code: Deployed the C "const" keyword across the source code 2379where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 2380 2381Example Code and Data Size: These are the sizes for the OS-independent 2382acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2383debug version of the code includes the debug output trace mechanism and 2384has a much larger code and data size. 2385 2386 Current Release: 2387 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2388 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2389 Previous Release: 2390 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2391 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2392 2393 23942) iASL Compiler/Disassembler and Tools: 2395 2396iASL/Disassembler: Improved the heuristic used to determine the number of 2397arguments for an externally defined control method (a method in another 2398table). Although this is an improvement, there is no deterministic way to 2399"guess" the number of method arguments. Only the ACPI 6.0 External opcode 2400will completely solve this problem as it is deployed (automatically) in 2401newer BIOS code. 2402 2403iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 2404statements that could cause errors when the disassembled file is 2405compiled. ACPICA BZ 1243. David Box. 2406 2407iASL: Fixed a regression caused by the merger of the two versions of the 2408local strtoul64. Because of a dependency on a global variable, strtoul64 2409could return an error for integers greater than a 32-bit value. ACPICA BZ 24101260. 2411 2412iASL: Fixed a regression where a fault could occur for an ASL Return 2413statement if it invokes a control method that is not resolved. ACPICA BZ 24141264. 2415 2416AcpiXtract: Improved input file validation: detection of binary files and 2417non-acpidump text files. 2418 2419---------------------------------------- 242012 February 2016. Summary of changes for version 20160212: 2421 24221) ACPICA kernel-resident subsystem: 2423 2424Implemented full support for the ACPI 6.1 specification (released in 2425January). This version of the specification is available at: 2426http://www.uefi.org/specifications 2427 2428Only a relatively small number of changes were required in ACPICA to 2429support ACPI 6.1, in these areas: 2430- New predefined names 2431- New _HID values 2432- A new subtable for HEST 2433- A few other header changes for new values 2434 2435Ensure \_SB_._INI is executed before any _REG methods are executed. There 2436appears to be existing BIOS code that relies on this behavior. Lv Zheng. 2437 2438Reverted a change made in version 20151218 which enabled method 2439invocations to be targets of various ASL operators (SuperName and Target 2440grammar elements). While the new behavior is supported by the ACPI 2441specification, other AML interpreters do not support this behavior and 2442never will. The ACPI specification will be updated for ACPI 6.2 to remove 2443this support. Therefore, the change was reverted to the original ACPICA 2444behavior. 2445 2446ACPICA now supports the GCC 6 compiler. 2447 2448Current Release: (Note: build changes increased sizes) 2449 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2450 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2451Previous Release: 2452 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2453 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 2454 2455 24562) iASL Compiler/Disassembler and Tools: 2457 2458Completed full support for the ACPI 6.0 External() AML opcode. The 2459compiler emits an external AML opcode for each ASL External statement. 2460This opcode is used by the disassembler to assist with the disassembly of 2461external control methods by specifying the required number of arguments 2462for the method. AML interpreters do not use this opcode. To ensure that 2463interpreters do not even see the opcode, a block of one or more external 2464opcodes is surrounded by an "If(0)" construct. As this feature becomes 2465commonly deployed in BIOS code, the ability of disassemblers to correctly 2466disassemble AML code will be greatly improved. David Box. 2467 2468iASL: Implemented support for an optional cross-reference output file. 2469The -lx option will create a the cross-reference file with the suffix 2470"xrf". Three different types of cross-reference are created in this file: 2471- List of object references made from within each control method 2472- Invocation (caller) list for each user-defined control method 2473- List of references to each non-method object in the namespace 2474 2475iASL: Method invocations as ASL Target operands are now disallowed and 2476flagged as errors in preparation for ACPI 6.2 (see the description of the 2477problem above). 2478 2479---------------------------------------- 24808 January 2016. Summary of changes for version 20160108: 2481 24821) ACPICA kernel-resident subsystem: 2483 2484Updated all ACPICA copyrights and signons to 2016: Added the 2016 2485copyright to all source code module headers and utility/tool signons. 2486This includes the standard Linux dual-license header. This affects 2487virtually every file in the ACPICA core subsystem, iASL compiler, all 2488ACPICA utilities, and the ACPICA test suite. 2489 2490Fixed a regression introduced in version 20151218 concerning the 2491execution of so-called module-level ASL/AML code. Namespace objects 2492created under a module-level If() construct were not properly/fully 2493entered into the namespace and could cause an interpreter fault when 2494accessed. 2495 2496Example Code and Data Size: These are the sizes for the OS-independent 2497acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2498debug version of the code includes the debug output trace mechanism and 2499has a much larger code and data size. 2500 2501Current Release: 2502 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2503 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 2504 Previous Release: 2505 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2506 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2507 2508 25092) iASL Compiler/Disassembler and Tools: 2510 2511Fixed a problem with the compilation of the GpioIo and GpioInt resource 2512descriptors. The _PIN field name was incorrectly defined to be an array 2513of 32-bit values, but the _PIN values are in fact 16 bits each. This 2514would cause incorrect bit width warnings when using Word (16-bit) fields 2515to access the descriptors. 2516 2517 2518---------------------------------------- 251918 December 2015. Summary of changes for version 20151218: 2520 25211) ACPICA kernel-resident subsystem: 2522 2523Implemented per-AML-table execution of "module-level code" as individual 2524ACPI tables are loaded into the namespace during ACPICA initialization. 2525In other words, any module-level code within an AML table is executed 2526immediately after the table is loaded, instead of batched and executed 2527after all of the tables have been loaded. This provides compatibility 2528with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 2529David Box. 2530 2531To fully support the feature above, the default operation region handlers 2532for the SystemMemory, SystemIO, and PCI_Config address spaces are now 2533installed before any ACPI tables are loaded. This enables module-level 2534code to access these address spaces during the table load and module- 2535level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 2536Box. 2537 2538Implemented several changes to the internal _REG support in conjunction 2539with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 2540utilities for the changes above. Although these tools were changed, host 2541operating systems that simply use the default handlers for SystemMemory, 2542SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 2543 2544For example, in the code below, DEV1 is conditionally added to the 2545namespace by the DSDT via module-level code that accesses an operation 2546region. The SSDT references DEV1 via the Scope operator. DEV1 must be 2547created immediately after the DSDT is loaded in order for the SSDT to 2548successfully reference DEV1. Previously, this code would cause an 2549AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 2550fully supported by ACPICA. 2551 2552 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 2553 { 2554 OperationRegion (OPR1, SystemMemory, 0x400, 32) 2555 Field (OPR1, AnyAcc, NoLock, Preserve) 2556 { 2557 FLD1, 1 2558 } 2559 If (FLD1) 2560 { 2561 Device (\DEV1) 2562 { 2563 } 2564 } 2565 } 2566 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 2567 { 2568 External (\DEV1, DeviceObj) 2569 Scope (\DEV1) 2570 { 2571 } 2572 } 2573 2574Fixed an AML interpreter problem where control method invocations were 2575not handled correctly when the invocation was itself a SuperName argument 2576to another ASL operator. In these cases, the method was not invoked. 2577ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 2578argument: 2579 Store 2580 Acquire, Wait 2581 CondRefOf, RefOf 2582 Decrement, Increment 2583 Load, Unload 2584 Notify 2585 Signal, Release, Reset 2586 SizeOf 2587 2588Implemented automatic String-to-ObjectReference conversion support for 2589packages returned by predefined names (such as _DEP). A common BIOS error 2590is to add double quotes around an ObjectReference namepath, which turns 2591the reference into an unexpected string object. This support detects the 2592problem and corrects it before the package is returned to the caller that 2593invoked the method. Lv Zheng. 2594 2595Implemented extensions to the Concatenate operator. Concatenate now 2596accepts any type of object, it is not restricted to simply 2597Integer/String/Buffer. For objects other than these 3 basic data types, 2598the argument is treated as a string containing the name of the object 2599type. This expands the utility of Concatenate and the Printf/Fprintf 2600macros. ACPICA BZ 1222. 2601 2602Cleaned up the output of the ASL Debug object. The timer() value is now 2603optional and no longer emitted by default. Also, the basic data types of 2604Integer/String/Buffer are simply emitted as their values, without a data 2605type string -- since the data type is obvious from the output. ACPICA BZ 26061221. 2607 2608Example Code and Data Size: These are the sizes for the OS-independent 2609acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2610debug version of the code includes the debug output trace mechanism and 2611has a much larger code and data size. 2612 2613 Current Release: 2614 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2615 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2616 Previous Release: 2617 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2618 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2619 2620 26212) iASL Compiler/Disassembler and Tools: 2622 2623iASL: Fixed some issues with the ASL Include() operator. This operator 2624was incorrectly defined in the iASL parser rules, causing a new scope to 2625be opened for the code within the include file. This could lead to 2626several issues, including allowing ASL code that is technically illegal 2627and not supported by AML interpreters. Note, this does not affect the 2628related #include preprocessor operator. ACPICA BZ 1212. 2629 2630iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 2631operator is essentially an ASL macro since there is no AML opcode 2632associated with it. The code emitted by the iASL compiler for ElseIf is 2633an Else opcode followed immediately by an If opcode. The disassembler 2634will now emit an ElseIf if it finds an Else immediately followed by an 2635If. This simplifies the decoded ASL, especially for deeply nested 2636If..Else and large Switch constructs. Thus, the disassembled code more 2637closely follows the original source ASL. ACPICA BZ 1211. Example: 2638 2639 Old disassembly: 2640 Else 2641 { 2642 If (Arg0 == 0x02) 2643 { 2644 Local0 = 0x05 2645 } 2646 } 2647 2648 New disassembly: 2649 ElseIf (Arg0 == 0x02) 2650 { 2651 Local0 = 0x05 2652 } 2653 2654AcpiExec: Added support for the new module level code behavior and the 2655early region installation. This required a small change to the 2656initialization, since AcpiExec must install its own operation region 2657handlers. 2658 2659AcpiExec: Added support to make the debug object timer optional. Default 2660is timer disabled. This cleans up the debug object output -- the timer 2661data is rarely used. 2662 2663AcpiExec: Multiple ACPI tables are now loaded in the order that they 2664appear on the command line. This can be important when there are 2665interdependencies/references between the tables. 2666 2667iASL/Templates. Add support to generate template files with multiple 2668SSDTs within a single output file. Also added ommand line support to 2669specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 26701223, 1225. 2671 2672 2673---------------------------------------- 267424 November 2015. Summary of changes for version 20151124: 2675 26761) ACPICA kernel-resident subsystem: 2677 2678Fixed a possible regression for a previous update to FADT handling. The 2679FADT no longer has a fixed table ID, causing some issues with code that 2680was hardwired to a specific ID. Lv Zheng. 2681 2682Fixed a problem where the method auto-serialization could interfere with 2683the current SyncLevel. This change makes the auto-serialization support 2684transparent to the SyncLevel support and management. 2685 2686Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 2687interface is intended for early access to the namespace during the 2688initial namespace device discovery walk. The _SUB method has been seen to 2689access operation regions in some cases, causing errors because the 2690operation regions are not fully initialized. 2691 2692AML Debugger: Fixed some issues with the terminate/quit/exit commands 2693that can cause faults. Lv Zheng. 2694 2695AML Debugger: Add thread ID support so that single-step mode only applies 2696to the AML Debugger thread. This prevents runtime errors within some 2697kernels. Lv Zheng. 2698 2699Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 2700methods that are invoked by this interface are optional, removed warnings 2701emitted for the case where one or more of these methods do not exist. 2702ACPICA BZ 1208, original change by Prarit Bhargava. 2703 2704Made a major pass through the entire ACPICA source code base to 2705standardize formatting that has diverged a bit over time. There are no 2706functional changes, but this will of course cause quite a few code 2707differences from the previous ACPICA release. 2708 2709Example Code and Data Size: These are the sizes for the OS-independent 2710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2711debug version of the code includes the debug output trace mechanism and 2712has a much larger code and data size. 2713 2714 Current Release: 2715 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2716 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2717 Previous Release: 2718 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2719 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2720 2721 27222) iASL Compiler/Disassembler and Tools: 2723 2724iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 2725definition blocks within a single ASL file and the resulting AML file. 2726Support for this type of file was also added to the various tools that 2727use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 2728example code below shows two definition blocks within the same file: 2729 2730 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 27310x12345678) 2732 { 2733 } 2734 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 2735 { 2736 } 2737 2738iASL: Enhanced typechecking for the Name() operator. All expressions for 2739the value of the named object must be reduced/folded to a single constant 2740at compile time, as per the ACPI specification (the AML definition of 2741Name()). 2742 2743iASL: Fixed some code indentation issues for the -ic and -ia options (C 2744and assembly headers). Now all emitted code correctly begins in column 1. 2745 2746iASL: Added an error message for an attempt to open a Scope() on an 2747object defined in an SSDT. The DSDT is always loaded into the namespace 2748first, so any attempt to open a Scope on an SSDT object will fail at 2749runtime. 2750 2751 2752---------------------------------------- 275330 September 2015. Summary of changes for version 20150930: 2754 27551) ACPICA kernel-resident subsystem: 2756 2757Debugger: Implemented several changes and bug fixes to assist support for 2758the in-kernel version of the AML debugger. Lv Zheng. 2759- Fix the "predefined" command for in-kernel debugger. 2760- Do not enter debug command loop for the help and version commands. 2761- Disallow "execute" command during execution/single-step of a method. 2762 2763Interpreter: Updated runtime typechecking for all operators that have 2764target operands. The operand is resolved and validated that it is legal. 2765For example, the target cannot be a non-data object such as a Device, 2766Mutex, ThermalZone, etc., as per the ACPI specification. 2767 2768Debugger: Fixed the double-mutex user I/O handshake to work when local 2769deadlock detection is enabled. 2770 2771Debugger: limited display of method locals and arguments (LocalX and 2772ArgX) to only those that have actually been initialized. This prevents 2773lines of extraneous output. 2774 2775Updated the definition of the NFIT table to correct the bit polarity of 2776one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 2777 2778Example Code and Data Size: These are the sizes for the OS-independent 2779acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2780debug version of the code includes the debug output trace mechanism and 2781has a much larger code and data size. 2782 2783 Current Release: 2784 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2785 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2786 Previous Release: 2787 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2788 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2789 2790 27912) iASL Compiler/Disassembler and Tools: 2792 2793iASL: Improved the compile-time typechecking for operands of many of the 2794ASL operators: 2795 2796-- Added an option to disable compiler operand/operator typechecking (- 2797ot). 2798 2799-- For the following operators, the TermArg operands are now validated 2800when possible to be Integer data objects: BankField, OperationRegion, 2801DataTableRegion, Buffer, and Package. 2802 2803-- Store (Source, Target): Both the source and target operands are 2804resolved and checked that the operands are both legal. For example, 2805neither operand can be a non-data object such as a Device, Mutex, 2806ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 2807operator can be used to store an object to any type of target object. 2808 2809-- Store (Source, Target): If the source is a Package object, the target 2810must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 2811is a Package, the source must also be a Package. 2812 2813-- Store (Source, Target): A warning is issued if the source and target 2814resolve to the identical named object. 2815 2816-- Store (Source, <method invocation>): An error is generated for the 2817target method invocation, as this construct is not supported by the AML 2818interpreter. 2819 2820-- For all ASL math and logic operators, the target operand must be a 2821data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 2822includes the function return value also. 2823 2824-- External declarations are also included in the typechecking where 2825possible. External objects defined using the UnknownObj keyword cannot be 2826typechecked, however. 2827 2828iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 2829operator: 2830- Legacy code: Index(PKG1, 3) 2831- New ASL+ code: PKG1[3] 2832This completes the ACPI 6.0 ASL+ support as it was the only operator not 2833supported. 2834 2835iASL: Fixed the file suffix for the preprocessor output file (.i). Two 2836spaces were inadvertently appended to the filename, causing file access 2837and deletion problems on some systems. 2838 2839ASL Test Suite (ASLTS): Updated the master makefile to generate all 2840possible compiler output files when building the test suite -- thus 2841exercising these features of the compiler. These files are automatically 2842deleted when the test suite exits. 2843 2844 2845---------------------------------------- 284618 August 2015. Summary of changes for version 20150818: 2847 28481) ACPICA kernel-resident subsystem: 2849 2850Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 2851Zheng. ACPICA BZ 1186. 2852 2853Completed development to ensure that the ACPICA Disassembler and Debugger 2854are fully standalone components of ACPICA. Removed cross-component 2855dependences. Lv Zheng. 2856 2857The max-number-of-AML-loops is now runtime configurable (previously was 2858compile-time only). This is essentially a loop timeout to force-abort 2859infinite AML loops. ACPCIA BZ 1192. 2860 2861Debugger: Cleanup output to dump ACPI names and namepaths without any 2862trailing underscores. Lv Zheng. ACPICA BZ 1135. 2863 2864Removed unnecessary conditional compilations across the Debugger and 2865Disassembler components where entire modules could be left uncompiled. 2866 2867The aapits test is deprecated and has been removed from the ACPICA git 2868tree. The test has never been completed and has not been maintained, thus 2869becoming rather useless. ACPICA BZ 1015, 794. 2870 2871A batch of small changes to close bugzilla and other reports: 2872- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 2873- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 2874- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 2875- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 2876Moore. 2877- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 2878ACPICA BZ 1184. 2879- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 2880operators. 2881- Debugger: Split debugger initialization/termination interfaces. Lv 2882Zheng. 2883- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 2884identification. 2885- AcpiExec: Add debug message during _REG method phase during table 2886load/init. 2887- AcpiNames: Fix a regression where some output was missing and no longer 2888emitted. 2889- Debugger: General cleanup and simplification. Lv Zheng. 2890- Disassembler: Cleanup use of several global option variables. Lv Zheng. 2891 2892Example Code and Data Size: These are the sizes for the OS-independent 2893acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2894debug version of the code includes the debug output trace mechanism and 2895has a much larger code and data size. 2896 2897 Current Release: 2898 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2899 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2900 Previous Release: 2901 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2902 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2903 2904 29052) iASL Compiler/Disassembler and Tools: 2906 2907AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 2908were not handled properly and caused load errors. Now, properly invoke 2909and use the ACPICA auto-reallocate mechanism for ACPI table data 2910structures. ACPICA BZ 1188 2911 2912AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 2913BZ 1190. 2914 2915AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 2916AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 2917executed during initialization. ACPICA BZ 1187, 1189. 2918 2919iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 2920that corresponds to each disassembled ASL statement, to simplify 2921debugging. ACPICA BZ 1191. 2922 2923Debugger: Add option to the "objects" command to display a summary of the 2924current namespace objects (Object type and count). This is displayed if 2925the command is entered with no arguments. 2926 2927AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 2928 2929 2930---------------------------------------- 293117 July 2015. Summary of changes for version 20150717: 2932 29331) ACPICA kernel-resident subsystem: 2934 2935Improved the partitioning between the Debugger and Disassembler 2936components. This allows the Debugger to be used standalone within kernel 2937code without the Disassembler (which is used for single stepping also). 2938This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 2939 2940Debugger: Implemented a new command to trace the execution of control 2941methods (Trace). This is especially useful for the in-kernel version of 2942the debugger when file I/O may not be available for method trace output. 2943See the ACPICA reference for more information. Lv Zheng. 2944 2945Moved all C library prototypes (used for the local versions of these 2946functions when requested) to a new header, acclib.h 2947Cleaned up the use of non-ANSI C library functions. These functions are 2948implemented locally in ACPICA. Moved all such functions to a common 2949source file, utnonansi.c 2950 2951Debugger: Fixed a problem with the "!!" command (get last command 2952executed) where the debugger could enter an infinite loop and eventually 2953crash. 2954 2955Removed the use of local macros that were used for some of the standard C 2956library functions to automatically cast input parameters. This mostly 2957affected the is* functions where the input parameter is defined to be an 2958int. This required a few modifications to the main ACPICA source code to 2959provide casting for these functions and eliminate possible compiler 2960warnings for these parameters. 2961 2962Across the source code, added additional status/error checking to resolve 2963issues discovered by static source code analysis tools such as Coverity. 2964 2965Example Code and Data Size: These are the sizes for the OS-independent 2966acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2967debug version of the code includes the debug output trace mechanism and 2968has a much larger code and data size. 2969 2970 Current Release: 2971 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2972 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2973 Previous Release: 2974 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2975 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2976 2977 29782) iASL Compiler/Disassembler and Tools: 2979 2980iASL: Fixed a regression where the device map file feature no longer 2981worked properly when used in conjunction with the disassembler. It only 2982worked properly with the compiler itself. 2983 2984iASL: Implemented a new warning for method LocalX variables that are set 2985but never used (similar to a C compiler such as gcc). This also applies 2986to ArgX variables that are not defined by the parent method, and are 2987instead (legally) used as local variables. 2988 2989iASL/Preprocessor: Finished the pass-through of line numbers from the 2990preprocessor to the compiler. This ensures that compiler errors/warnings 2991have the correct original line numbers and filenames, regardless of any 2992#include files. 2993 2994iASL/Preprocessor: Fixed a couple of issues with comment handling and the 2995pass-through of comments to the preprocessor output file (which becomes 2996the compiler input file). Also fixed a problem with // comments that 2997appear after a math expression. 2998 2999iASL: Added support for the TCPA server table to the table compiler and 3000template generator. (The client table was already previously supported) 3001 3002iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 3003identify the iASL compiler. 3004 3005Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 3006multiple times. The new names are ACPI_SIGN_NEGATIVE and 3007ACPI_SIGN_POSITIVE. 3008 3009AcpiHelp: Update to expand help messages for the iASL preprocessor 3010directives. 3011 3012 3013---------------------------------------- 301419 June 2015. Summary of changes for version 20150619: 3015 3016Two regressions in version 20150616 have been addressed: 3017 3018Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 3019etc.) This update changes ACPICA to only use the standard headers for 3020functions, or the prototypes for the local versions of the C library 3021functions. Across the source code, this required some additional casts 3022for some Clib invocations for portability. Moved all local prototypes to 3023a new file, acclib.h 3024 3025Fixes several problems with recent changes to the handling of the FACS 3026table that could cause some systems not to boot. 3027 3028 3029---------------------------------------- 303016 June 2015. Summary of changes for version 20150616: 3031 3032 30331) ACPICA kernel-resident subsystem: 3034 3035Across the entire ACPICA source code base, the various macros for the C 3036library functions (such as ACPI_STRLEN, etc.) have been removed and 3037replaced by the standard C library names (strlen, etc.) The original 3038purpose for these macros is no longer applicable. This simplification 3039reduces the number of macros used in the ACPICA source code 3040significantly, improving readability and maintainability. 3041 3042Implemented support for a new ACPI table, the OSDT. This table, the 3043"override" SDT, can be loaded directly by the host OS at boot time. It 3044enables the replacement of existing namespace objects that were installed 3045via the DSDT and/or SSDTs. The primary purpose for this is to replace 3046buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 3047for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 3048Moore. 3049 3050Added support for systems with (improperly) two FACS tables -- a "32-bit" 3051table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 3052X field). This change will support both automatically. There continues to 3053be systems found with this issue. This support requires a change to the 3054AcpiSetFirmwareWakingVector interface. Also, a public global variable has 3055been added to allow the host to select which FACS is desired 3056(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 3057details Lv Zheng. 3058 3059Added a new feature to allow for systems that do not contain an FACS. 3060Although this is already supported on hardware-reduced platforms, the 3061feature has been extended for all platforms. The reasoning is that we do 3062not want to abort the entire ACPICA initialization just because the 3063system is seriously buggy and has no FACS. 3064 3065Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 3066not correctly transcribed from the ACPI specification in ACPICA version 306720150515. 3068 3069Implemented support for the _CLS object in the AcpiGetObjectInfo external 3070interface. 3071 3072Updated the definitions of the TCPA and TPM2 ACPI tables to the more 3073recent TCG ACPI Specification, December 14, 2014. Table disassembler and 3074compiler also updated. Note: The TCPA "server" table is not supported by 3075the disassembler/table-compiler at this time. 3076 3077ACPI 6.0: Added definitions for the new GIC version field in the MADT. 3078 3079Example Code and Data Size: These are the sizes for the OS-independent 3080acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3081debug version of the code includes the debug output trace mechanism and 3082has a much larger code and data size. 3083 3084 Current Release: 3085 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3086 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3087 Previous Release: 3088 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3089 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3090 3091 30922) iASL Compiler/Disassembler and Tools: 3093 3094Disassembler: Fixed a problem with the new symbolic operator disassembler 3095where incorrect ASL code could be emitted in some cases for the "non- 3096commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 3097ShiftRight. The actual problem cases seem to be rather unusual in common 3098ASL code, however. David Box. 3099 3100Modified the linux version of acpidump to obtain ACPI tables from not 3101just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 3102Zheng. 3103 3104iASL: Fixed a problem where the user preprocessor output file (.i) 3105contained extra data that was not expected. The compiler was using this 3106file as a temporary file and passed through #line directives in order to 3107keep compiler error messages in sync with the input file and line number 3108across multiple include files. The (.i) is no longer a temporary file as 3109the compiler uses a new, different file for the original purpose. 3110 3111iASL: Fixed a problem where comments within the original ASL source code 3112file were not passed through to the preprocessor output file, nor any 3113listing files. 3114 3115iASL: Fixed some issues for the handling of the "#include" preprocessor 3116directive and the similar (but not the same) "Include" ASL operator. 3117 3118iASL: Add support for the new OSDT in both the disassembler and compiler. 3119 3120iASL: Fixed a problem with the constant folding support where a Buffer 3121object could be incorrectly generated (incorrectly formed) during a 3122conversion to a Store() operator. 3123 3124AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 3125description text for the _REV predefined name. _REV now permanently 3126returns 2, as per the ACPI 6.0 specification. 3127 3128Debugger: Enhanced the output of the Debug ASL object for references 3129produced by the Index operator. For Buffers and strings, only output the 3130actual byte pointed to by the index. For packages, only print the single 3131package element decoded by the index. Previously, the entire 3132buffer/string/package was emitted. 3133 3134iASL/Table-compiler: Fixed a regression where the "generic" data types 3135were no longer recognized, causing errors. 3136 3137 3138---------------------------------------- 313915 May 2015. Summary of changes for version 20150515: 3140 3141This release implements most of ACPI 6.0 as described below. 3142 31431) ACPICA kernel-resident subsystem: 3144 3145Implemented runtime argument checking and return value checking for all 3146new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 3147_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 3148 3149Example Code and Data Size: These are the sizes for the OS-independent 3150acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3151debug version of the code includes the debug output trace mechanism and 3152has a much larger code and data size. 3153 3154 Current Release: 3155 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3156 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3157 Previous Release: 3158 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3159 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3160 3161 31622) iASL Compiler/Disassembler and Tools: 3163 3164iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 3165names (argument count validation and return value typechecking.) 3166 3167iASL disassembler and table compiler: implemented support for all new 3168ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 3169 3170iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 3171tables: FADT, MADT. 3172 3173iASL preprocessor: Added a new directive to enable inclusion of binary 3174blobs into ASL code. The new directive is #includebuffer. It takes a 3175binary file as input and emits a named ascii buffer object into the ASL 3176code. 3177 3178AcpiHelp: Added support for all new ACPI 6.0 predefined names. 3179 3180AcpiHelp: Added a new option, -d, to display all iASL preprocessor 3181directives. 3182 3183AcpiHelp: Added a new option, -t, to display all known/supported ACPI 3184tables. 3185 3186 3187---------------------------------------- 318810 April 2015. Summary of changes for version 20150410: 3189 3190Reverted a change introduced in version 20150408 that caused 3191a regression in the disassembler where incorrect operator 3192symbols could be emitted. 3193 3194 3195---------------------------------------- 319608 April 2015. Summary of changes for version 20150408: 3197 3198 31991) ACPICA kernel-resident subsystem: 3200 3201Permanently set the return value for the _REV predefined name. It now 3202returns 2 (was 5). This matches other ACPI implementations. _REV will be 3203deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 3204for ACPI 2.0 and later. It should never be used to differentiate or 3205identify operating systems. 3206 3207Added the "Windows 2015" string to the _OSI support. ACPICA will now 3208return TRUE to a query with this string. 3209 3210Fixed several issues with the local version of the printf function. 3211 3212Added the C99 compiler option (-std=c99) to the Unix makefiles. 3213 3214 Current Release: 3215 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 3216 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 3217 Previous Release: 3218 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3219 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3220 3221 32222) iASL Compiler/Disassembler and Tools: 3223 3224iASL: Implemented an enhancement to the constant folding feature to 3225transform the parse tree to a simple Store operation whenever possible: 3226 Add (2, 3, X) ==> is converted to: Store (5, X) 3227 X = 2 + 3 ==> is converted to: Store (5, X) 3228 3229Updated support for the SLIC table (Software Licensing Description Table) 3230in both the Data Table compiler and the disassembler. The SLIC table 3231support now conforms to "Microsoft Software Licensing Tables (SLIC and 3232MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 3233following the ACPI header is now defined to be "Proprietary Data", and as 3234such, can only be entered or displayed as a hex data block. 3235 3236Implemented full support for the MSDM table as described in the document 3237above. Note: The format of MSDM is similar to SLIC. Any MSDM data 3238following the ACPI header is defined to be "Proprietary Data", and can 3239only be entered or displayed as a hex data block. 3240 3241Implemented the -Pn option for the iASL Table Compiler (was only 3242implemented for the ASL compiler). This option disables the iASL 3243preprocessor. 3244 3245Disassembler: For disassembly of Data Tables, added a comment field 3246around the Ascii equivalent data that is emitted as part of the "Raw 3247Table Data" block. This prevents the iASL Preprocessor from possible 3248confusion if/when the table is compiled. 3249 3250Disassembler: Added an option (-df) to force the disassembler to assume 3251that the table being disassembled contains valid AML. This feature is 3252useful for disassembling AML files that contain ACPI signatures other 3253than DSDT or SSDT (such as OEMx or other signatures). 3254 3255Changes for the EFI version of the tools: 32561) Fixed a build error/issue 32572) Fixed a cast warning 3258 3259iASL: Fixed a path issue with the __FILE__ operator by making the 3260directory prefix optional within the internal SplitInputFilename 3261function. 3262 3263Debugger: Removed some unused global variables. 3264 3265Tests: Updated the makefile for proper generation of the AAPITS suite. 3266 3267 3268---------------------------------------- 326904 February 2015. Summary of changes for version 20150204: 3270 3271ACPICA kernel-resident subsystem: 3272 3273Updated all ACPICA copyrights and signons to 2014. Added the 2014 3274copyright to all module headers and signons, including the standard Linux 3275header. This affects virtually every file in the ACPICA core subsystem, 3276iASL compiler, all ACPICA utilities, and the test suites. 3277 3278Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 3279A raw gpe handling mechanism was created to allow better handling of GPE 3280storms that aren't easily managed by the normal handler. The raw handler 3281allows disabling/renabling of the the GPE so that interrupt storms can be 3282avoided in cases where events cannot be timely serviced. In this 3283scenario, handlers should use the AcpiSetGpe() API to disable/enable the 3284GPE. This API will leave the reference counts undisturbed, thereby 3285preventing unintentional clearing of the GPE when the intent in only to 3286temporarily disable it. Raw handlers allow enabling and disabling of a 3287GPE by removing GPE register locking. As such, raw handlers much provide 3288their own locks while using GPE API's to protect access to GPE data 3289structures. 3290Lv Zheng 3291 3292Events: Always modify GPE registers under the GPE lock. 3293Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 3294values. Reported as bug by joe.liu@apple.com. 3295 3296Unix makefiles: Separate option to disable optimizations and 3297_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 3298NOOPT disable option and creates a separate flag (NOFORTIFY) for this 3299purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 3300errors when building ACPICA. This allows disabling the option without 3301also having to disable optimazations. 3302David Box 3303 3304 Current Release: 3305 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3306 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 3307 3308-- 3309-------------------------------------- 331007 November 2014. Summary of changes for version 20141107: 3311 3312This release is available at https://acpica.org/downloads 3313 3314This release introduces and implements language extensions to ASL that 3315provide support for symbolic ("C-style") operators and expressions. These 3316language extensions are known collectively as ASL+. 3317 3318 33191) iASL Compiler/Disassembler and Tools: 3320 3321Disassembler: Fixed a problem with disassembly of the UartSerialBus 3322macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 3323Box. 3324 3325Disassembler: Fixed the Unicode macro support to add escape sequences. 3326All non-printable ASCII values are emitted as escape sequences, as well 3327as the standard escapes for quote and backslash. Ensures that the 3328disassembled macro can be correctly recompiled. 3329 3330iASL: Added Printf/Fprintf macros for formatted output. These macros are 3331translated to existing AML Concatenate and Store operations. Printf 3332writes to the ASL Debug object. Fprintf allows the specification of an 3333ASL name as the target. Only a single format specifier is required, %o, 3334since the AML interpreter dynamically converts objects to the required 3335type. David E. Box. 3336 3337 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3338 (Concatenate (Concatenate (Concatenate ("", Arg0), 3339 ": Unexpected value for "), Arg1), ", "), Arg2), 3340 " at line "), Arg3), Debug) 3341 3342 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 3343 Arg0, Arg1, Arg2, Arg3) 3344 3345 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3346 ("", Arg1), ": "), Arg0), " Successful"), STR1) 3347 3348 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 3349 3350iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 3351ASL parse tree before the AML code is generated. This allows blocks of 3352ASL code to be removed in order to help locate and identify problem 3353devices and/or code. David E. Box. 3354 3355AcpiExec: Added support (-fi) for an optional namespace object 3356initialization file. This file specifies initial values for namespace 3357objects as necessary for debugging and testing different ASL code paths 3358that may be taken as a result of BIOS options. 3359 3360 33612) Overview of symbolic operator support for ASL (ASL+) 3362------------------------------------------------------- 3363 3364As an extension to the ASL language, iASL implements support for symbolic 3365(C-style) operators for math and logical expressions. This can greatly 3366simplify ASL code as well as improve both readability and 3367maintainability. These language extensions can exist concurrently with 3368all legacy ASL code and expressions. 3369 3370The symbolic extensions are 100% compatible with existing AML 3371interpreters, since no new AML opcodes are created. To implement the 3372extensions, the iASL compiler transforms the symbolic expressions into 3373the legacy ASL/AML equivalents at compile time. 3374 3375Full symbolic expressions are supported, along with the standard C 3376precedence and associativity rules. 3377 3378Full disassembler support for the symbolic expressions is provided, and 3379creates an automatic migration path for existing ASL code to ASL+ code 3380via the disassembly process. By default, the disassembler now emits ASL+ 3381code with symbolic expressions. An option (-dl) is provided to force the 3382disassembler to emit legacy ASL code if desired. 3383 3384Below is the complete list of the currently supported symbolic operators 3385with examples. See the iASL User Guide for additional information. 3386 3387 3388ASL+ Syntax Legacy ASL Equivalent 3389----------- --------------------- 3390 3391 // Math operators 3392 3393Z = X + Y Add (X, Y, Z) 3394Z = X - Y Subtract (X, Y, Z) 3395Z = X * Y Multiply (X, Y, Z) 3396Z = X / Y Divide (X, Y, , Z) 3397Z = X % Y Mod (X, Y, Z) 3398Z = X << Y ShiftLeft (X, Y, Z) 3399Z = X >> Y ShiftRight (X, Y, Z) 3400Z = X & Y And (X, Y, Z) 3401Z = X | Y Or (X, Y, Z) 3402Z = X ^ Y Xor (X, Y, Z) 3403Z = ~X Not (X, Z) 3404X++ Increment (X) 3405X-- Decrement (X) 3406 3407 // Logical operators 3408 3409(X == Y) LEqual (X, Y) 3410(X != Y) LNotEqual (X, Y) 3411(X < Y) LLess (X, Y) 3412(X > Y) LGreater (X, Y) 3413(X <= Y) LLessEqual (X, Y) 3414(X >= Y) LGreaterEqual (X, Y) 3415(X && Y) LAnd (X, Y) 3416(X || Y) LOr (X, Y) 3417(!X) LNot (X) 3418 3419 // Assignment and compound assignment operations 3420 3421X = Y Store (Y, X) 3422X += Y Add (X, Y, X) 3423X -= Y Subtract (X, Y, X) 3424X *= Y Multiply (X, Y, X) 3425X /= Y Divide (X, Y, , X) 3426X %= Y Mod (X, Y, X) 3427X <<= Y ShiftLeft (X, Y, X) 3428X >>= Y ShiftRight (X, Y, X) 3429X &= Y And (X, Y, X) 3430X |= Y Or (X, Y, X) 3431X ^= Y Xor (X, Y, X) 3432 3433 34343) ASL+ Examples: 3435----------------- 3436 3437Legacy ASL: 3438 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 3439 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 34400x03FB), 3441 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 3442 { 3443 And (MEMB, 0xFFFFFFF0, SRMB) 3444 Store (MEMB, Local2) 3445 Store (PDBM, Local1) 3446 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 3447 Store (SRMB, MEMB) 3448 Or (PDBM, 0x02, PDBM) 3449 } 3450 3451ASL+ version: 3452 If (((R510 & 0x03FB) == 0x02E0) || 3453 ((R520 & 0x03FB) == 0x02E0) || 3454 ((R530 & 0x03FB) == 0x02E0) || 3455 ((R540 & 0x03FB) == 0x02E0)) 3456 { 3457 SRMB = (MEMB & 0xFFFFFFF0) 3458 Local2 = MEMB 3459 Local1 = PDBM 3460 PDBM &= 0xFFFFFFFFFFFFFFF9 3461 MEMB = SRMB 3462 PDBM |= 0x02 3463 } 3464 3465Legacy ASL: 3466 Store (0x1234, Local1) 3467 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 3468 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 3469 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 3470 Store (Index (PKG1, 0x03), Local6) 3471 Store (Add (Local3, Local2), Debug) 3472 Add (Local1, 0x0F, Local2) 3473 Add (Local1, Multiply (Local2, Local3), Local2) 3474 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 3475 3476ASL+ version: 3477 Local1 = 0x1234 3478 Local3 = (((Local1 + TEST) + 0x20) * Local2) 3479 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 3480 Local3 = (Local1 + (TEST + (0x20 * Local2))) 3481 Local6 = Index (PKG1, 0x03) 3482 Debug = (Local3 + Local2) 3483 Local2 = (Local1 + 0x0F) 3484 Local2 = (Local1 + (Local2 * Local3)) 3485 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 3486 3487 3488---------------------------------------- 348926 September 2014. Summary of changes for version 20140926: 3490 34911) ACPICA kernel-resident subsystem: 3492 3493Updated the GPIO operation region handler interface (GeneralPurposeIo). 3494In order to support GPIO Connection objects with multiple pins, along 3495with the related Field objects, the following changes to the interface 3496have been made: The Address is now defined to be the offset in bits of 3497the field unit from the previous invocation of a Connection. It can be 3498viewed as a "Pin Number Index" into the connection resource descriptor. 3499The BitWidth is the exact bit width of the field. It is usually one bit, 3500but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 3501additional information and examples. 3502 3503GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 3504corresponding _Lxx/_Exx methods are disabled (they may have been enabled 3505by the firmware), so that they cannot fire until they are enabled via 3506AcpiUpdateAllGpes. Rafael J. Wysocki. 3507 3508Added a new return flag for the Event/GPE status interfaces -- 3509AcpiGetEventStatus and AcpiGetGpeStatus. The new 3510ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 3511GPE currently has a handler associated with it, and can thus actually 3512affect the system. Lv Zheng. 3513 3514Example Code and Data Size: These are the sizes for the OS-independent 3515acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3516debug version of the code includes the debug output trace mechanism and 3517has a much larger code and data size. 3518 3519 Current Release: 3520 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3521 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3522 Previous Release: 3523 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3524 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3525 35262) iASL Compiler/Disassembler and Tools: 3527 3528iASL: Fixed a memory allocation/free regression introduced in 20140828 3529that could cause the compiler to crash. This was introduced inadvertently 3530during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 35311113. 3532 3533iASL: Removed two error messages that have been found to create false 3534positives, until they can be fixed and fully validated (ACPICA BZ 1112): 35351) Illegal forward reference within a method 35362) Illegal reference across two methods 3537 3538iASL: Implemented a new option (-lm) to create a hardware mapping file 3539that summarizes all GPIO, I2C, SPI, and UART connections. This option 3540works for both the compiler and disassembler. See the iASL compiler user 3541guide for additional information and examples (section 6.4.6). 3542 3543AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 3544version 2. This corrects the AE_BAD_HEADER exception seen on systems with 3545a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 3546 3547AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 3548unless STDIN is actually a terminal. Assists with batch-mode processing. 3549ACPICA BZ 1114. 3550 3551Disassembler/AcpiHelp: Added another large group of recognized _HID 3552values. 3553 3554 3555---------------------------------------- 355628 August 2014. Summary of changes for version 20140828: 3557 35581) ACPICA kernel-resident subsystem: 3559 3560Fixed a problem related to the internal use of the Timer() operator where 3561a 64-bit divide could cause an attempted link to a double-precision math 3562library. This divide is not actually necessary, so the code was 3563restructured to eliminate it. Lv Zheng. 3564 3565ACPI 5.1: Added support for the runtime validation of the _DSD package 3566(similar to the iASL support). 3567 3568ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 3569SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 3570 3571Example Code and Data Size: These are the sizes for the OS-independent 3572acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3573debug version of the code includes the debug output trace mechanism and 3574has a much larger code and data size. 3575 3576 Current Release: 3577 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3578 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3579 Previous Release: 3580 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 3581 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3582 35832) iASL Compiler/Disassembler and Tools: 3584 3585AcpiExec: Fixed a problem on unix systems where the original terminal 3586state was not always properly restored upon exit. Seen when using the -v 3587option. ACPICA BZ 1104. 3588 3589iASL: Fixed a problem with the validation of the ranges/length within the 3590Memory24 resource descriptor. There was a boundary condition when the 3591range was equal to the (length -1) caused by the fact that these values 3592are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 3593 3594Disassembler: Fixed a problem with the GpioInt descriptor interrupt 3595polarity 3596flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 3597is 3598now supported properly. 3599 3600ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 3601in the disassembler, data table compiler, and table template generator. 3602 3603iASL: Added a requirement for Device() objects that one of either a _HID 3604or _ADR must exist within the scope of a Device, as per the ACPI 3605specification. Remove a similar requirement that was incorrectly in place 3606for the _DSD object. 3607 3608iASL: Added error detection for illegal named references within control 3609methods that would cause runtime failures. Now trapped as errors are: 1) 3610References to objects within a non-parent control method. 2) Forward 3611references (within a method) -- for control methods, AML interpreters use 3612a one-pass parse of control methods. ACPICA BZ 1008. 3613 3614iASL: Added error checking for dependencies related to the _PSx power 3615methods. ACPICA BZ 1029. 36161) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 3617_PS3. 36182) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 3619scope. 3620 3621iASL and table compiler: Cleanup miscellaneous memory leaks by fully 3622deploying the existing object and string caches and adding new caches for 3623the table compiler. 3624 3625iASL: Split the huge parser source file into multiple subfiles to improve 3626manageability. Generation now requires the M4 macro preprocessor, which 3627is part of the Bison distribution on both unix and windows platforms. 3628 3629AcpiSrc: Fixed and removed all extraneous warnings generated during 3630entire ACPICA source code scan and/or conversion. 3631 3632 3633---------------------------------------- 3634 363524 July 2014. Summary of changes for version 20140724: 3636 3637The ACPI 5.1 specification has been released and is available at: 3638http://uefi.org/specs/access 3639 3640 36410) ACPI 5.1 support in ACPICA: 3642 3643ACPI 5.1 is fully supported in ACPICA as of this release. 3644 3645New predefined names. Support includes iASL and runtime ACPICA 3646validation. 3647 _CCA (Cache Coherency Attribute). 3648 _DSD (Device-Specific Data). David Box. 3649 3650Modifications to existing ACPI tables. Support includes headers, iASL 3651Data Table compiler, disassembler, and the template generator. 3652 FADT - New fields and flags. Graeme Gregory. 3653 GTDT - One new subtable and new fields. Tomasz Nowicki. 3654 MADT - Two new subtables. Tomasz Nowicki. 3655 PCCT - One new subtable. 3656 3657Miscellaneous. 3658 New notification type for System Resource Affinity change events. 3659 3660 36611) ACPICA kernel-resident subsystem: 3662 3663Fixed a regression introduced in 20140627 where a fault can happen during 3664the deletion of Alias AML namespace objects. The problem affected both 3665the core ACPICA and the ACPICA tools including iASL and AcpiExec. 3666 3667Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 3668simple mechanism to enable wake GPEs that have no associated handler or 3669control method. Rafael Wysocki. 3670 3671Updated the AcpiEnableGpe interface to disallow the enable if there is no 3672handler or control method associated with the particular GPE. This will 3673help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 3674 3675Updated GPE handling and dispatch by disabling the GPE before clearing 3676the status bit for edge-triggered GPEs. Lv Zheng. 3677 3678Added Timer() support to the AML Debug object. The current timer value is 3679now displayed with each invocation of (Store to) the debug object to 3680enable simple generation of execution times for AML code (method 3681execution for example.) ACPICA BZ 1093. 3682 3683Example Code and Data Size: These are the sizes for the OS-independent 3684acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3685debug version of the code includes the debug output trace mechanism and 3686has a much larger code and data size. 3687 3688 Current Release: 3689 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 3690 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3691 Previous Release: 3692 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3693 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3694 3695 36962) iASL Compiler/Disassembler and Tools: 3697 3698Fixed an issue with the recently added local printf implementation, 3699concerning width/precision specifiers that could cause incorrect output. 3700Lv Zheng. ACPICA BZ 1094. 3701 3702Disassembler: Added support to detect buffers that contain UUIDs and 3703disassemble them to an invocation of the ToUUID operator. Also emit 3704commented descriptions of known ACPI-related UUIDs. 3705 3706AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 3707-u. Adds three new files. 3708 3709iASL: Update table compiler and disassembler for DMAR table changes that 3710were introduced in September 2013. With assistance by David Woodhouse. 3711 3712---------------------------------------- 371327 June 2014. Summary of changes for version 20140627: 3714 37151) ACPICA kernel-resident subsystem: 3716 3717Formatted Output: Implemented local versions of standard formatted output 3718utilities such as printf, etc. Over time, it has been discovered that 3719there are in fact many portability issues with printf, and the addition 3720of this feature will fix/prevent these issues once and for all. Some 3721known issues are summarized below: 3722 37231) Output of 64-bit values is not portable. For example, UINT64 is %ull 3724for the Linux kernel and is %uI64 for some MSVC versions. 37252) Invoking printf consistently in a manner that is portable across both 372632-bit and 64-bit platforms is difficult at best in many situations. 37273) The output format for pointers varies from system to system (leading 3728zeros especially), and leads to inconsistent output from ACPICA across 3729platforms. 37304) Certain platform-specific printf formats may conflict with ACPICA use. 37315) If there is no local C library available, ACPICA now has local support 3732for printf. 3733 3734-- To address these printf issues in a complete manner, ACPICA now 3735directly implements a small subset of printf format specifiers, only 3736those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 3737 3738Implemented support for ACPICA generation within the EFI environment. 3739Initially, the AcpiDump utility is supported in the UEFI shell 3740environment. Lv Zheng. 3741 3742Added a new external interface, AcpiLogError, to improve ACPICA 3743portability. This allows the host to redirect error messages from the 3744ACPICA utilities. Lv Zheng. 3745 3746Added and deployed new OSL file I/O interfaces to improve ACPICA 3747portability: 3748 AcpiOsOpenFile 3749 AcpiOsCloseFile 3750 AcpiOsReadFile 3751 AcpiOsWriteFile 3752 AcpiOsGetFileOffset 3753 AcpiOsSetFileOffset 3754There are C library implementations of these functions in the new file 3755service_layers/oslibcfs.c -- however, the functions can be implemented by 3756the local host in any way necessary. Lv Zheng. 3757 3758Implemented a mechanism to disable/enable ACPI table checksum validation 3759at runtime. This can be useful when loading tables very early during OS 3760initialization when it may not be possible to map the entire table in 3761order to compute the checksum. Lv Zheng. 3762 3763Fixed a buffer allocation issue for the Generic Serial Bus support. 3764Originally, a fixed buffer length was used. This change allows for 3765variable-length buffers based upon the protocol indicated by the field 3766access attributes. Reported by Lan Tianyu. Lv Zheng. 3767 3768Fixed a problem where an object detached from a namespace node was not 3769properly terminated/cleared and could cause a circular list problem if 3770reattached. ACPICA BZ 1063. David Box. 3771 3772Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 3773 3774Fixed a possible memory leak in an error return path within the function 3775AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 3776 3777Example Code and Data Size: These are the sizes for the OS-independent 3778acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3779debug version of the code includes the debug output trace mechanism and 3780has a much larger code and data size. 3781 3782 Current Release: 3783 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3784 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3785 Previous Release: 3786 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3787 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3788 3789 37902) iASL Compiler/Disassembler and Tools: 3791 3792Disassembler: Add dump of ASCII equivalent text within a comment at the 3793end of each line of the output for the Buffer() ASL operator. 3794 3795AcpiDump: Miscellaneous changes: 3796 Fixed repetitive table dump in -n mode. 3797 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 3798the ACPI 2.0 GUID fails. 3799 3800iASL: Fixed a problem where the compiler could fault if incorrectly given 3801an acpidump output file as input. ACPICA BZ 1088. David Box. 3802 3803AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 3804they are invoked without any arguments. 3805 3806Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 38071086. Colin Ian King. 3808 3809Disassembler: Cleaned up a block of code that extracts a parent Op 3810object. Added a comment that explains that the parent is guaranteed to be 3811valid in this case. ACPICA BZ 1069. 3812 3813 3814---------------------------------------- 381524 April 2014. Summary of changes for version 20140424: 3816 38171) ACPICA kernel-resident subsystem: 3818 3819Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 3820Some of these tables are known to contain a trailing NULL entry. Lv 3821Zheng. 3822 3823Removed an extraneous error message for the case where there are a large 3824number of system GPEs (> 124). This was the "32-bit FADT register is too 3825long to convert to GAS struct" message, which is irrelevant for GPEs 3826since the GPEx_BLK_LEN fields of the FADT are always used instead of the 3827(limited capacity) GAS bit length. Also, several changes to ensure proper 3828support for GPE numbers > 255, where some "GPE number" fields were 8-bits 3829internally. 3830 3831Implemented and deployed additional configuration support for the public 3832ACPICA external interfaces. Entire classes of interfaces can now be 3833easily modified or configured out, replaced by stubbed inline functions 3834by default. Lv Zheng. 3835 3836Moved all public ACPICA runtime configuration globals to the public 3837ACPICA external interface file for convenience. Also, removed some 3838obsolete/unused globals. See the file acpixf.h. Lv Zheng. 3839 3840Documentation: Added a new section to the ACPICA reference describing the 3841maximum number of GPEs that can be supported by the FADT-defined GPEs in 3842block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 3843reference. 3844 3845Example Code and Data Size: These are the sizes for the OS-independent 3846acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3847debug version of the code includes the debug output trace mechanism and 3848has a much larger code and data size. 3849 3850 Current Release: 3851 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3852 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3853 Previous Release: 3854 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3855 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3856 3857 38582) iASL Compiler/Disassembler and Tools: 3859 3860iASL and disassembler: Add full support for the LPIT table (Low Power 3861Idle Table). Includes support in the disassembler, data table compiler, 3862and template generator. 3863 3864AcpiDump utility: 38651) Add option to force the use of the RSDT (over the XSDT). 38662) Improve validation of the RSDP signature (use 8 chars instead of 4). 3867 3868iASL: Add check for predefined packages that are too large. For 3869predefined names that contain subpackages, check if each subpackage is 3870too large. (Check for too small already exists.) 3871 3872Debugger: Updated the GPE command (which simulates a GPE by executing the 3873GPE code paths in ACPICA). The GPE device is now optional, and defaults 3874to the GPE 0/1 FADT-defined blocks. 3875 3876Unix application OSL: Update line-editing support. Add additional error 3877checking and take care not to reset terminal attributes on exit if they 3878were never set. This should help guarantee that the terminal is always 3879left in the previous state on program exit. 3880 3881 3882---------------------------------------- 388325 March 2014. Summary of changes for version 20140325: 3884 38851) ACPICA kernel-resident subsystem: 3886 3887Updated the auto-serialize feature for control methods. This feature 3888automatically serializes all methods that create named objects in order 3889to prevent runtime errors. The update adds support to ignore the 3890currently executing AML SyncLevel when invoking such a method, in order 3891to prevent disruption of any existing SyncLevel priorities that may exist 3892in the AML code. Although the use of SyncLevels is relatively rare, this 3893change fixes a regression where an AE_AML_MUTEX_ORDER exception can 3894appear on some machines starting with the 20140214 release. 3895 3896Added a new external interface to allow the host to install ACPI tables 3897very early, before the namespace is even created. AcpiInstallTable gives 3898the host additional flexibility for ACPI table management. Tables can be 3899installed directly by the host as if they had originally appeared in the 3900XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 3901(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 3902with additional internal restructuring and cleanup. See the ACPICA 3903Reference for interface details. Lv Zheng. 3904 3905Added validation of the checksum for all incoming dynamically loaded 3906tables (via external interfaces or via AML Load/LoadTable operators). Lv 3907Zheng. 3908 3909Updated the use of the AcpiOsWaitEventsComplete interface during Notify 3910and GPE handler removal. Restructured calls to eliminate possible race 3911conditions. Lv Zheng. 3912 3913Added a warning for the use/execution of the ASL/AML Unload (table) 3914operator. This will help detect and identify machines that use this 3915operator if and when it is ever used. This operator has never been seen 3916in the field and the usage model and possible side-effects of the drastic 3917runtime action of a full table removal are unknown. 3918 3919Reverted the use of #pragma push/pop which was introduced in the 20140214 3920release. It appears that push and pop are not implemented by enough 3921compilers to make the use of this feature feasible for ACPICA at this 3922time. However, these operators may be deployed in a future ACPICA 3923release. 3924 3925Added the missing EXPORT_SYMBOL macros for the install and remove SCI 3926handler interfaces. 3927 3928Source code generation: 39291) Disabled the use of the "strchr" macro for the gcc-specific 3930generation. For some versions of gcc, this macro can periodically expose 3931a compiler bug which in turn causes compile-time error(s). 39322) Added support for PPC64 compilation. Colin Ian King. 3933 3934Example Code and Data Size: These are the sizes for the OS-independent 3935acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3936debug version of the code includes the debug output trace mechanism and 3937has a much larger code and data size. 3938 3939 Current Release: 3940 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3941 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3942 Previous Release: 3943 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3944 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3945 3946 39472) iASL Compiler/Disassembler and Tools: 3948 3949Disassembler: Added several new features to improve the readability of 3950the resulting ASL code. Extra information is emitted within comment 3951fields in the ASL code: 39521) Known _HID/_CID values are decoded to descriptive text. 39532) Standard values for the Notify() operator are decoded to descriptive 3954text. 39553) Target operands are expanded to full pathnames (in a comment) when 3956possible. 3957 3958Disassembler: Miscellaneous updates for extern() handling: 39591) Abort compiler if file specified by -fe option does not exist. 39602) Silence unnecessary warnings about argument count mismatches. 39613) Update warning messages concerning unresolved method externals. 39624) Emit "UnknownObj" keyword for externals whose type cannot be 3963determined. 3964 3965AcpiHelp utility: 39661) Added the -a option to display both the ASL syntax and the AML 3967encoding for an input ASL operator. This effectively displays all known 3968information about an ASL operator with one AcpiHelp invocation. 39692) Added substring match support (similar to a wildcard) for the -i 3970(_HID/PNP IDs) option. 3971 3972iASL/Disassembler: Since this tool does not yet support execution on big- 3973endian machines, added detection of endianness and an error message if 3974execution is attempted on big-endian. Support for big-endian within iASL 3975is a feature that is on the ACPICA to-be-done list. 3976 3977AcpiBin utility: 39781) Remove option to extract binary files from an acpidump; this function 3979is made obsolete by the AcpiXtract utility. 39802) General cleanup of open files and allocated buffers. 3981 3982 3983---------------------------------------- 398414 February 2014. Summary of changes for version 20140214: 3985 39861) ACPICA kernel-resident subsystem: 3987 3988Implemented a new mechanism to proactively prevent problems with ill- 3989behaved reentrant control methods that create named ACPI objects. This 3990behavior is illegal as per the ACPI specification, but is nonetheless 3991frequently seen in the field. Previously, this could lead to an 3992AE_ALREADY_EXISTS exception if the method was actually entered by more 3993than one thread. This new mechanism detects such methods at table load 3994time and marks them "serialized" to prevent reentrancy. A new global 3995option, AcpiGbl_AutoSerializeMethods, has been added to disable this 3996feature if desired. This mechanism and global option obsoletes and 3997supersedes the previous AcpiGbl_SerializeAllMethods option. 3998 3999Added the "Windows 2013" string to the _OSI support. ACPICA will now 4000respond TRUE to _OSI queries with this string. It is the stated policy of 4001ACPICA to add new strings to the _OSI support as soon as possible after 4002they are defined. See the full ACPICA _OSI policy which has been added to 4003the utilities/utosi.c file. 4004 4005Hardened/updated the _PRT return value auto-repair code: 40061) Do not abort the repair on a single subpackage failure, continue to 4007check all subpackages. 40082) Add check for the minimum subpackage length (4). 40093) Properly handle extraneous NULL package elements. 4010 4011Added support to avoid the possibility of infinite loops when traversing 4012object linked lists. Never allow an infinite loop, even in the face of 4013corrupted object lists. 4014 4015ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 4016pack(pop) directives to ensure that the ACPICA headers are independent of 4017compiler settings or other host headers. 4018 4019Example Code and Data Size: These are the sizes for the OS-independent 4020acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4021debug version of the code includes the debug output trace mechanism and 4022has a much larger code and data size. 4023 4024 Current Release: 4025 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4026 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4027 Previous Release: 4028 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4029 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4030 4031 40322) iASL Compiler/Disassembler and Tools: 4033 4034iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 4035first reserved field was incorrectly forced to have a value of zero. This 4036change correctly forces the field to have a value of one. ACPICA BZ 1081. 4037 4038Debugger: Added missing support for the "Extra" and "Data" subobjects 4039when displaying object data. 4040 4041Debugger: Added support to display entire object linked lists when 4042displaying object data. 4043 4044iASL: Removed the obsolete -g option to obtain ACPI tables from the 4045Windows registry. This feature has been superseded by the acpidump 4046utility. 4047 4048 4049---------------------------------------- 405014 January 2014. Summary of changes for version 20140114: 4051 40521) ACPICA kernel-resident subsystem: 4053 4054Updated all ACPICA copyrights and signons to 2014. Added the 2014 4055copyright to all module headers and signons, including the standard Linux 4056header. This affects virtually every file in the ACPICA core subsystem, 4057iASL compiler, all ACPICA utilities, and the test suites. 4058 4059Improved parameter validation for AcpiInstallGpeBlock. Added the 4060following checks: 40611) The incoming device handle refers to type ACPI_TYPE_DEVICE. 40622) There is not already a GPE block attached to the device. 4063Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 4064device. 4065 4066Correctly support "references" in the ACPI_OBJECT. This change fixes the 4067support to allow references (namespace nodes) to be passed as arguments 4068to control methods via the evaluate object interface. This is probably 4069most useful for testing purposes, however. 4070 4071Improved support for 32/64 bit physical addresses in printf()-like 4072output. This change improves the support for physical addresses in printf 4073debug statements and other output on both 32-bit and 64-bit hosts. It 4074consistently outputs the appropriate number of bytes for each host. The 4075%p specifier is unsatisfactory since it does not emit uniform output on 4076all hosts/clib implementations (on some, leading zeros are not supported, 4077leading to difficult-to-read output). 4078 4079Example Code and Data Size: These are the sizes for the OS-independent 4080acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4081debug version of the code includes the debug output trace mechanism and 4082has a much larger code and data size. 4083 4084 Current Release: 4085 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4086 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4087 Previous Release: 4088 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4089 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4090 4091 40922) iASL Compiler/Disassembler and Tools: 4093 4094iASL: Fix a possible fault when using the Connection() operator. Fixes a 4095problem if the parent Field definition for the Connection operator refers 4096to an operation region that does not exist. ACPICA BZ 1064. 4097 4098AcpiExec: Load of local test tables is now optional. The utility has the 4099capability to load some various tables to test features of ACPICA. 4100However, there are enough of them that the output of the utility became 4101confusing. With this change, only the required local tables are displayed 4102(RSDP, XSDT, etc.) along with the actual tables loaded via the command 4103line specification. This makes the default output simler and easier to 4104understand. The -el command line option restores the original behavior 4105for testing purposes. 4106 4107AcpiExec: Added support for overlapping operation regions. This change 4108expands the simulation of operation regions by supporting regions that 4109overlap within the given address space. Supports SystemMemory and 4110SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 4111 4112AcpiExec: Added region handler support for PCI_Config and EC spaces. This 4113allows AcpiExec to simulate these address spaces, similar to the current 4114support for SystemMemory and SystemIO. 4115 4116Debugger: Added new command to read/write/compare all namespace objects. 4117The command "test objects" will exercise the entire namespace by writing 4118new values to each data object, and ensuring that the write was 4119successful. The original value is then restored and verified. 4120 4121Debugger: Added the "test predefined" command. This change makes this 4122test public and puts it under the new "test" command. The test executes 4123each and every predefined name within the current namespace. 4124 4125 4126---------------------------------------- 412718 December 2013. Summary of changes for version 20131218: 4128 4129Global note: The ACPI 5.0A specification was released this month. There 4130are no changes needed for ACPICA since this release of ACPI is an 4131errata/clarification release. The specification is available at 4132acpi.info. 4133 4134 41351) ACPICA kernel-resident subsystem: 4136 4137Added validation of the XSDT root table if it is present. Some older 4138platforms contain an XSDT that is ill-formed or otherwise invalid (such 4139as containing some or all entries that are NULL pointers). This change 4140adds a new function to validate the XSDT before actually using it. If the 4141XSDT is found to be invalid, ACPICA will now automatically fall back to 4142using the RSDT instead. Original implementation by Zhao Yakui. Ported to 4143ACPICA and enhanced by Lv Zheng and Bob Moore. 4144 4145Added a runtime option to ignore the XSDT and force the use of the RSDT. 4146This change adds a runtime option that will force ACPICA to use the RSDT 4147instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 4148requires that an XSDT be used instead of the RSDT, the XSDT has been 4149found to be corrupt or ill-formed on some machines. Lv Zheng. 4150 4151Added a runtime option to favor 32-bit FADT register addresses over the 415264-bit addresses. This change adds an option to favor 32-bit FADT 4153addresses when there is a conflict between the 32-bit and 64-bit versions 4154of the same register. The default behavior is to use the 64-bit version 4155in accordance with the ACPI specification. This can now be overridden via 4156the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 4157 4158During the change above, the internal "Convert FADT" and "Verify FADT" 4159functions have been merged to simplify the code, making it easier to 4160understand and maintain. ACPICA BZ 933. 4161 4162Improve exception reporting and handling for GPE block installation. 4163Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 4164status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 4165 4166Added helper macros to extract bus/segment numbers from the HEST table. 4167This change adds two macros to extract the encoded bus and segment 4168numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 4169Betty Dall <betty.dall@hp.com> 4170 4171Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 4172by ACPICA. It is not a public macro, so it should have no effect on 4173existing OSV code. Lv Zheng. 4174 4175Example Code and Data Size: These are the sizes for the OS-independent 4176acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4177debug version of the code includes the debug output trace mechanism and 4178has a much larger code and data size. 4179 4180 Current Release: 4181 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4182 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4183 Previous Release: 4184 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4185 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4186 4187 41882) iASL Compiler/Disassembler and Tools: 4189 4190Disassembler: Improved pathname support for emitted External() 4191statements. This change adds full pathname support for external names 4192that have been resolved internally by the inclusion of additional ACPI 4193tables (via the iASL -e option). Without this change, the disassembler 4194can emit multiple externals for the same object, or it become confused 4195when the Scope() operator is used on an external object. Overall, greatly 4196improves the ability to actually recompile the emitted ASL code when 4197objects a referenced across multiple ACPI tables. Reported by Michael 4198Tsirkin (mst@redhat.com). 4199 4200Tests/ASLTS: Updated functional control suite to execute with no errors. 4201David Box. Fixed several errors related to the testing of the interpreter 4202slack mode. Lv Zheng. 4203 4204iASL: Added support to detect names that are declared within a control 4205method, but are unused (these are temporary names that are only valid 4206during the time the method is executing). A remark is issued for these 4207cases. ACPICA BZ 1022. 4208 4209iASL: Added full support for the DBG2 table. Adds full disassembler, 4210table compiler, and template generator support for the DBG2 table (Debug 4211Port 2 table). 4212 4213iASL: Added full support for the PCCT table, update the table definition. 4214Updates the PCCT table definition in the actbl3.h header and adds table 4215compiler and template generator support. 4216 4217iASL: Added an option to emit only error messages (no warnings/remarks). 4218The -ve option will enable only error messages, warnings and remarks are 4219suppressed. This can simplify debugging when only the errors are 4220important, such as when an ACPI table is disassembled and there are many 4221warnings and remarks -- but only the actual errors are of real interest. 4222 4223Example ACPICA code (source/tools/examples): Updated the example code so 4224that it builds to an actual working program, not just example code. Added 4225ACPI tables and execution of an example control method in the DSDT. Added 4226makefile support for Unix generation. 4227 4228 4229---------------------------------------- 423015 November 2013. Summary of changes for version 20131115: 4231 4232This release is available at https://acpica.org/downloads 4233 4234 42351) ACPICA kernel-resident subsystem: 4236 4237Resource Manager: Fixed loop termination for the "get AML length" 4238function. The loop previously had an error termination on a NULL resource 4239pointer, which can never happen since the loop simply increments a valid 4240resource pointer. This fix changes the loop to terminate with an error on 4241an invalid end-of-buffer condition. The problem can be seen as an 4242infinite loop by callers to AcpiSetCurrentResources with an invalid or 4243corrupted resource descriptor, or a resource descriptor that is missing 4244an END_TAG descriptor. Reported by Dan Carpenter 4245<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 4246 4247Table unload and ACPICA termination: Delete all attached data objects 4248during namespace node deletion. This fix updates namespace node deletion 4249to delete the entire list of attached objects (attached via 4250AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 42511024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 4252 4253ACPICA termination: Added support to delete all objects attached to the 4254root namespace node. This fix deletes any and all objects that have been 4255attached to the root node via AcpiAttachData. Previously, none of these 4256objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 4257 4258Debug output: Do not emit the function nesting level for the in-kernel 4259build. The nesting level is really only useful during a single-thread 4260execution. Therefore, only enable this output for the AcpiExec utility. 4261Also, only emit the thread ID when executing under AcpiExec (Context 4262switches are still always detected and a message is emitted). ACPICA BZ 4263972. 4264 4265Example Code and Data Size: These are the sizes for the OS-independent 4266acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4267debug version of the code includes the debug output trace mechanism and 4268has a much larger code and data size. 4269 4270 Current Release: 4271 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4272 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4273 Previous Release: 4274 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4275 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4276 4277 42782) iASL Compiler/Disassembler and Tools: 4279 4280AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 4281correct portable POSIX header for terminal control functions. 4282 4283Disassembler: Fixed control method invocation issues related to the use 4284of the CondRefOf() operator. The problem is seen in the disassembly where 4285control method invocations may not be disassembled properly if the 4286control method name has been used previously as an argument to CondRefOf. 4287The solution is to not attempt to emit an external declaration for the 4288CondRefOf target (it is not necessary in the first place). This prevents 4289disassembler object type confusion. ACPICA BZ 988. 4290 4291Unix Makefiles: Added an option to disable compiler optimizations and the 4292_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 4293with optimizations (reportedly, gcc 4.4 for example). This change adds a 4294command line option for make (NOOPT) that disables all compiler 4295optimizations and the _FORTIFY_SOURCE compiler flag. The default 4296optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 42971034. Lv Zheng, Bob Moore. 4298 4299Tests/ASLTS: Added options to specify individual test cases and modes. 4300This allows testers running aslts.sh to optionally specify individual 4301test modes and test cases. Also added an option to disable the forced 4302generation of the ACPICA tools from source if desired. Lv Zheng. 4303 4304---------------------------------------- 430527 September 2013. Summary of changes for version 20130927: 4306 4307This release is available at https://acpica.org/downloads 4308 4309 43101) ACPICA kernel-resident subsystem: 4311 4312Fixed a problem with store operations to reference objects. This change 4313fixes a problem where a Store operation to an ArgX object that contained 4314a 4315reference to a field object did not complete the automatic dereference 4316and 4317then write to the actual field object. Instead, the object type of the 4318field object was inadvertently changed to match the type of the source 4319operand. The new behavior will actually write to the field object (buffer 4320field or field unit), thus matching the correct ACPI-defined behavior. 4321 4322Implemented support to allow the host to redefine individual OSL 4323prototypes. This change enables the host to redefine OSL prototypes found 4324in the acpiosxf.h file. This allows the host to implement OSL interfaces 4325with a macro or inlined function. Further, it allows the host to add any 4326additional required modifiers such as __iomem, __init, __exit, etc., as 4327necessary on a per-interface basis. Enables maximum flexibility for the 4328OSL interfaces. Lv Zheng. 4329 4330Hardcoded the access width for the FADT-defined reset register. The ACPI 4331specification requires the reset register width to be 8 bits. ACPICA now 4332hardcodes the width to 8 and ignores the FADT width value. This provides 4333compatibility with other ACPI implementations that have allowed BIOS code 4334with bad register width values to go unnoticed. Matthew Garett, Bob 4335Moore, 4336Lv Zheng. 4337 4338Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 4339used 4340in the OSL header (acpiosxf). The change modifies the position of this 4341macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 4342build issues if the OSL defines the implementation of the interface to be 4343an inline stub function. Lv Zheng. 4344 4345Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 4346initialization interfaces. This change adds a new macro for the main init 4347and terminate external interfaces in order to support hosts that require 4348additional or different processing for these functions. Changed from 4349ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 4350Zheng, Bob Moore. 4351 4352Cleaned up the memory allocation macros for configurability. In the 4353common 4354case, the ACPI_ALLOCATE and related macros now resolve directly to their 4355respective AcpiOs* OSL interfaces. Two options: 43561) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 4357default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 43582) For AcpiExec (and for debugging), the macros can optionally be 4359resolved 4360to the local ACPICA interfaces that track each allocation (local tracking 4361is used to immediately detect memory leaks). 4362Lv Zheng. 4363 4364Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 4365to predefine this macro to either TRUE or FALSE during the system build. 4366 4367Replaced __FUNCTION_ with __func__ in the gcc-specific header. 4368 4369Example Code and Data Size: These are the sizes for the OS-independent 4370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4371debug version of the code includes the debug output trace mechanism and 4372has a much larger code and data size. 4373 4374 Current Release: 4375 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4376 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4377 Previous Release: 4378 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4379 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4380 4381 43822) iASL Compiler/Disassembler and Tools: 4383 4384iASL: Implemented wildcard support for the -e option. This simplifies use 4385when there are many SSDTs that must be included to resolve external 4386method 4387declarations. ACPICA BZ 1041. Example: 4388 iasl -e ssdt*.dat -d dsdt.dat 4389 4390AcpiExec: Add history/line-editing for Unix/Linux systems. This change 4391adds a portable module that implements full history and limited line 4392editing for Unix and Linux systems. It does not use readline() due to 4393portability issues. Instead it uses the POSIX termio interface to put the 4394terminal in raw input mode so that the various special keys can be 4395trapped 4396(such as up/down-arrow for history support and left/right-arrow for line 4397editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 4398 4399AcpiXtract: Add support to handle (ignore) "empty" lines containing only 4400one or more spaces. This provides compatible with early or different 4401versions of the AcpiDump utility. ACPICA BZ 1044. 4402 4403AcpiDump: Do not ignore tables that contain only an ACPI table header. 4404Apparently, some BIOSs create SSDTs that contain an ACPI table header but 4405no other data. This change adds support to dump these tables. Any tables 4406shorter than the length of an ACPI table header remain in error (an error 4407message is emitted). Reported by Yi Li. 4408 4409Debugger: Echo actual command along with the "unknown command" message. 4410 4411---------------------------------------- 441223 August 2013. Summary of changes for version 20130823: 4413 44141) ACPICA kernel-resident subsystem: 4415 4416Implemented support for host-installed System Control Interrupt (SCI) 4417handlers. Certain ACPI functionality requires the host to handle raw 4418SCIs. For example, the "SCI Doorbell" that is defined for memory power 4419state support requires the host device driver to handle SCIs to examine 4420if the doorbell has been activated. Multiple SCI handlers can be 4421installed to allow for future expansion. New external interfaces are 4422AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 4423details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 4424 4425Operation region support: Never locally free the handler "context" 4426pointer. This change removes some dangerous code that attempts to free 4427the handler context pointer in some (rare) circumstances. The owner of 4428the handler owns this pointer and the ACPICA code should never touch it. 4429Although not seen to be an issue in any kernel, it did show up as a 4430problem (fault) under AcpiExec. Also, set the internal storage field for 4431the context pointer to zero when the region is deactivated, simply for 4432sanity. David Box. ACPICA BZ 1039. 4433 4434AcpiRead: On error, do not modify the return value target location. If an 4435error happens in the middle of a split 32/32 64-bit I/O operation, do not 4436modify the target of the return value pointer. Makes the code consistent 4437with the rest of ACPICA. Bjorn Helgaas. 4438 4439Example Code and Data Size: These are the sizes for the OS-independent 4440acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4441debug version of the code includes the debug output trace mechanism and 4442has a much larger code and data size. 4443 4444 Current Release: 4445 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4446 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4447 Previous Release: 4448 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4449 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 4450 4451 44522) iASL Compiler/Disassembler and Tools: 4453 4454AcpiDump: Implemented several new features and fixed some problems: 44551) Added support to dump the RSDP, RSDT, and XSDT tables. 44562) Added support for multiple table instances (SSDT, UEFI). 44573) Added option to dump "customized" (overridden) tables (-c). 44584) Fixed a problem where some table filenames were improperly 4459constructed. 44605) Improved some error messages, removed some unnecessary messages. 4461 4462iASL: Implemented additional support for disassembly of ACPI tables that 4463contain invocations of external control methods. The -fe<file> option 4464allows the import of a file that specifies the external methods along 4465with the required number of arguments for each -- allowing for the 4466correct disassembly of the table. This is a workaround for a limitation 4467of AML code where the disassembler often cannot determine the number of 4468arguments required for an external control method and generates incorrect 4469ASL code. See the iASL reference for details. ACPICA BZ 1030. 4470 4471Debugger: Implemented a new command (paths) that displays the full 4472pathnames (namepaths) and object types of all objects in the namespace. 4473This is an alternative to the namespace command. 4474 4475Debugger: Implemented a new command (sci) that invokes the SCI dispatch 4476mechanism and any installed handlers. 4477 4478iASL: Fixed a possible segfault for "too many parent prefixes" condition. 4479This can occur if there are too many parent prefixes in a namepath (for 4480example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 4481 4482Application OSLs: Set the return value for the PCI read functions. These 4483functions simply return AE_OK, but should set the return value to zero 4484also. This change implements this. ACPICA BZ 1038. 4485 4486Debugger: Prevent possible command line buffer overflow. Increase the 4487size of a couple of the debugger line buffers, and ensure that overflow 4488cannot happen. ACPICA BZ 1037. 4489 4490iASL: Changed to abort immediately on serious errors during the parsing 4491phase. Due to the nature of ASL, there is no point in attempting to 4492compile these types of errors, and they typically end up causing a 4493cascade of hundreds of errors which obscure the original problem. 4494 4495---------------------------------------- 449625 July 2013. Summary of changes for version 20130725: 4497 44981) ACPICA kernel-resident subsystem: 4499 4500Fixed a problem with the DerefOf operator where references to FieldUnits 4501and BufferFields incorrectly returned the parent object, not the actual 4502value of the object. After this change, a dereference of a FieldUnit 4503reference results in a read operation on the field to get the value, and 4504likewise, the appropriate BufferField value is extracted from the target 4505buffer. 4506 4507Fixed a problem where the _WAK method could cause a fault under these 4508circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 4509method returned no value. The problem is rarely seen because most kernels 4510run ACPICA in slack mode. 4511 4512For the DerefOf operator, a fatal error now results if an attempt is made 4513to dereference a reference (created by the Index operator) to a NULL 4514package element. Provides compatibility with other ACPI implementations, 4515and this behavior will be added to a future version of the ACPI 4516specification. 4517 4518The ACPI Power Management Timer (defined in the FADT) is now optional. 4519This provides compatibility with other ACPI implementations and will 4520appear in the next version of the ACPI specification. If there is no PM 4521Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 4522zero in the FADT indicates no PM timer. 4523 4524Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 4525allows the host to globally enable/disable all vendor strings, all 4526feature strings, or both. Intended to be primarily used for debugging 4527purposes only. Lv Zheng. 4528 4529Expose the collected _OSI data to the host via a global variable. This 4530data tracks the highest level vendor ID that has been invoked by the BIOS 4531so that the host (and potentially ACPICA itself) can change behaviors 4532based upon the age of the BIOS. 4533 4534Example Code and Data Size: These are the sizes for the OS-independent 4535acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4536debug version of the code includes the debug output trace mechanism and 4537has a much larger code and data size. 4538 4539 Current Release: 4540 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4541 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4542 Previous Release: 4543 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4544 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4545 4546 45472) iASL Compiler/Disassembler and Tools: 4548 4549iASL: Created the following enhancements for the -so option (create 4550offset table): 45511)Add offsets for the last nameseg in each namepath for every supported 4552object type 45532)Add support for Processor, Device, Thermal Zone, and Scope objects 45543)Add the actual AML opcode for the parent object of every supported 4555object type 45564)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 4557 4558Disassembler: Emit all unresolved external symbols in a single block. 4559These are external references to control methods that could not be 4560resolved, and thus, the disassembler had to make a guess at the number of 4561arguments to parse. 4562 4563iASL: The argument to the -T option (create table template) is now 4564optional. If not specified, the default table is a DSDT, typically the 4565most common case. 4566 4567---------------------------------------- 456826 June 2013. Summary of changes for version 20130626: 4569 45701) ACPICA kernel-resident subsystem: 4571 4572Fixed an issue with runtime repair of the _CST object. Null or invalid 4573elements were not always removed properly. Lv Zheng. 4574 4575Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 4576FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 4577the maximum number of GPEs is 1016. Use of multiple GPE block devices 4578makes the system-wide number of GPEs essentially unlimited. 4579 4580Example Code and Data Size: These are the sizes for the OS-independent 4581acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4582debug version of the code includes the debug output trace mechanism and 4583has a much larger code and data size. 4584 4585 Current Release: 4586 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4587 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4588 Previous Release: 4589 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4590 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4591 4592 45932) iASL Compiler/Disassembler and Tools: 4594 4595Portable AcpiDump: Implemented full support for the Linux and FreeBSD 4596hosts. Now supports Linux, FreeBSD, and Windows. 4597 4598Disassembler: Added some missing types for the HEST and EINJ tables: "Set 4599Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 4600 4601iASL/Preprocessor: Implemented full support for nested 4602#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 4603 4604Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 4605max. The original purpose of this constraint was to limit the amount of 4606debug output. However, the string function in question (UtPrintString) is 4607now used for the disassembler also, where 256 bytes is insufficient. 4608Reported by RehabMan@GitHub. 4609 4610iASL/DataTables: Fixed some problems and issues with compilation of DMAR 4611tables. ACPICA BZ 999. Lv Zheng. 4612 4613iASL: Fixed a couple of error exit issues that could result in a "Could 4614not delete <file>" message during ASL compilation. 4615 4616AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 4617the actual signatures for these tables are "FACP" and "APIC", 4618respectively. 4619 4620AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 4621tables are allowed to have multiple instances. 4622 4623---------------------------------------- 462417 May 2013. Summary of changes for version 20130517: 4625 46261) ACPICA kernel-resident subsystem: 4627 4628Fixed a regression introduced in version 20130328 for _INI methods. This 4629change fixes a problem introduced in 20130328 where _INI methods are no 4630longer executed properly because of a memory block that was not 4631initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 4632<tomasz.nowicki@linaro.org>. 4633 4634Fixed a possible problem with the new extended sleep registers in the 4635ACPI 46365.0 FADT. Do not use these registers (even if populated) unless the HW- 4637reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 46381020. Lv Zheng. 4639 4640Implemented return value repair code for _CST predefined objects: Sort 4641the 4642list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 4643 4644Implemented a debug-only option to disable loading of SSDTs from the 4645RSDT/XSDT during ACPICA initialization. This can be useful for debugging 4646ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 4647acglobal.h - ACPICA BZ 1005. Lv Zheng. 4648 4649Fixed some issues in the ACPICA initialization and termination code: 4650Tomasz Nowicki <tomasz.nowicki@linaro.org> 46511) Clear events initialized flag upon event component termination. ACPICA 4652BZ 1013. 46532) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 46543) Delete global lock pending lock during termination. ACPICA BZ 1012. 46554) Clear debug buffer global on termination to prevent possible multiple 4656delete. ACPICA BZ 1010. 4657 4658Standardized all switch() blocks across the entire source base. After 4659many 4660years, different formatting for switch() had crept in. This change makes 4661the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 4662 4663Split some files to enhance ACPICA modularity and configurability: 46641) Split buffer dump routines into utilities/utbuffer.c 46652) Split internal error message routines into utilities/uterror.c 46663) Split table print utilities into tables/tbprint.c 46674) Split iASL command-line option processing into asloptions.c 4668 4669Makefile enhancements: 46701) Support for all new files above. 46712) Abort make on errors from any subcomponent. Chao Guan. 46723) Add build support for Apple Mac OS X. Liang Qi. 4673 4674Example Code and Data Size: These are the sizes for the OS-independent 4675acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4676debug version of the code includes the debug output trace mechanism and 4677has a much larger code and data size. 4678 4679 Current Release: 4680 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4681 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4682 Previous Release: 4683 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4684 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4685 4686 46872) iASL Compiler/Disassembler and Tools: 4688 4689New utility: Implemented an easily portable version of the acpidump 4690utility to extract ACPI tables from the system (or a file) in an ASCII 4691hex 4692dump format. The top-level code implements the various command line 4693options, file I/O, and table dump routines. To port to a new host, only 4694three functions need to be implemented to get tables -- since this 4695functionality is OS-dependent. See the tools/acpidump/apmain.c module and 4696the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 46971) The Windows version obtains the ACPI tables from the Registry. 46982) The Linux version is under development. 46993) Other hosts - If an OS-dependent module is submitted, it will be 4700distributed with ACPICA. 4701 4702iASL: Fixed a regression for -D preprocessor option (define symbol). A 4703restructuring/change to the initialization sequence caused this option to 4704no longer work properly. 4705 4706iASL: Implemented a mechanism to disable specific warnings and remarks. 4707Adds a new command line option, "-vw <messageid> as well as "#pragma 4708disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 4709 4710iASL: Fix for too-strict package object validation. The package object 4711validation for return values from the predefined names is a bit too 4712strict, it does not allow names references within the package (which will 4713be resolved at runtime.) These types of references cannot be validated at 4714compile time. This change ignores named references within package objects 4715for names that return or define static packages. 4716 4717Debugger: Fixed the 80-character command line limitation for the History 4718command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 4719 4720iASL: Added control method and package support for the -so option 4721(generates AML offset table for BIOS support.) 4722 4723iASL: issue a remark if a non-serialized method creates named objects. If 4724a thread blocks within the method for any reason, and another thread 4725enters the method, the method will fail because an attempt will be made 4726to 4727create the same (named) object twice. In this case, issue a remark that 4728the method should be marked serialized. NOTE: may become a warning later. 4729ACPICA BZ 909. 4730 4731---------------------------------------- 473218 April 2013. Summary of changes for version 20130418: 4733 47341) ACPICA kernel-resident subsystem: 4735 4736Fixed a possible buffer overrun during some rare but specific field unit 4737read operations. This overrun can only happen if the DSDT version is 1 -- 4738meaning that all AML integers are 32 bits -- and the field length is 4739between 33 and 55 bits long. During the read, an internal buffer object 4740is 4741created for the field unit because the field is larger than an integer 4742(32 4743bits). However, in this case, the buffer will be incorrectly written 4744beyond the end because the buffer length is less than the internal 4745minimum 4746of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 4747long, but a full 8 bytes will be written. 4748 4749Updated the Embedded Controller "orphan" _REG method support. This refers 4750to _REG methods under the EC device that have no corresponding operation 4751region. This is allowed by the ACPI specification. This update removes a 4752dependency on the existence an ECDT table. It will execute an orphan _REG 4753method as long as the operation region handler for the EC is installed at 4754the EC device node and not the namespace root. Rui Zhang (original 4755update), Bob Moore (update/integrate). 4756 4757Implemented run-time argument typechecking for all predefined ACPI names 4758(_STA, _BIF, etc.) This change performs object typechecking on all 4759incoming arguments for all predefined names executed via 4760AcpiEvaluateObject. This ensures that ACPI-related device drivers are 4761passing correct object types as well as the correct number of arguments 4762(therefore identifying any issues immediately). Also, the ASL/namespace 4763definition of the predefined name is checked against the ACPI 4764specification for the proper argument count. Adds one new file, 4765nsarguments.c 4766 4767Changed an exception code for the ASL UnLoad() operator. Changed the 4768exception code for the case where the input DdbHandle is invalid, from 4769AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 4770 4771Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 4772global makefile. The use of this flag causes compiler errors on earlier 4773versions of GCC, so it has been removed for compatibility. 4774 4775Miscellaneous cleanup: 47761) Removed some unused/obsolete macros 47772) Fixed a possible memory leak in the _OSI support 47783) Removed an unused variable in the predefined name support 47794) Windows OSL: remove obsolete reference to a memory list field 4780 4781Example Code and Data Size: These are the sizes for the OS-independent 4782acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4783debug version of the code includes the debug output trace mechanism and 4784has a much larger code and data size. 4785 4786 Current Release: 4787 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4788 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4789 Previous Release: 4790 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4791 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4792 4793 47942) iASL Compiler/Disassembler and Tools: 4795 4796AcpiExec: Added installation of a handler for the SystemCMOS address 4797space. This prevents control method abort if a method accesses this 4798space. 4799 4800AcpiExec: Added support for multiple EC devices, and now install EC 4801operation region handler(s) at the actual EC device instead of the 4802namespace root. This reflects the typical behavior of host operating 4803systems. 4804 4805AcpiExec: Updated to ensure that all operation region handlers are 4806installed before the _REG methods are executed. This prevents a _REG 4807method from aborting if it accesses an address space has no handler. 4808AcpiExec installs a handler for every possible address space. 4809 4810Debugger: Enhanced the "handlers" command to display non-root handlers. 4811This change enhances the handlers command to display handlers associated 4812with individual devices throughout the namespace, in addition to the 4813currently supported display of handlers associated with the root 4814namespace 4815node. 4816 4817ASL Test Suite: Several test suite errors have been identified and 4818resolved, reducing the total error count during execution. Chao Guan. 4819 4820---------------------------------------- 482128 March 2013. Summary of changes for version 20130328: 4822 48231) ACPICA kernel-resident subsystem: 4824 4825Fixed several possible race conditions with the internal object reference 4826counting mechanism. Some of the external ACPICA interfaces update object 4827reference counts without holding the interpreter or namespace lock. This 4828change adds a spinlock to protect reference count updates on the internal 4829ACPICA objects. Reported by and with assistance from Andriy Gapon 4830(avg@FreeBSD.org). 4831 4832FADT support: Removed an extraneous warning for very large GPE register 4833sets. This change removes a size mismatch warning if the legacy length 4834field for a GPE register set is larger than the 64-bit GAS structure can 4835accommodate. GPE register sets can be larger than the 255-bit width 4836limitation of the GAS structure. Linn Crosetto (linn@hp.com). 4837 4838_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 4839return from this interface. Handles a possible timeout case if 4840ACPI_WAIT_FOREVER is modified by the host to be a value less than 4841"forever". Jung-uk Kim. 4842 4843Predefined name support: Add allowed/required argument type information 4844to 4845the master predefined info table. This change adds the infrastructure to 4846enable typechecking on incoming arguments for all predefined 4847methods/objects. It does not actually contain the code that will fully 4848utilize this information, this is still under development. Also condenses 4849some duplicate code for the predefined names into a new module, 4850utilities/utpredef.c 4851 4852Example Code and Data Size: These are the sizes for the OS-independent 4853acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4854debug version of the code includes the debug output trace mechanism and 4855has a much larger code and data size. 4856 4857 Previous Release: 4858 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4859 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4860 Current Release: 4861 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4862 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4863 4864 48652) iASL Compiler/Disassembler and Tools: 4866 4867iASL: Implemented a new option to simplify the development of ACPI- 4868related 4869BIOS code. Adds support for a new "offset table" output file. The -so 4870option will create a C table containing the AML table offsets of various 4871named objects in the namespace so that BIOS code can modify them easily 4872at 4873boot time. This can simplify BIOS runtime code by eliminating expensive 4874searches for "magic values", enhancing boot times and adding greater 4875reliability. With assistance from Lee Hamel. 4876 4877iASL: Allow additional predefined names to return zero-length packages. 4878Now, all predefined names that are defined by the ACPI specification to 4879return a "variable-length package of packages" are allowed to return a 4880zero length top-level package. This allows the BIOS to tell the host that 4881the requested feature is not supported, and supports existing BIOS/ASL 4882code and practices. 4883 4884iASL: Changed the "result not used" warning to an error. This is the case 4885where an ASL operator is effectively a NOOP because the result of the 4886operation is not stored anywhere. For example: 4887 Add (4, Local0) 4888There is no target (missing 3rd argument), nor is the function return 4889value used. This is potentially a very serious problem -- since the code 4890was probably intended to do something, but for whatever reason, the value 4891was not stored. Therefore, this issue has been upgraded from a warning to 4892an error. 4893 4894AcpiHelp: Added allowable/required argument types to the predefined names 4895info display. This feature utilizes the recent update to the predefined 4896names table (above). 4897 4898---------------------------------------- 489914 February 2013. Summary of changes for version 20130214: 4900 49011) ACPICA Kernel-resident Subsystem: 4902 4903Fixed a possible regression on some hosts: Reinstated the safe return 4904macros (return_ACPI_STATUS, etc.) that ensure that the argument is 4905evaluated only once. Although these macros are not needed for the ACPICA 4906code itself, they are often used by ACPI-related host device drivers 4907where 4908the safe feature may be necessary. 4909 4910Fixed several issues related to the ACPI 5.0 reduced hardware support 4911(SOC): Now ensure that if the platform declares itself as hardware- 4912reduced 4913via the FADT, the following functions become NOOPs (and always return 4914AE_OK) because ACPI is always enabled by definition on these machines: 4915 AcpiEnable 4916 AcpiDisable 4917 AcpiHwGetMode 4918 AcpiHwSetMode 4919 4920Dynamic Object Repair: Implemented additional runtime repairs for 4921predefined name return values. Both of these repairs can simplify code in 4922the related device drivers that invoke these methods: 49231) For the _STR and _MLS names, automatically repair/convert an ASCII 4924string to a Unicode buffer. 49252) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 4926a 4927lone end tag descriptor in the following cases: A Return(0) was executed, 4928a null buffer was returned, or no object at all was returned (non-slack 4929mode only). Adds a new file, nsconvert.c 4930ACPICA BZ 998. Bob Moore, Lv Zheng. 4931 4932Resource Manager: Added additional code to prevent possible infinite 4933loops 4934while traversing corrupted or ill-formed resource template buffers. Check 4935for zero-length resource descriptors in all code that loops through 4936resource templates (the length field is used to index through the 4937template). This change also hardens the external AcpiWalkResources and 4938AcpiWalkResourceBuffer interfaces. 4939 4940Local Cache Manager: Enhanced the main data structure to eliminate an 4941unnecessary mechanism to access the next object in the list. Actually 4942provides a small performance enhancement for hosts that use the local 4943ACPICA cache manager. Jung-uk Kim. 4944 4945Example Code and Data Size: These are the sizes for the OS-independent 4946acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4947debug version of the code includes the debug output trace mechanism and 4948has a much larger code and data size. 4949 4950 Previous Release: 4951 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4952 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4953 Current Release: 4954 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4955 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4956 4957 49582) iASL Compiler/Disassembler and Tools: 4959 4960iASL/Disassembler: Fixed several issues with the definition of the ACPI 49615.0 RASF table (RAS Feature Table). This change incorporates late changes 4962that were made to the ACPI 5.0 specification. 4963 4964iASL/Disassembler: Added full support for the following new ACPI tables: 4965 1) The MTMR table (MID Timer Table) 4966 2) The VRTC table (Virtual Real Time Clock Table). 4967Includes header file, disassembler, table compiler, and template support 4968for both tables. 4969 4970iASL: Implemented compile-time validation of package objects returned by 4971predefined names. This new feature validates static package objects 4972returned by the various predefined names defined to return packages. Both 4973object types and package lengths are validated, for both parent packages 4974and sub-packages, if any. The code is similar in structure and behavior 4975to 4976the runtime repair mechanism within the AML interpreter and uses the 4977existing predefined name information table. Adds a new file, aslprepkg.c. 4978ACPICA BZ 938. 4979 4980iASL: Implemented auto-detection of binary ACPI tables for disassembly. 4981This feature detects a binary file with a valid ACPI table header and 4982invokes the disassembler automatically. Eliminates the need to 4983specifically invoke the disassembler with the -d option. ACPICA BZ 862. 4984 4985iASL/Disassembler: Added several warnings for the case where there are 4986unresolved control methods during the disassembly. This can potentially 4987cause errors when the output file is compiled, because the disassembler 4988assumes zero method arguments in these cases (it cannot determine the 4989actual number of arguments without resolution/definition of the method). 4990 4991Debugger: Added support to display all resources with a single command. 4992Invocation of the resources command with no arguments will now display 4993all 4994resources within the current namespace. 4995 4996AcpiHelp: Added descriptive text for each ACPICA exception code displayed 4997via the -e option. 4998 4999---------------------------------------- 500017 January 2013. Summary of changes for version 20130117: 5001 50021) ACPICA Kernel-resident Subsystem: 5003 5004Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 5005return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 5006objects to return a package containing one integer, most BIOS code 5007returns 5008two integers and the previous code reflects that. However, we also need 5009to 5010support BIOS code that actually implements to the ACPI spec, and this 5011change reflects this. 5012 5013Fixed two issues with the ACPI_DEBUG_PRINT macros: 50141) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 5015C compilers that require this support. 50162) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 5017ACPI_DEBUG is already used by many of the various hosts. 5018 5019Updated all ACPICA copyrights and signons to 2013. Added the 2013 5020copyright to all module headers and signons, including the standard Linux 5021header. This affects virtually every file in the ACPICA core subsystem, 5022iASL compiler, all ACPICA utilities, and the test suites. 5023 5024Example Code and Data Size: These are the sizes for the OS-independent 5025acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5026debug version of the code includes the debug output trace mechanism and 5027has a much larger code and data size. 5028 5029 Previous Release: 5030 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5031 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5032 Current Release: 5033 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5034 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5035 5036 50372) iASL Compiler/Disassembler and Tools: 5038 5039Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 5040prevent a possible fault on some hosts. Some C libraries modify the arg 5041pointer parameter to vfprintf making it difficult to call it twice in the 5042AcpiOsVprintf function. Use a local buffer to workaround this issue. This 5043does not affect the Windows OSL since the Win C library does not modify 5044the arg pointer. Chao Guan, Bob Moore. 5045 5046iASL: Fixed a possible infinite loop when the maximum error count is 5047reached. If an output file other than the .AML file is specified (such as 5048a listing file), and the maximum number of errors is reached, do not 5049attempt to flush data to the output file(s) as the compiler is aborting. 5050This can cause an infinite loop as the max error count code essentially 5051keeps calling itself. 5052 5053iASL/Disassembler: Added an option (-in) to ignore NOOP 5054opcodes/operators. 5055Implemented for both the compiler and the disassembler. Often, the NOOP 5056opcode is used as padding for packages that are changed dynamically by 5057the 5058BIOS. When disassembled and recompiled, these NOOPs will cause syntax 5059errors. This option causes the disassembler to ignore all NOOP opcodes 5060(0xA3), and it also causes the compiler to ignore all ASL source code 5061NOOP 5062statements as well. 5063 5064Debugger: Enhanced the Sleep command to execute all sleep states. This 5065change allows Sleep to be invoked with no arguments and causes the 5066debugger to execute all of the sleep states, 0-5, automatically. 5067 5068---------------------------------------- 506920 December 2012. Summary of changes for version 20121220: 5070 50711) ACPICA Kernel-resident Subsystem: 5072 5073Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 5074alternate entry point for AcpiWalkResources and improves the usability of 5075the resource manager by accepting as input a buffer containing the output 5076of either a _CRS, _PRS, or _AEI method. The key functionality is that the 5077input buffer is not deleted by this interface so that it can be used by 5078the host later. See the ACPICA reference for details. 5079 5080Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 5081(DSDT version < 2). The constant will be truncated and this warning 5082reflects that behavior. 5083 5084Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 5085ExtendedInterrupt, and GpioInt descriptors. This change adds support to 5086both get and set the new wake bit in these descriptors, separately from 5087the existing share bit. Reported by Aaron Lu. 5088 5089Interpreter: Fix Store() when an implicit conversion is not possible. For 5090example, in the cases such as a store of a string to an existing package 5091object, implement the store as a CopyObject(). This is a small departure 5092from the ACPI specification which states that the control method should 5093be 5094aborted in this case. However, the ASLTS suite depends on this behavior. 5095 5096Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 5097macros: check if debug output is currently enabled as soon as possible to 5098minimize performance impact if debug is in fact not enabled. 5099 5100Source code restructuring: Cleanup to improve modularity. The following 5101new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 5102psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 5103Associated makefiles and project files have been updated. 5104 5105Changed an exception code for LoadTable operator. For the case where one 5106of the input strings is too long, change the returned exception code from 5107AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 5108 5109Fixed a possible memory leak in dispatcher error path. On error, delete 5110the mutex object created during method mutex creation. Reported by 5111tim.gardner@canonical.com. 5112 5113Example Code and Data Size: These are the sizes for the OS-independent 5114acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5115debug version of the code includes the debug output trace mechanism and 5116has a much larger code and data size. 5117 5118 Previous Release: 5119 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5120 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5121 Current Release: 5122 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5123 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5124 5125 51262) iASL Compiler/Disassembler and Tools: 5127 5128iASL: Disallow a method call as argument to the ObjectType ASL operator. 5129This change tracks an errata to the ACPI 5.0 document. The AML grammar 5130will not allow the interpreter to differentiate between a method and a 5131method invocation when these are used as an argument to the ObjectType 5132operator. The ACPI specification change is to disallow a method 5133invocation 5134(UserTerm) for the ObjectType operator. 5135 5136Finish support for the TPM2 and CSRT tables in the headers, table 5137compiler, and disassembler. 5138 5139Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 5140always expires immediately if the semaphore is not available. The 5141original 5142code was using a relative-time timeout, but sem_timedwait requires the 5143use 5144of an absolute time. 5145 5146iASL: Added a remark if the Timer() operator is used within a 32-bit 5147table. This operator returns a 64-bit time value that will be truncated 5148within a 32-bit table. 5149 5150iASL Source code restructuring: Cleanup to improve modularity. The 5151following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 5152aslmethod.c, and aslfileio.c. Associated makefiles and project files have 5153been updated. 5154 5155 5156---------------------------------------- 515714 November 2012. Summary of changes for version 20121114: 5158 51591) ACPICA Kernel-resident Subsystem: 5160 5161Implemented a performance enhancement for ACPI/AML Package objects. This 5162change greatly increases the performance of Package objects within the 5163interpreter. It changes the processing of reference counts for packages 5164by 5165optimizing for the most common case where the package sub-objects are 5166either Integers, Strings, or Buffers. Increases the overall performance 5167of 5168the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 51692X.) 5170Chao Guan. ACPICA BZ 943. 5171 5172Implemented and deployed common macros to extract flag bits from resource 5173descriptors. Improves readability and maintainability of the code. Fixes 5174a 5175problem with the UART serial bus descriptor for the number of data bits 5176flags (was incorrectly 2 bits, should be 3). 5177 5178Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 5179of the macros and changed the SETx macros to the style of (destination, 5180source). Also added ACPI_CASTx companion macros. Lv Zheng. 5181 5182Example Code and Data Size: These are the sizes for the OS-independent 5183acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5184debug version of the code includes the debug output trace mechanism and 5185has a much larger code and data size. 5186 5187 Previous Release: 5188 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5189 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5190 Current Release: 5191 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5192 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5193 5194 51952) iASL Compiler/Disassembler and Tools: 5196 5197Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 5198adds the ShareAndWake and ExclusiveAndWake flags which were added to the 5199Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 5200 5201Disassembler: Fixed a problem with external declaration generation. Fixes 5202a problem where an incorrect pathname could be generated for an external 5203declaration if the original reference to the object includes leading 5204carats (^). ACPICA BZ 984. 5205 5206Debugger: Completed a major update for the Disassemble<method> command. 5207This command was out-of-date and did not properly disassemble control 5208methods that had any reasonable complexity. This fix brings the command 5209up 5210to the same level as the rest of the disassembler. Adds one new file, 5211dmdeferred.c, which is existing code that is now common with the main 5212disassembler and the debugger disassemble command. ACPICA MZ 978. 5213 5214iASL: Moved the parser entry prototype to avoid a duplicate declaration. 5215Newer versions of Bison emit this prototype, so moved the prototype out 5216of 5217the iASL header to where it is actually used in order to avoid a 5218duplicate 5219declaration. 5220 5221iASL/Tools: Standardized use of the stream I/O functions: 5222 1) Ensure check for I/O error after every fopen/fread/fwrite 5223 2) Ensure proper order of size/count arguments for fread/fwrite 5224 3) Use test of (Actual != Requested) after all fwrite, and most fread 5225 4) Standardize I/O error messages 5226Improves reliability and maintainability of the code. Bob Moore, Lv 5227Zheng. 5228ACPICA BZ 981. 5229 5230Disassembler: Prevent duplicate External() statements. During generation 5231of external statements, detect similar pathnames that are actually 5232duplicates such as these: 5233 External (\ABCD) 5234 External (ABCD) 5235Remove all leading '\' characters from pathnames during the external 5236statement generation so that duplicates will be detected and tossed. 5237ACPICA BZ 985. 5238 5239Tools: Replace low-level I/O with stream I/O functions. Replace 5240open/read/write/close with the stream I/O equivalents 5241fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 5242Moore. 5243 5244AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 5245name header so that AcpiXtract recognizes the output file/table. 5246 5247iASL: Remove obsolete -2 option flag. Originally intended to force the 5248compiler/disassembler into an ACPI 2.0 mode, this was never implemented 5249and the entire concept is now obsolete. 5250 5251---------------------------------------- 525218 October 2012. Summary of changes for version 20121018: 5253 5254 52551) ACPICA Kernel-resident Subsystem: 5256 5257Updated support for the ACPI 5.0 MPST table. Fixes some problems 5258introduced by late changes to the table as it was added to the ACPI 5.0 5259specification. Includes header, disassembler, and data table compiler 5260support as well as a new version of the MPST template. 5261 5262AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 52635.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 5264methods: _HID, _CID, and _UID. 5265 5266Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 5267ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 5268name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 5269names for their various drivers. Affects the AcpiGetObjectInfo external 5270interface, and other internal interfaces as well. 5271 5272Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 5273This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 5274on machines that support non-aligned transfers. Optimizes for this case 5275rather than using a strncpy. With assistance from Zheng Lv. 5276 5277Resource Manager: Small fix for buffer size calculation. Fixed a one byte 5278error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 5279 5280Added a new debug print message for AML mutex objects that are force- 5281released. At control method termination, any currently acquired mutex 5282objects are force-released. Adds a new debug-only message for each one 5283that is released. 5284 5285Audited/updated all ACPICA return macros and the function debug depth 5286counter: 1) Ensure that all functions that use the various TRACE macros 5287also use the appropriate ACPICA return macros. 2) Ensure that all normal 5288return statements surround the return expression (value) with parens to 5289ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 5290Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 5291 5292Global source code changes/maintenance: All extra lines at the start and 5293end of each source file have been removed for consistency. Also, within 5294comments, all new sentences start with a single space instead of a double 5295space, again for consistency across the code base. 5296 5297Example Code and Data Size: These are the sizes for the OS-independent 5298acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5299debug version of the code includes the debug output trace mechanism and 5300has a much larger code and data size. 5301 5302 Previous Release: 5303 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5304 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5305 Current Release: 5306 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5307 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5308 5309 53102) iASL Compiler/Disassembler and Tools: 5311 5312AcpiExec: Improved the algorithm used for memory leak/corruption 5313detection. Added some intelligence to the code that maintains the global 5314list of allocated memory. The list is now ordered by allocated memory 5315address, significantly improving performance. When running AcpiExec on 5316the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 5317on the platform and/or the environment. Note, this performance 5318enhancement affects the AcpiExec utility only, not the kernel-resident 5319ACPICA code. 5320 5321Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 5322the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 5323incorrect table offset reported for invalid opcodes. Report the original 532432-bit value for bad ACPI_NAMEs (as well as the repaired name.) 5325 5326Disassembler: Enhanced the -vt option to emit the binary table data in 5327hex format to assist with debugging. 5328 5329Fixed a potential filename buffer overflow in osunixdir.c. Increased the 5330size of file structure. Colin Ian King. 5331 5332---------------------------------------- 533313 September 2012. Summary of changes for version 20120913: 5334 5335 53361) ACPICA Kernel-resident Subsystem: 5337 5338ACPI 5.0: Added two new notify types for the Hardware Error Notification 5339Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 5340and 5341MCE(6). 5342 5343Table Manager: Merged/removed duplicate code in the root table resize 5344functions. One function is external, the other is internal. Lv Zheng, 5345ACPICA 5346BZ 846. 5347 5348Makefiles: Completely removed the obsolete "Linux" makefiles under 5349acpica/generate/linux. These makefiles are obsolete and have been 5350replaced 5351by 5352the generic unix makefiles under acpica/generate/unix. 5353 5354Makefiles: Ensure that binary files always copied properly. Minor rule 5355change 5356to ensure that the final binary output files are always copied up to the 5357appropriate binary directory (bin32 or bin64.) 5358 5359Example Code and Data Size: These are the sizes for the OS-independent 5360acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5361debug 5362version of the code includes the debug output trace mechanism and has a 5363much 5364larger code and data size. 5365 5366 Previous Release: 5367 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5368 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5369 Current Release: 5370 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5371 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5372 5373 53742) iASL Compiler/Disassembler and Tools: 5375 5376Disassembler: Fixed a possible fault during the disassembly of resource 5377descriptors when a second parse is required because of the invocation of 5378external control methods within the table. With assistance from 5379adq@lidskialf.net. ACPICA BZ 976. 5380 5381iASL: Fixed a namepath optimization problem. An error can occur if the 5382parse 5383node that contains the namepath to be optimized does not have a parent 5384node 5385that is a named object. This change fixes the problem. 5386 5387iASL: Fixed a regression where the AML file is not deleted on errors. The 5388AML 5389output file should be deleted if there are any errors during the 5390compiler. 5391The 5392only exception is if the -f (force output) option is used. ACPICA BZ 974. 5393 5394iASL: Added a feature to automatically increase internal line buffer 5395sizes. 5396Via realloc(), automatically increase the internal line buffer sizes as 5397necessary to support very long source code lines. The current version of 5398the 5399preprocessor requires a buffer long enough to contain full source code 5400lines. 5401This change increases the line buffer(s) if the input lines go beyond the 5402current buffer size. This eliminates errors that occurred when a source 5403code 5404line was longer than the buffer. 5405 5406iASL: Fixed a problem with constant folding in method declarations. The 5407SyncLevel term is a ByteConstExpr, and incorrect code would be generated 5408if a 5409Type3 opcode was used. 5410 5411Debugger: Improved command help support. For incorrect argument count, 5412display 5413full help for the command. For help command itself, allow an argument to 5414specify a command. 5415 5416Test Suites: Several bug fixes for the ASLTS suite reduces the number of 5417errors during execution of the suite. Guan Chao. 5418 5419---------------------------------------- 542016 August 2012. Summary of changes for version 20120816: 5421 5422 54231) ACPICA Kernel-resident Subsystem: 5424 5425Removed all use of the deprecated _GTS and _BFS predefined methods. The 5426_GTS 5427(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 5428deprecated and will probably be removed from the ACPI specification. 5429Windows 5430does not invoke them, and reportedly never will. The final nail in the 5431coffin 5432is that the ACPI specification states that these methods must be run with 5433interrupts off, which is not going to happen in a kernel interpreter. 5434Note: 5435Linux has removed all use of the methods also. It was discovered that 5436invoking these functions caused failures on some machines, probably 5437because 5438they were never tested since Windows does not call them. Affects two 5439external 5440interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 5441ACPICA BZ 969. 5442 5443Implemented support for complex bit-packed buffers returned from the _PLD 5444(Physical Location of Device) predefined method. Adds a new external 5445interface, AcpiDecodePldBuffer that parses the buffer into a more usable 5446C 5447structure. Note: C Bitfields cannot be used for this type of predefined 5448structure since the memory layout of individual bitfields is not defined 5449by 5450the C language. In addition, there are endian concerns where a compiler 5451will 5452change the bitfield ordering based on the machine type. The new ACPICA 5453interface eliminates these issues, and should be called after _PLD is 5454executed. ACPICA BZ 954. 5455 5456Implemented a change to allow a scope change to root (via "Scope (\)") 5457during 5458execution of module-level ASL code (code that is executed at table load 5459time.) Lin Ming. 5460 5461Added the Windows8/Server2012 string for the _OSI method. This change 5462adds 5463a 5464new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 54652012. 5466 5467Added header support for the new ACPI tables DBG2 (Debug Port Table Type 54682) 5469and CSRT (Core System Resource Table). 5470 5471Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 5472names. This simplifies access to the buffers returned by these predefined 5473names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 5474 5475GPE support: Removed an extraneous parameter from the various low-level 5476internal GPE functions. Tang Feng. 5477 5478Removed the linux makefiles from the unix packages. The generate/linux 5479makefiles are obsolete and have been removed from the unix tarball 5480release 5481packages. The replacement makefiles are under generate/unix, and there is 5482a 5483top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 5484 5485Updates for Unix makefiles: 54861) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 54872) Update linker flags (move to end of command line) for AcpiExec 5488utility. 5489Guan Chao. 5490 5491Split ACPICA initialization functions to new file, utxfinit.c. Split from 5492utxface.c to improve modularity and reduce file size. 5493 5494Example Code and Data Size: These are the sizes for the OS-independent 5495acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5496debug version of the code includes the debug output trace mechanism and 5497has a 5498much larger code and data size. 5499 5500 Previous Release: 5501 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5502 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5503 Current Release: 5504 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5505 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5506 5507 55082) iASL Compiler/Disassembler and Tools: 5509 5510iASL: Fixed a problem with constant folding for fixed-length constant 5511expressions. The constant-folding code was not being invoked for constant 5512expressions that allow the use of type 3/4/5 opcodes to generate 5513constants 5514for expressions such as ByteConstExpr, WordConstExpr, etc. This could 5515result 5516in the generation of invalid AML bytecode. ACPICA BZ 970. 5517 5518iASL: Fixed a generation issue on newer versions of Bison. Newer versions 5519apparently automatically emit some of the necessary externals. This 5520change 5521handles these versions in order to eliminate generation warnings. 5522 5523Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 5524 5525Disassembler: Add support to decode _PLD buffers. The decoded buffer 5526appears 5527within comments in the output file. 5528 5529Debugger: Fixed a regression with the "Threads" command where 5530AE_BAD_PARAMETER was always returned. 5531 5532---------------------------------------- 553311 July 2012. Summary of changes for version 20120711: 5534 55351) ACPICA Kernel-resident Subsystem: 5536 5537Fixed a possible fault in the return package object repair code. Fixes a 5538problem that can occur when a lone package object is wrapped with an 5539outer 5540package object in order to force conformance to the ACPI specification. 5541Can 5542affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 5543_DLM, 5544_CSD, _PSD, _TSD. 5545 5546Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 5547PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 5548ARB_DIS bit must be implemented in the host-dependent C3 processor power 5549state 5550support. Note, ARB_DIS is obsolete and only applies to older chipsets, 5551both 5552Intel and other vendors. (for Intel: ICH4-M and earlier) 5553 5554This change removes the code to disable/enable bus master arbitration 5555during 5556suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 5557causes 5558resume problems on some machines. The change has been in use for over 5559seven 5560years within Linux. 5561 5562Implemented two new external interfaces to support host-directed dynamic 5563ACPI 5564table load and unload. They are intended to simplify the host 5565implementation 5566of hot-plug support: 5567 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 5568 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 5569table. 5570See the ACPICA reference for additional details. Adds one new file, 5571components/tables/tbxfload.c 5572 5573Implemented and deployed two new interfaces for errors and warnings that 5574are 5575known to be caused by BIOS/firmware issues: 5576 AcpiBiosError: Prints "ACPI Firmware Error" message. 5577 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 5578Deployed these new interfaces in the ACPICA Table Manager code for ACPI 5579table 5580and FADT errors. Additional deployment to be completed as appropriate in 5581the 5582future. The associated conditional macros are ACPI_BIOS_ERROR and 5583ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 5584ACPICA 5585BZ 5586843. 5587 5588Implicit notify support: ensure that no memory allocation occurs within a 5589critical region. This fix moves a memory allocation outside of the time 5590that a 5591spinlock is held. Fixes issues on systems that do not allow this 5592behavior. 5593Jung-uk Kim. 5594 5595Split exception code utilities and tables into a new file, 5596utilities/utexcep.c 5597 5598Example Code and Data Size: These are the sizes for the OS-independent 5599acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5600debug 5601version of the code includes the debug output trace mechanism and has a 5602much 5603larger code and data size. 5604 5605 Previous Release: 5606 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5607 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5608 Current Release: 5609 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5610 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5611 5612 56132) iASL Compiler/Disassembler and Tools: 5614 5615iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 5616of 56170. Jung-uk Kim. 5618 5619Debugger: Enhanced the "tables" command to emit additional information 5620about 5621the current set of ACPI tables, including the owner ID and flags decode. 5622 5623Debugger: Reimplemented the "unload" command to use the new 5624AcpiUnloadParentTable external interface. This command was disable 5625previously 5626due to need for an unload interface. 5627 5628AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 5629option 5630will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 5631 5632---------------------------------------- 563320 June 2012. Summary of changes for version 20120620: 5634 5635 56361) ACPICA Kernel-resident Subsystem: 5637 5638Implemented support to expand the "implicit notify" feature to allow 5639multiple 5640devices to be notified by a single GPE. This feature automatically 5641generates a 5642runtime device notification in the absence of a BIOS-provided GPE control 5643method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 5644notify is 5645provided by ACPICA for Windows compatibility, and is a workaround for 5646BIOS 5647AML 5648code errors. See the description of the AcpiSetupGpeForWake interface in 5649the 5650APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 5651 5652Changed some comments and internal function names to simplify and ensure 5653correctness of the Linux code translation. No functional changes. 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 5658version of the code includes the debug output trace mechanism and has a 5659much 5660larger code and data size. 5661 5662 Previous Release: 5663 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5664 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5665 Current Release: 5666 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5667 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5668 5669 56702) iASL Compiler/Disassembler and Tools: 5671 5672Disassembler: Added support to emit short, commented descriptions for the 5673ACPI 5674predefined names in order to improve the readability of the disassembled 5675output. ACPICA BZ 959. Changes include: 5676 1) Emit descriptions for all standard predefined names (_INI, _STA, 5677_PRW, 5678etc.) 5679 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 5680 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 5681etc.) 5682 5683AcpiSrc: Fixed several long-standing Linux code translation issues. 5684Argument 5685descriptions in function headers are now translated properly to lower 5686case 5687and 5688underscores. ACPICA BZ 961. Also fixes translation problems such as 5689these: 5690(old -> new) 5691 i_aSL -> iASL 5692 00-7_f -> 00-7F 5693 16_k -> 16K 5694 local_fADT -> local_FADT 5695 execute_oSI -> execute_OSI 5696 5697iASL: Fixed a problem where null bytes were inadvertently emitted into 5698some 5699listing files. 5700 5701iASL: Added the existing debug options to the standard help screen. There 5702are 5703no longer two different help screens. ACPICA BZ 957. 5704 5705AcpiHelp: Fixed some typos in the various predefined name descriptions. 5706Also 5707expand some of the descriptions where appropriate. 5708 5709iASL: Fixed the -ot option (display compile times/statistics). Was not 5710working 5711properly for standard output; only worked for the debug file case. 5712 5713---------------------------------------- 571418 May 2012. Summary of changes for version 20120518: 5715 5716 57171) ACPICA Core Subsystem: 5718 5719Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 5720defined 5721to block until asynchronous events such as notifies and GPEs have 5722completed. 5723Within ACPICA, it is only called before a notify or GPE handler is 5724removed/uninstalled. It also may be useful for the host OS within related 5725drivers such as the Embedded Controller driver. See the ACPICA reference 5726for 5727additional information. ACPICA BZ 868. 5728 5729ACPI Tables: Added a new error message for a possible overflow failure 5730during 5731the conversion of FADT 32-bit legacy register addresses to internal 5732common 573364- 5734bit GAS structure representation. The GAS has a one-byte "bit length" 5735field, 5736thus limiting the register length to 255 bits. ACPICA BZ 953. 5737 5738Example Code and Data Size: These are the sizes for the OS-independent 5739acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5740debug 5741version of the code includes the debug output trace mechanism and has a 5742much 5743larger code and data size. 5744 5745 Previous Release: 5746 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5747 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5748 Current Release: 5749 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5750 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5751 5752 57532) iASL Compiler/Disassembler and Tools: 5754 5755iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 5756macro. 5757This keyword was added late in the ACPI 5.0 release cycle and was not 5758implemented until now. 5759 5760Disassembler: Added support for Operation Region externals. Adds missing 5761support for operation regions that are defined in another table, and 5762referenced locally via a Field or BankField ASL operator. Now generates 5763the 5764correct External statement. 5765 5766Disassembler: Several additional fixes for the External() statement 5767generation 5768related to some ASL operators. Also, order the External() statements 5769alphabetically in the disassembler output. Fixes the External() 5770generation 5771for 5772the Create* field, Alias, and Scope operators: 5773 1) Create* buffer field operators - fix type mismatch warning on 5774disassembly 5775 2) Alias - implement missing External support 5776 3) Scope - fix to make sure all necessary externals are emitted. 5777 5778iASL: Improved pathname support. For include files, merge the prefix 5779pathname 5780with the file pathname and eliminate unnecessary components. Convert 5781backslashes in all pathnames to forward slashes, for readability. Include 5782file 5783pathname changes affect both #include and Include() type operators. 5784 5785iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 5786end 5787of a valid line by inserting a newline and then returning the EOF during 5788the 5789next call to GetNextLine. Prevents the line from being ignored due to EOF 5790condition. 5791 5792iASL: Implemented some changes to enhance the IDE support (-vi option.) 5793Error 5794and Warning messages are now correctly recognized for both the source 5795code 5796browser and the global error and warning counts. 5797 5798---------------------------------------- 579920 April 2012. Summary of changes for version 20120420: 5800 5801 58021) ACPICA Core Subsystem: 5803 5804Implemented support for multiple notify handlers. This change adds 5805support 5806to 5807allow multiple system and device notify handlers on Device, Thermal Zone, 5808and 5809Processor objects. This can simplify the host OS notification 5810implementation. 5811Also re-worked and restructured the entire notify support code to 5812simplify 5813handler installation, handler removal, notify event queuing, and notify 5814dispatch to handler(s). Note: there can still only be two global notify 5815handlers - one for system notifies and one for device notifies. There are 5816no 5817changes to the existing handler install/remove interfaces. Lin Ming, Bob 5818Moore, Rafael Wysocki. 5819 5820Fixed a regression in the package repair code where the object reference 5821count was calculated incorrectly. Regression was introduced in the commit 5822"Support to add Package wrappers". 5823 5824Fixed a couple possible memory leaks in the AML parser, in the error 5825recovery 5826path. Jesper Juhl, Lin Ming. 5827 5828Example Code and Data Size: These are the sizes for the OS-independent 5829acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5830debug version of the code includes the debug output trace mechanism and 5831has a 5832much larger code and data size. 5833 5834 Previous Release: 5835 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5836 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5837 Current Release: 5838 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5839 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5840 5841 58422) iASL Compiler/Disassembler and Tools: 5843 5844iASL: Fixed a problem with the resource descriptor support where the 5845length 5846of the StartDependentFn and StartDependentFnNoPrio descriptors were not 5847included in cumulative descriptor offset, resulting in incorrect values 5848for 5849resource tags within resource descriptors appearing after a 5850StartDependent* 5851descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 5852 5853iASL and Preprocessor: Implemented full support for the #line directive 5854to 5855correctly track original source file line numbers through the .i 5856preprocessor 5857output file - for error and warning messages. 5858 5859iASL: Expand the allowable byte constants for address space IDs. 5860Previously, 5861the allowable range was 0x80-0xFF (user-defined spaces), now the range is 58620x0A-0xFF to allow for custom and new IDs without changing the compiler. 5863 5864iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 5865 5866iASL: Add option to completely disable the preprocessor (-Pn). 5867 5868iASL: Now emit all error/warning messages to standard error (stderr) by 5869default (instead of the previous stdout). 5870 5871ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 5872Update 5873for resource descriptor offset fix above. Update/cleanup error output 5874routines. Enable and send iASL errors/warnings to an error logfile 5875(error.txt). Send all other iASL output to a logfile (compiler.txt). 5876Fixed 5877several extraneous "unrecognized operator" messages. 5878 5879---------------------------------------- 588020 March 2012. Summary of changes for version 20120320: 5881 5882 58831) ACPICA Core Subsystem: 5884 5885Enhanced the sleep/wake interfaces to optionally execute the _GTS method 5886(Going To Sleep) and the _BFS method (Back From Sleep). Windows 5887apparently 5888does not execute these methods, and therefore these methods are often 5889untested. It has been seen on some systems where the execution of these 5890methods causes errors and also prevents the machine from entering S5. It 5891is 5892therefore suggested that host operating systems do not execute these 5893methods 5894by default. In the future, perhaps these methods can be optionally 5895executed 5896based on the age of the system and/or what is the newest version of 5897Windows 5898that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 5899and 5900AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 5901Ming. 5902 5903Fixed a problem where the length of the local/common FADT was set too 5904early. 5905The local FADT table length cannot be set to the common length until the 5906original length has been examined. There is code that checks the table 5907length 5908and sets various fields appropriately. This can affect older machines 5909with 5910early FADT versions. For example, this can cause inadvertent writes to 5911the 5912CST_CNT register. Julian Anastasov. 5913 5914Fixed a mapping issue related to a physical table override. Use the 5915deferred 5916mapping mechanism for tables loaded via the physical override OSL 5917interface. 5918This allows for early mapping before the virtual memory manager is 5919available. 5920Thomas Renninger, Bob Moore. 5921 5922Enhanced the automatic return-object repair code: Repair a common problem 5923with 5924predefined methods that are defined to return a variable-length Package 5925of 5926sub-objects. If there is only one sub-object, some BIOS ASL code 5927mistakenly 5928simply returns the single object instead of a Package with one sub- 5929object. 5930This new support will repair this error by wrapping a Package object 5931around 5932the original object, creating the correct and expected Package with one 5933sub- 5934object. Names that can be repaired in this manner include: _ALR, _CSD, 5935_HPX, 5936_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 5937939. 5938 5939Changed the exception code returned for invalid ACPI paths passed as 5940parameters to external interfaces such as AcpiEvaluateObject. Was 5941AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 5942 5943Example Code and Data Size: These are the sizes for the OS-independent 5944acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5945debug 5946version of the code includes the debug output trace mechanism and has a 5947much 5948larger code and data size. 5949 5950 Previous Release: 5951 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5952 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5953 Current Release: 5954 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5955 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5956 5957 59582) iASL Compiler/Disassembler and Tools: 5959 5960iASL: Added the infrastructure and initial implementation of a integrated 5961C- 5962like preprocessor. This will simplify BIOS development process by 5963eliminating 5964the need for a separate preprocessing step during builds. On Windows, it 5965also 5966eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 5967features including full #define() macro support are still under 5968development. 5969These preprocessor directives are supported: 5970 #define 5971 #elif 5972 #else 5973 #endif 5974 #error 5975 #if 5976 #ifdef 5977 #ifndef 5978 #include 5979 #pragma message 5980 #undef 5981 #warning 5982In addition, these new command line options are supported: 5983 -D <symbol> Define symbol for preprocessor use 5984 -li Create preprocessed output file (*.i) 5985 -P Preprocess only and create preprocessor output file (*.i) 5986 5987Table Compiler: Fixed a problem where the equals operator within an 5988expression 5989did not work properly. 5990 5991Updated iASL to use the current versions of Bison/Flex. Updated the 5992Windows 5993project file to invoke these tools from the standard location. ACPICA BZ 5994904. 5995Versions supported: 5996 Flex for Windows: V2.5.4 5997 Bison for Windows: V2.4.1 5998 5999---------------------------------------- 600015 February 2012. Summary of changes for version 20120215: 6001 6002 60031) ACPICA Core Subsystem: 6004 6005There have been some major changes to the sleep/wake support code, as 6006described below (a - e). 6007 6008a) The AcpiLeaveSleepState has been split into two interfaces, similar to 6009AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 6010AcpiLeaveSleepStatePrep. This allows the host to perform actions between 6011the 6012time the _BFS method is called and the _WAK method is called. NOTE: all 6013hosts 6014must update their wake/resume code or else sleep/wake will not work 6015properly. 6016Rafael Wysocki. 6017 6018b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 6019_WAK 6020method. Some machines require that the GPEs are enabled before the _WAK 6021method 6022is executed. Thomas Renninger. 6023 6024c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 6025bit. 6026Some BIOS code assumes that WAK_STS will be cleared on resume and use it 6027to 6028determine whether the system is rebooting or resuming. Matthew Garrett. 6029 6030d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 6031Sleep) to 6032match the ACPI specification requirement. Rafael Wysocki. 6033 6034e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 6035registers within the V5 FADT. This support adds two new files: 6036hardware/hwesleep.c implements the support for the new registers. Moved 6037all 6038sleep/wake external interfaces to hardware/hwxfsleep.c. 6039 6040 6041Added a new OSL interface for ACPI table overrides, 6042AcpiOsPhysicalTableOverride. This interface allows the host to override a 6043table via a physical address, instead of the logical address required by 6044AcpiOsTableOverride. This simplifies the host implementation. Initial 6045implementation by Thomas Renninger. The ACPICA implementation creates a 6046single 6047shared function for table overrides that attempts both a logical and a 6048physical override. 6049 6050Expanded the OSL memory read/write interfaces to 64-bit data 6051(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 6052transfer support for GAS register structures passed to AcpiRead and 6053AcpiWrite. 6054 6055Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 6056custom 6057build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 6058model. 6059See the ACPICA reference for details. ACPICA BZ 942. This option removes 6060about 606110% of the code and 5% of the static data, and the following hardware 6062ACPI 6063features become unavailable: 6064 PM Event and Control registers 6065 SCI interrupt (and handler) 6066 Fixed Events 6067 General Purpose Events (GPEs) 6068 Global Lock 6069 ACPI PM timer 6070 FACS table (Waking vectors and Global Lock) 6071 6072Updated the unix tarball directory structure to match the ACPICA git 6073source 6074tree. This ensures that the generic unix makefiles work properly (in 6075generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 6076867. 6077 6078Updated the return value of the _REV predefined method to integer value 5 6079to 6080reflect ACPI 5.0 support. 6081 6082Moved the external ACPI PM timer interface prototypes to the public 6083acpixf.h 6084file where they belong. 6085 6086Example Code and Data Size: These are the sizes for the OS-independent 6087acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6088debug 6089version of the code includes the debug output trace mechanism and has a 6090much 6091larger code and data size. 6092 6093 Previous Release: 6094 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6095 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6096 Current Release: 6097 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6098 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6099 6100 61012) iASL Compiler/Disassembler and Tools: 6102 6103Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 6104descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 6105incorrectly displayed. 6106 6107AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 6108specification. 6109 6110---------------------------------------- 611111 January 2012. Summary of changes for version 20120111: 6112 6113 61141) ACPICA Core Subsystem: 6115 6116Implemented a new mechanism to allow host device drivers to check for 6117address 6118range conflicts with ACPI Operation Regions. Both SystemMemory and 6119SystemIO 6120address spaces are supported. A new external interface, 6121AcpiCheckAddressRange, 6122allows drivers to check an address range against the ACPI namespace. See 6123the 6124ACPICA reference for additional details. Adds one new file, 6125utilities/utaddress.c. Lin Ming, Bob Moore. 6126 6127Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 6128Control 6129and 6130Status registers, update the ACPI 5.0 flags, and update internal data 6131structures to handle an FADT larger than 256 bytes. The size of the ACPI 61325.0 6133FADT is 268 bytes. 6134 6135Updated all ACPICA copyrights and signons to 2012. Added the 2012 6136copyright to 6137all module headers and signons, including the standard Linux header. This 6138affects virtually every file in the ACPICA core subsystem, iASL compiler, 6139and 6140all ACPICA utilities. 6141 6142Example Code and Data Size: These are the sizes for the OS-independent 6143acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6144debug 6145version of the code includes the debug output trace mechanism and has a 6146much 6147larger code and data size. 6148 6149 Previous Release: 6150 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6151 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6152 Current Release: 6153 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6154 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6155 6156 61572) iASL Compiler/Disassembler and Tools: 6158 6159Disassembler: fixed a problem with the automatic resource tag generation 6160support. Fixes a problem where the resource tags are inadvertently not 6161constructed if the table being disassembled contains external references 6162to 6163control methods. Moved the actual construction of the tags to after the 6164final 6165namespace is constructed (after 2nd parse is invoked due to external 6166control 6167method references.) ACPICA BZ 941. 6168 6169Table Compiler: Make all "generic" operators caseless. These are the 6170operators 6171like UINT8, String, etc. Making these caseless improves ease-of-use. 6172ACPICA BZ 6173934. 6174 6175---------------------------------------- 617623 November 2011. Summary of changes for version 20111123: 6177 61780) ACPI 5.0 Support: 6179 6180This release contains full support for the ACPI 5.0 specification, as 6181summarized below. 6182 6183Reduced Hardware Support: 6184------------------------- 6185 6186This support allows for ACPI systems without the usual ACPI hardware. 6187This 6188support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 6189will 6190not attempt to initialize or use any of the usual ACPI hardware. Note, 6191when 6192this flag is set, all of the following ACPI hardware is assumed to be not 6193present and is not initialized or accessed: 6194 6195 General Purpose Events (GPEs) 6196 Fixed Events (PM1a/PM1b and PM Control) 6197 Power Management Timer and Console Buttons (power/sleep) 6198 Real-time Clock Alarm 6199 Global Lock 6200 System Control Interrupt (SCI) 6201 The FACS is assumed to be non-existent 6202 6203ACPI Tables: 6204------------ 6205 6206All new tables and updates to existing tables are fully supported in the 6207ACPICA headers (for use by device drivers), the disassembler, and the 6208iASL 6209Data Table Compiler. ACPI 5.0 defines these new tables: 6210 6211 BGRT /* Boot Graphics Resource Table */ 6212 DRTM /* Dynamic Root of Trust for Measurement table */ 6213 FPDT /* Firmware Performance Data Table */ 6214 GTDT /* Generic Timer Description Table */ 6215 MPST /* Memory Power State Table */ 6216 PCCT /* Platform Communications Channel Table */ 6217 PMTT /* Platform Memory Topology Table */ 6218 RASF /* RAS Feature table */ 6219 6220Operation Regions/SpaceIDs: 6221--------------------------- 6222 6223All new operation regions are fully supported by the iASL compiler, the 6224disassembler, and the ACPICA runtime code (for dispatch to region 6225handlers.) 6226The new operation region Space IDs are: 6227 6228 GeneralPurposeIo 6229 GenericSerialBus 6230 6231Resource Descriptors: 6232--------------------- 6233 6234All new ASL resource descriptors are fully supported by the iASL 6235compiler, 6236the 6237ASL/AML disassembler, and the ACPICA runtime Resource Manager code 6238(including 6239all new predefined resource tags). New descriptors are: 6240 6241 FixedDma 6242 GpioIo 6243 GpioInt 6244 I2cSerialBus 6245 SpiSerialBus 6246 UartSerialBus 6247 6248ASL/AML Operators, New and Modified: 6249------------------------------------ 6250 6251One new operator is added, the Connection operator, which is used to 6252associate 6253a GeneralPurposeIo or GenericSerialBus resource descriptor with 6254individual 6255field objects within an operation region. Several new protocols are 6256associated 6257with the AccessAs operator. All are fully supported by the iASL compiler, 6258disassembler, and runtime ACPICA AML interpreter: 6259 6260 Connection // Declare Field Connection 6261attributes 6262 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 6263 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 6264Protocol 6265 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 6266 RawDataBuffer // Data type for Vendor Data 6267fields 6268 6269Predefined ASL/AML Objects: 6270--------------------------- 6271 6272All new predefined objects/control-methods are supported by the iASL 6273compiler 6274and the ACPICA runtime validation/repair (arguments and return values.) 6275New 6276predefined names include the following: 6277 6278Standard Predefined Names (Objects or Control Methods): 6279 _AEI, _CLS, _CPC, _CWS, _DEP, 6280 _DLM, _EVT, _GCP, _CRT, _GWS, 6281 _HRV, _PRE, _PSE, _SRT, _SUB. 6282 6283Resource Tags (Names used to access individual fields within resource 6284descriptors): 6285 _DBT, _DPL, _DRS, _END, _FLC, 6286 _IOR, _LIN, _MOD, _PAR, _PHA, 6287 _PIN, _PPI, _POL, _RXL, _SLV, 6288 _SPE, _STB, _TXL, _VEN. 6289 6290ACPICA External Interfaces: 6291--------------------------- 6292 6293Several new interfaces have been defined for use by ACPI-related device 6294drivers and other host OS services: 6295 6296AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 6297to 6298acquire and release AML mutexes that are defined in the DSDT/SSDT tables 6299provided by the BIOS. They are intended to be used in conjunction with 6300the 6301ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 6302mutual exclusion with the AML code/interpreter. 6303 6304AcpiGetEventResources: Returns the (formatted) resource descriptors as 6305defined 6306by the ACPI 5.0 _AEI object (ACPI Event Information). This object 6307provides 6308resource descriptors associated with hardware-reduced platform events, 6309similar 6310to the AcpiGetCurrentResources interface. 6311 6312Operation Region Handlers: For General Purpose IO and Generic Serial Bus 6313operation regions, information about the Connection() object and any 6314optional 6315length information is passed to the region handler within the Context 6316parameter. 6317 6318AcpiBufferToResource: This interface converts a raw AML buffer containing 6319a 6320resource template or resource descriptor to the ACPI_RESOURCE internal 6321format 6322suitable for use by device drivers. Can be used by an operation region 6323handler 6324to convert the Connection() buffer object into a ACPI_RESOURCE. 6325 6326Miscellaneous/Tools/TestSuites: 6327------------------------------- 6328 6329Support for extended _HID names (Four alpha characters instead of three). 6330Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 6331Support for ACPI 5.0 features in the ASLTS test suite. 6332Fully updated documentation (ACPICA and iASL reference documents.) 6333 6334ACPI Table Definition Language: 6335------------------------------- 6336 6337Support for this language was implemented and released as a subsystem of 6338the 6339iASL compiler in 2010. (See the iASL compiler User Guide.) 6340 6341 6342Non-ACPI 5.0 changes for this release: 6343-------------------------------------- 6344 63451) ACPICA Core Subsystem: 6346 6347Fix a problem with operation region declarations where a failure can 6348occur 6349if 6350the region name and an argument that evaluates to an object (such as the 6351region address) are in different namespace scopes. Lin Ming, ACPICA BZ 6352937. 6353 6354Do not abort an ACPI table load if an invalid space ID is found within. 6355This 6356will be caught later if the offending method is executed. ACPICA BZ 925. 6357 6358Fixed an issue with the FFixedHW space ID where the ID was not always 6359recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 6360 6361Fixed a problem with the 32-bit generation of the unix-specific OSL 6362(osunixxf.c). Lin Ming, ACPICA BZ 936. 6363 6364Several changes made to enable generation with the GCC 4.6 compiler. 6365ACPICA BZ 6366935. 6367 6368New error messages: Unsupported I/O requests (not 8/16/32 bit), and 6369Index/Bank 6370field registers out-of-range. 6371 63722) iASL Compiler/Disassembler and Tools: 6373 6374iASL: Implemented the __PATH__ operator, which returns the full pathname 6375of 6376the current source file. 6377 6378AcpiHelp: Automatically display expanded keyword information for all ASL 6379operators. 6380 6381Debugger: Add "Template" command to disassemble/dump resource template 6382buffers. 6383 6384Added a new master script to generate and execute the ASLTS test suite. 6385Automatically handles 32- and 64-bit generation. See tests/aslts.sh 6386 6387iASL: Fix problem with listing generation during processing of the 6388Switch() 6389operator where AML listing was disabled until the entire Switch block was 6390completed. 6391 6392iASL: Improve support for semicolon statement terminators. Fix "invalid 6393character" message for some cases when the semicolon is used. Semicolons 6394are 6395now allowed after every <Term> grammar element. ACPICA BZ 927. 6396 6397iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 6398923. 6399 6400Disassembler: Fix problem with disassembly of the DataTableRegion 6401operator 6402where an inadvertent "Unhandled deferred opcode" message could be 6403generated. 6404 64053) Example Code and Data Size 6406 6407These are the sizes for the OS-independent acpica.lib produced by the 6408Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6409includes the debug output trace mechanism and has a much larger code and 6410data 6411size. 6412 6413 Previous Release: 6414 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6415 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6416 Current Release: 6417 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6418 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6419 6420---------------------------------------- 642122 September 2011. Summary of changes for version 20110922: 6422 64230) ACPI 5.0 News: 6424 6425Support for ACPI 5.0 in ACPICA has been underway for several months and 6426will 6427be released at the same time that ACPI 5.0 is officially released. 6428 6429The ACPI 5.0 specification is on track for release in the next few 6430months. 6431 64321) ACPICA Core Subsystem: 6433 6434Fixed a problem where the maximum sleep time for the Sleep() operator was 6435intended to be limited to two seconds, but was inadvertently limited to 643620 6437seconds instead. 6438 6439Linux and Unix makefiles: Added header file dependencies to ensure 6440correct 6441generation of ACPICA core code and utilities. Also simplified the 6442makefiles 6443considerably through the use of the vpath variable to specify search 6444paths. 6445ACPICA BZ 924. 6446 64472) iASL Compiler/Disassembler and Tools: 6448 6449iASL: Implemented support to check the access length for all fields 6450created to 6451access named Resource Descriptor fields. For example, if a resource field 6452is 6453defined to be two bits, a warning is issued if a CreateXxxxField() is 6454used 6455with an incorrect bit length. This is implemented for all current 6456resource 6457descriptor names. ACPICA BZ 930. 6458 6459Disassembler: Fixed a byte ordering problem with the output of 24-bit and 646056- 6461bit integers. 6462 6463iASL: Fixed a couple of issues associated with variable-length package 6464objects. 1) properly handle constants like One, Ones, Zero -- do not make 6465a 6466VAR_PACKAGE when these are used as a package length. 2) Allow the 6467VAR_PACKAGE 6468opcode (in addition to PACKAGE) when validating object types for 6469predefined 6470names. 6471 6472iASL: Emit statistics for all output files (instead of just the ASL input 6473and 6474AML output). Includes listings, hex files, etc. 6475 6476iASL: Added -G option to the table compiler to allow the compilation of 6477custom 6478ACPI tables. The only part of a table that is required is the standard 647936- 6480byte 6481ACPI header. 6482 6483AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 6484headers), 6485which also adds correct 64-bit support. Also, now all output filenames 6486are 6487completely lower case. 6488 6489AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 6490loading table files. A warning is issued for any such tables. The only 6491exception is an FADT. This also fixes a possible fault when attempting to 6492load 6493non-AML tables. ACPICA BZ 932. 6494 6495AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 6496a 6497missing table terminator could cause a fault when using the -p option. 6498 6499AcpiSrc: Fixed a possible divide-by-zero fault when generating file 6500statistics. 6501 65023) Example Code and Data Size 6503 6504These are the sizes for the OS-independent acpica.lib produced by the 6505Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6506includes the debug output trace mechanism and has a much larger code and 6507data 6508size. 6509 6510 Previous Release (VC 9.0): 6511 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6512 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6513 Current Release (VC 9.0): 6514 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6515 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6516 6517 6518---------------------------------------- 651923 June 2011. Summary of changes for version 20110623: 6520 65211) ACPI CA Core Subsystem: 6522 6523Updated the predefined name repair mechanism to not attempt repair of a 6524_TSS 6525return object if a _PSS object is present. We can only sort the _TSS 6526return 6527package if there is no _PSS within the same scope. This is because if 6528_PSS 6529is 6530present, the ACPI specification dictates that the _TSS Power Dissipation 6531field 6532is to be ignored, and therefore some BIOSs leave garbage values in the 6533_TSS 6534Power field(s). In this case, it is best to just return the _TSS package 6535as- 6536is. Reported by, and fixed with assistance from Fenghua Yu. 6537 6538Added an option to globally disable the control method return value 6539validation 6540and repair. This runtime option can be used to disable return value 6541repair 6542if 6543this is causing a problem on a particular machine. Also added an option 6544to 6545AcpiExec (-dr) to set this disable flag. 6546 6547All makefiles and project files: Major changes to improve generation of 6548ACPICA 6549tools. ACPICA BZ 912: 6550 Reduce default optimization levels to improve compatibility 6551 For Linux, add strict-aliasing=0 for gcc 4 6552 Cleanup and simplify use of command line defines 6553 Cleanup multithread library support 6554 Improve usage messages 6555 6556Linux-specific header: update handling of THREAD_ID and pthread. For the 655732- 6558bit case, improve casting to eliminate possible warnings, especially with 6559the 6560acpica tools. 6561 6562Example Code and Data Size: These are the sizes for the OS-independent 6563acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6564debug 6565version of the code includes the debug output trace mechanism and has a 6566much 6567larger code and data size. 6568 6569 Previous Release (VC 9.0): 6570 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6571 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6572 Current Release (VC 9.0): 6573 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6574 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6575 65762) iASL Compiler/Disassembler and Tools: 6577 6578With this release, a new utility named "acpihelp" has been added to the 6579ACPICA 6580package. This utility summarizes the ACPI specification chapters for the 6581ASL 6582and AML languages. It generates under Linux/Unix as well as Windows, and 6583provides the following functionality: 6584 Find/display ASL operator(s) -- with description and syntax. 6585 Find/display ASL keyword(s) -- with exact spelling and descriptions. 6586 Find/display ACPI predefined name(s) -- with description, number 6587 of arguments, and the return value data type. 6588 Find/display AML opcode name(s) -- with opcode, arguments, and 6589grammar. 6590 Decode/display AML opcode -- with opcode name, arguments, and 6591grammar. 6592 6593Service Layers: Make multi-thread support configurable. Conditionally 6594compile 6595the multi-thread support so that threading libraries will not be linked 6596if 6597not 6598necessary. The only tool that requires multi-thread support is AcpiExec. 6599 6600iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 6601of 6602Bison appear to want the interface to yyerror to be a const char * (or at 6603least this is a problem when generating iASL on some systems.) ACPICA BZ 6604923 6605Pierre Lejeune. 6606 6607Tools: Fix for systems where O_BINARY is not defined. Only used for 6608Windows 6609versions of the tools. 6610 6611---------------------------------------- 661227 May 2011. Summary of changes for version 20110527: 6613 66141) ACPI CA Core Subsystem: 6615 6616ASL Load() operator: Reinstate most restrictions on the incoming ACPI 6617table 6618signature. Now, only allow SSDT, OEMx, and a null signature. History: 6619 1) Originally, we checked the table signature for "SSDT" or "PSDT". 6620 (PSDT is now obsolete.) 6621 2) We added support for OEMx tables, signature "OEM" plus a fourth 6622 "don't care" character. 6623 3) Valid tables were encountered with a null signature, so we just 6624 gave up on validating the signature, (05/2008). 6625 4) We encountered non-AML tables such as the MADT, which caused 6626 interpreter errors and kernel faults. So now, we once again allow 6627 only SSDT, OEMx, and now, also a null signature. (05/2011). 6628 6629Added the missing _TDL predefined name to the global name list in order 6630to 6631enable validation. Affects both the core ACPICA code and the iASL 6632compiler. 6633 6634Example Code and Data Size: These are the sizes for the OS-independent 6635acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6636debug 6637version of the code includes the debug output trace mechanism and has a 6638much 6639larger code and data size. 6640 6641 Previous Release (VC 9.0): 6642 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6643 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6644 Current Release (VC 9.0): 6645 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6646 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6647 66482) iASL Compiler/Disassembler and Tools: 6649 6650Debugger/AcpiExec: Implemented support for "complex" method arguments on 6651the 6652debugger command line. This adds support beyond simple integers -- 6653including 6654Strings, Buffers, and Packages. Includes support for nested packages. 6655Increased the default command line buffer size to accommodate these 6656arguments. 6657See the ACPICA reference for details and syntax. ACPICA BZ 917. 6658 6659Debugger/AcpiExec: Implemented support for "default" method arguments for 6660the 6661Execute/Debug command. Now, the debugger will always invoke a control 6662method 6663with the required number of arguments -- even if the command line 6664specifies 6665none or insufficient arguments. It uses default integer values for any 6666missing 6667arguments. Also fixes a bug where only six method arguments maximum were 6668supported instead of the required seven. 6669 6670Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 6671and 6672also return status in order to prevent buffer overruns. See the ACPICA 6673reference for details and syntax. ACPICA BZ 921 6674 6675iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 6676makefiles to simplify support for the two different but similar parser 6677generators, bison and yacc. 6678 6679Updated the generic unix makefile for gcc 4. The default gcc version is 6680now 6681expected to be 4 or greater, since options specific to gcc 4 are used. 6682 6683---------------------------------------- 668413 April 2011. Summary of changes for version 20110413: 6685 66861) ACPI CA Core Subsystem: 6687 6688Implemented support to execute a so-called "orphan" _REG method under the 6689EC 6690device. This change will force the execution of a _REG method underneath 6691the 6692EC 6693device even if there is no corresponding operation region of type 6694EmbeddedControl. Fixes a problem seen on some machines and apparently is 6695compatible with Windows behavior. ACPICA BZ 875. 6696 6697Added more predefined methods that are eligible for automatic NULL 6698package 6699element removal. This change adds another group of predefined names to 6700the 6701list 6702of names that can be repaired by having NULL package elements dynamically 6703removed. This group are those methods that return a single variable- 6704length 6705package containing simple data types such as integers, buffers, strings. 6706This 6707includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 6708_PSL, 6709_Sx, 6710and _TZD. ACPICA BZ 914. 6711 6712Split and segregated all internal global lock functions to a new file, 6713evglock.c. 6714 6715Updated internal address SpaceID for DataTable regions. Moved this 6716internal 6717space 6718id in preparation for ACPI 5.0 changes that will include some new space 6719IDs. 6720This 6721change should not affect user/host code. 6722 6723Example Code and Data Size: These are the sizes for the OS-independent 6724acpica.lib 6725produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6726version of 6727the code includes the debug output trace mechanism and has a much larger 6728code 6729and 6730data size. 6731 6732 Previous Release (VC 9.0): 6733 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6734 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6735 Current Release (VC 9.0): 6736 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6737 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6738 67392) iASL Compiler/Disassembler and Tools: 6740 6741iASL/DTC: Major update for new grammar features. Allow generic data types 6742in 6743custom ACPI tables. Field names are now optional. Any line can be split 6744to 6745multiple lines using the continuation char (\). Large buffers now use 6746line- 6747continuation character(s) and no colon on the continuation lines. See the 6748grammar 6749update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 6750Moore. 6751 6752iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 6753statements. 6754Since the parser stuffs a "zero" as the return value for these statements 6755(due 6756to 6757the underlying AML grammar), they were seen as "return with value" by the 6758iASL 6759semantic checking. They are now seen correctly as "null" return 6760statements. 6761 6762iASL: Check if a_REG declaration has a corresponding Operation Region. 6763Adds a 6764check for each _REG to ensure that there is in fact a corresponding 6765operation 6766region declaration in the same scope. If not, the _REG method is not very 6767useful 6768since it probably won't be executed. ACPICA BZ 915. 6769 6770iASL/DTC: Finish support for expression evaluation. Added a new 6771expression 6772parser 6773that implements c-style operator precedence and parenthesization. ACPICA 6774bugzilla 6775908. 6776 6777Disassembler/DTC: Remove support for () and <> style comments in data 6778tables. 6779Now 6780that DTC has full expression support, we don't want to have comment 6781strings 6782that 6783start with a parentheses or a less-than symbol. Now, only the standard /* 6784and 6785// 6786comments are supported, as well as the bracket [] comments. 6787 6788AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 6789"unusual" 6790headers in the acpidump file. Update the header validation to support 6791these 6792tables. Problem introduced in previous AcpiXtract version in the change 6793to 6794support "wrong checksum" error messages emitted by acpidump utility. 6795 6796iASL: Add a * option to generate all template files (as a synonym for 6797ALL) 6798as 6799in 6800"iasl -T *" or "iasl -T ALL". 6801 6802iASL/DTC: Do not abort compiler on fatal errors. We do not want to 6803completely 6804abort the compiler on "fatal" errors, simply should abort the current 6805compile. 6806This allows multiple compiles with a single (possibly wildcard) compiler 6807invocation. 6808 6809---------------------------------------- 681016 March 2011. Summary of changes for version 20110316: 6811 68121) ACPI CA Core Subsystem: 6813 6814Fixed a problem caused by a _PRW method appearing at the namespace root 6815scope 6816during the setup of wake GPEs. A fault could occur if a _PRW directly 6817under 6818the 6819root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 6820 6821Implemented support for "spurious" Global Lock interrupts. On some 6822systems, a 6823global lock interrupt can occur without the pending flag being set. Upon 6824a 6825GL 6826interrupt, we now ensure that a thread is actually waiting for the lock 6827before 6828signaling GL availability. Rafael Wysocki, Bob Moore. 6829 6830Example Code and Data Size: These are the sizes for the OS-independent 6831acpica.lib 6832produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6833version of 6834the code includes the debug output trace mechanism and has a much larger 6835code 6836and 6837data size. 6838 6839 Previous Release (VC 9.0): 6840 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6841 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6842 Current Release (VC 9.0): 6843 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6844 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6845 68462) iASL Compiler/Disassembler and Tools: 6847 6848Implemented full support for the "SLIC" ACPI table. Includes support in 6849the 6850header files, disassembler, table compiler, and template generator. Bob 6851Moore, 6852Lin Ming. 6853 6854AcpiXtract: Correctly handle embedded comments and messages from 6855AcpiDump. 6856Apparently some or all versions of acpidump will occasionally emit a 6857comment 6858like 6859"Wrong checksum", etc., into the dump file. This was causing problems for 6860AcpiXtract. ACPICA BZ 905. 6861 6862iASL: Fix the Linux makefile by removing an inadvertent double file 6863inclusion. 6864ACPICA BZ 913. 6865 6866AcpiExec: Update installation of operation region handlers. Install one 6867handler 6868for a user-defined address space. This is used by the ASL test suite 6869(ASLTS). 6870 6871---------------------------------------- 687211 February 2011. Summary of changes for version 20110211: 6873 68741) ACPI CA Core Subsystem: 6875 6876Added a mechanism to defer _REG methods for some early-installed 6877handlers. 6878Most user handlers should be installed before call to 6879AcpiEnableSubsystem. 6880However, Event handlers and region handlers should be installed after 6881AcpiInitializeObjects. Override handlers for the "default" regions should 6882be 6883installed early, however. This change executes all _REG methods for the 6884default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 6885chicken/egg issues between them. ACPICA BZ 848. 6886 6887Implemented an optimization for GPE detection. This optimization will 6888simply 6889ignore GPE registers that contain no enabled GPEs -- there is no need to 6890read the register since this information is available internally. This 6891becomes more important on machines with a large GPE space. ACPICA 6892bugzilla 6893884. Lin Ming. Suggestion from Joe Liu. 6894 6895Removed all use of the highly unreliable FADT revision field. The 6896revision 6897number in the FADT has been found to be completely unreliable and cannot 6898be 6899trusted. Only the actual table length can be used to infer the version. 6900This 6901change updates the ACPICA core and the disassembler so that both no 6902longer 6903even look at the FADT version and instead depend solely upon the FADT 6904length. 6905 6906Fix an unresolved name issue for the no-debug and no-error-message source 6907generation cases. The _AcpiModuleName was left undefined in these cases, 6908but 6909it is actually needed as a parameter to some interfaces. Define 6910_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 6911 6912Split several large files (makefiles and project files updated) 6913 utglobal.c -> utdecode.c 6914 dbcomds.c -> dbmethod.c dbnames.c 6915 dsopcode.c -> dsargs.c dscontrol.c 6916 dsload.c -> dsload2.c 6917 aslanalyze.c -> aslbtypes.c aslwalks.c 6918 6919Example Code and Data Size: These are the sizes for the OS-independent 6920acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6921debug version of the code includes the debug output trace mechanism and 6922has 6923a much larger code and data size. 6924 6925 Previous Release (VC 9.0): 6926 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6927 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6928 Current Release (VC 9.0): 6929 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6930 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6931 69322) iASL Compiler/Disassembler and Tools: 6933 6934iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 6935These are useful C-style macros with the standard definitions. ACPICA 6936bugzilla 898. 6937 6938iASL/DTC: Added support for integer expressions and labels. Support for 6939full 6940expressions for all integer fields in all ACPI tables. Support for labels 6941in 6942"generic" portions of tables such as UEFI. See the iASL reference manual. 6943 6944Debugger: Added a command to display the status of global handlers. The 6945"handlers" command will display op region, fixed event, and miscellaneous 6946global handlers. installation status -- and for op regions, whether 6947default 6948or user-installed handler will be used. 6949 6950iASL: Warn if reserved method incorrectly returns a value. Many 6951predefined 6952names are defined such that they do not return a value. If implemented as 6953a 6954method, issue a warning if such a name explicitly returns a value. ACPICA 6955Bugzilla 855. 6956 6957iASL: Added detection of GPE method name conflicts. Detects a conflict 6958where 6959there are two GPE methods of the form _Lxy and _Exy in the same scope. 6960(For 6961example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 6962 6963iASL/DTC: Fixed a couple input scanner issues with comments and line 6964numbers. Comment remover could get confused and miss a comment ending. 6965Fixed 6966a problem with line counter maintenance. 6967 6968iASL/DTC: Reduced the severity of some errors from fatal to error. There 6969is 6970no need to abort on simple errors within a field definition. 6971 6972Debugger: Simplified the output of the help command. All help output now 6973in 6974a single screen, instead of help subcommands. ACPICA Bugzilla 897. 6975 6976---------------------------------------- 697712 January 2011. Summary of changes for version 20110112: 6978 69791) ACPI CA Core Subsystem: 6980 6981Fixed a race condition between method execution and namespace walks that 6982can 6983possibly cause a fault. The problem was apparently introduced in version 698420100528 as a result of a performance optimization that reduces the 6985number 6986of 6987namespace walks upon method exit by using the delete_namespace_subtree 6988function instead of the delete_namespace_by_owner function used 6989previously. 6990Bug is a missing namespace lock in the delete_namespace_subtree function. 6991dana.myers@oracle.com 6992 6993Fixed several issues and a possible fault with the automatic "serialized" 6994method support. History: This support changes a method to "serialized" on 6995the 6996fly if the method generates an AE_ALREADY_EXISTS error, indicating the 6997possibility that it cannot handle reentrancy. This fix repairs a couple 6998of 6999issues seen in the field, especially on machines with many cores: 7000 7001 1) Delete method children only upon the exit of the last thread, 7002 so as to not delete objects out from under other running threads 7003 (and possibly causing a fault.) 7004 2) Set the "serialized" bit for the method only upon the exit of the 7005 Last thread, so as to not cause deadlock when running threads 7006 attempt to exit. 7007 3) Cleanup the use of the AML "MethodFlags" and internal method flags 7008 so that there is no longer any confusion between the two. 7009 7010 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 7011 7012Debugger: Now lock the namespace for duration of a namespace dump. 7013Prevents 7014issues if the namespace is changing dynamically underneath the debugger. 7015Especially affects temporary namespace nodes, since the debugger displays 7016these also. 7017 7018Updated the ordering of include files. The ACPICA headers should appear 7019before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 7020set 7021any necessary compiler-specific defines, etc. Affects the ACPI-related 7022tools 7023and utilities. 7024 7025Updated all ACPICA copyrights and signons to 2011. Added the 2011 7026copyright 7027to all module headers and signons, including the Linux header. This 7028affects 7029virtually every file in the ACPICA core subsystem, iASL compiler, and all 7030utilities. 7031 7032Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 7033project files for VC++ 6.0 are now obsolete. New project files can be 7034found 7035under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 7036details. 7037 7038Example Code and Data Size: These are the sizes for the OS-independent 7039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7040debug version of the code includes the debug output trace mechanism and 7041has a 7042much larger code and data size. 7043 7044 Previous Release (VC 6.0): 7045 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7046 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7047 Current Release (VC 9.0): 7048 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7049 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7050 70512) iASL Compiler/Disassembler and Tools: 7052 7053iASL: Added generic data types to the Data Table compiler. Add "generic" 7054data 7055types such as UINT32, String, Unicode, etc., to simplify the generation 7056of 7057platform-defined tables such as UEFI. Lin Ming. 7058 7059iASL: Added listing support for the Data Table Compiler. Adds listing 7060support 7061(-l) to display actual binary output for each line of input code. 7062 7063---------------------------------------- 706409 December 2010. Summary of changes for version 20101209: 7065 70661) ACPI CA Core Subsystem: 7067 7068Completed the major overhaul of the GPE support code that was begun in 7069July 70702010. Major features include: removal of _PRW execution in ACPICA (host 7071executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 7072changes to existing interfaces, simplification of GPE handler operation, 7073and 7074a handful of new interfaces: 7075 7076 AcpiUpdateAllGpes 7077 AcpiFinishGpe 7078 AcpiSetupGpeForWake 7079 AcpiSetGpeWakeMask 7080 One new file, evxfgpe.c to consolidate all external GPE interfaces. 7081 7082See the ACPICA Programmer Reference for full details and programming 7083information. See the new section 4.4 "General Purpose Event (GPE) 7084Support" 7085for a full overview, and section 8.7 "ACPI General Purpose Event 7086Management" 7087for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 7088Ming, 7089Bob Moore, Rafael Wysocki. 7090 7091Implemented a new GPE feature for Windows compatibility, the "Implicit 7092Wake 7093GPE Notify". This feature will automatically issue a Notify(2) on a 7094device 7095when a Wake GPE is received if there is no corresponding GPE method or 7096handler. ACPICA BZ 870. 7097 7098Fixed a problem with the Scope() operator during table parse and load 7099phase. 7100During load phase (table load or method execution), the scope operator 7101should 7102not enter the target into the namespace. Instead, it should open a new 7103scope 7104at the target location. Linux BZ 19462, ACPICA BZ 882. 7105 7106Example Code and Data Size: These are the sizes for the OS-independent 7107acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7108debug version of the code includes the debug output trace mechanism and 7109has a 7110much larger code and data size. 7111 7112 Previous Release: 7113 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7114 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7115 Current Release: 7116 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7117 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7118 71192) iASL Compiler/Disassembler and Tools: 7120 7121iASL: Relax the alphanumeric restriction on _CID strings. These strings 7122are 7123"bus-specific" per the ACPI specification, and therefore any characters 7124are 7125acceptable. The only checks that can be performed are for a null string 7126and 7127perhaps for a leading asterisk. ACPICA BZ 886. 7128 7129iASL: Fixed a problem where a syntax error that caused a premature EOF 7130condition on the source file emitted a very confusing error message. The 7131premature EOF is now detected correctly. ACPICA BZ 891. 7132 7133Disassembler: Decode the AccessSize within a Generic Address Structure 7134(byte 7135access, word access, etc.) Note, this field does not allow arbitrary bit 7136access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 7137 7138New: AcpiNames utility - Example namespace dump utility. Shows an example 7139of 7140ACPICA configuration for a minimal namespace dump utility. Uses table and 7141namespace managers, but no AML interpreter. Does not add any 7142functionality 7143over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 7144partition and configure ACPICA. ACPICA BZ 883. 7145 7146AML Debugger: Increased the debugger buffer size for method return 7147objects. 7148Was 4K, increased to 16K. Also enhanced error messages for debugger 7149method 7150execution, including the buffer overflow case. 7151 7152---------------------------------------- 715313 October 2010. Summary of changes for version 20101013: 7154 71551) ACPI CA Core Subsystem: 7156 7157Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 7158now 7159clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 7160HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 7161 7162Changed the type of the predefined namespace object _TZ from ThermalZone 7163to 7164Device. This was found to be confusing to the host software that 7165processes 7166the various thermal zones, since _TZ is not really a ThermalZone. 7167However, 7168a 7169Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 7170Zhang. 7171 7172Added Windows Vista SP2 to the list of supported _OSI strings. The actual 7173string is "Windows 2006 SP2". 7174 7175Eliminated duplicate code in AcpiUtExecute* functions. Now that the 7176nsrepair 7177code automatically repairs _HID-related strings, this type of code is no 7178longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 7179878. 7180 7181Example Code and Data Size: These are the sizes for the OS-independent 7182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7183debug version of the code includes the debug output trace mechanism and 7184has a 7185much larger code and data size. 7186 7187 Previous Release: 7188 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7189 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7190 Current Release: 7191 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7192 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7193 71942) iASL Compiler/Disassembler and Tools: 7195 7196iASL: Implemented additional compile-time validation for _HID strings. 7197The 7198non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 7199length 7200of 7201the string must be exactly seven or eight characters. For both _HID and 7202_CID 7203strings, all characters must be alphanumeric. ACPICA BZ 874. 7204 7205iASL: Allow certain "null" resource descriptors. Some BIOS code creates 7206descriptors that are mostly or all zeros, with the expectation that they 7207will 7208be filled in at runtime. iASL now allows this as long as there is a 7209"resource 7210tag" (name) associated with the descriptor, which gives the ASL a handle 7211needed to modify the descriptor. ACPICA BZ 873. 7212 7213Added single-thread support to the generic Unix application OSL. 7214Primarily 7215for iASL support, this change removes the use of semaphores in the 7216single- 7217threaded ACPICA tools/applications - increasing performance. The 7218_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 7219option. ACPICA BZ 879. 7220 7221AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 7222support 7223for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 7224 7225iASL: Moved all compiler messages to a new file, aslmessages.h. 7226 7227---------------------------------------- 722815 September 2010. Summary of changes for version 20100915: 7229 72301) ACPI CA Core Subsystem: 7231 7232Removed the AcpiOsDerivePciId OSL interface. The various host 7233implementations 7234of this function were not OS-dependent and are now obsolete and can be 7235removed from all host OSLs. This function has been replaced by 7236AcpiHwDerivePciId, which is now part of the ACPICA core code. 7237AcpiHwDerivePciId has been implemented without recursion. Adds one new 7238module, hwpci.c. ACPICA BZ 857. 7239 7240Implemented a dynamic repair for _HID and _CID strings. The following 7241problems are now repaired at runtime: 1) Remove a leading asterisk in the 7242string, and 2) the entire string is uppercased. Both repairs are in 7243accordance with the ACPI specification and will simplify host driver 7244code. 7245ACPICA BZ 871. 7246 7247The ACPI_THREAD_ID type is no longer configurable, internally it is now 7248always UINT64. This simplifies the ACPICA code, especially any printf 7249output. 7250UINT64 is the only common data type for all thread_id types across all 7251operating systems. It is now up to the host OSL to cast the native 7252thread_id 7253type to UINT64 before returning the value to ACPICA (via 7254AcpiOsGetThreadId). 7255Lin Ming, Bob Moore. 7256 7257Added the ACPI_INLINE type to enhance the ACPICA configuration. The 7258"inline" 7259keyword is not standard across compilers, and this type allows inline to 7260be 7261configured on a per-compiler basis. Lin Ming. 7262 7263Made the system global AcpiGbl_SystemAwakeAndRunning publicly 7264available. 7265Added an extern for this boolean in acpixf.h. Some hosts utilize this 7266value 7267during suspend/restore operations. ACPICA BZ 869. 7268 7269All code that implements error/warning messages with the "ACPI:" prefix 7270has 7271been moved to a new module, utxferror.c. 7272 7273The UINT64_OVERLAY was moved to utmath.c, which is the only module where 7274it 7275is used. ACPICA BZ 829. Lin Ming, Bob Moore. 7276 7277Example Code and Data Size: These are the sizes for the OS-independent 7278acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7279debug version of the code includes the debug output trace mechanism and 7280has a 7281much larger code and data size. 7282 7283 Previous Release: 7284 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7285 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7286 Current Release: 7287 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7288 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7289 72902) iASL Compiler/Disassembler and Tools: 7291 7292iASL/Disassembler: Write ACPI errors to stderr instead of the output 7293file. 7294This keeps the output files free of random error messages that may 7295originate 7296from within the namespace/interpreter code. Used this opportunity to 7297merge 7298all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 7299866. Lin Ming, Bob Moore. 7300 7301Tools: update some printfs for ansi warnings on size_t. Handle width 7302change 7303of size_t on 32-bit versus 64-bit generations. Lin Ming. 7304 7305---------------------------------------- 730606 August 2010. Summary of changes for version 20100806: 7307 73081) ACPI CA Core Subsystem: 7309 7310Designed and implemented a new host interface to the _OSI support code. 7311This 7312will allow the host to dynamically add or remove multiple _OSI strings, 7313as 7314well as install an optional handler that is called for each _OSI 7315invocation. 7316Also added a new AML debugger command, 'osi' to display and modify the 7317global 7318_OSI string table, and test support in the AcpiExec utility. See the 7319ACPICA 7320reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 7321New Functions: 7322 AcpiInstallInterface - Add an _OSI string. 7323 AcpiRemoveInterface - Delete an _OSI string. 7324 AcpiInstallInterfaceHandler - Install optional _OSI handler. 7325Obsolete Functions: 7326 AcpiOsValidateInterface - no longer used. 7327New Files: 7328 source/components/utilities/utosi.c 7329 7330Re-introduced the support to enable multi-byte transfers for Embedded 7331Controller (EC) operation regions. A reported problem was found to be a 7332bug 7333in the host OS, not in the multi-byte support. Previously, the maximum 7334data 7335size passed to the EC operation region handler was a single byte. There 7336are 7337often EC Fields larger than one byte that need to be transferred, and it 7338is 7339useful for the EC driver to lock these as a single transaction. This 7340change 7341enables single transfers larger than 8 bits. This effectively changes the 7342access to the EC space from ByteAcc to AnyAcc, and will probably require 7343changes to the host OS Embedded Controller driver to enable 16/32/64/256- 7344bit 7345transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 7346 7347Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 7348prototype in acpiosxf.h had the output value pointer as a (void *). 7349It should be a (UINT64 *). This may affect some host OSL code. 7350 7351Fixed a couple problems with the recently modified Linux makefiles for 7352iASL 7353and AcpiExec. These new makefiles place the generated object files in the 7354local directory so that there can be no collisions between the files that 7355are 7356shared between them that are compiled with different options. 7357 7358Example Code and Data Size: These are the sizes for the OS-independent 7359acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7360debug version of the code includes the debug output trace mechanism and 7361has a 7362much larger code and data size. 7363 7364 Previous Release: 7365 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7366 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7367 Current Release: 7368 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7369 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7370 73712) iASL Compiler/Disassembler and Tools: 7372 7373iASL/Disassembler: Added a new option (-da, "disassemble all") to load 7374the 7375namespace from and disassemble an entire group of AML files. Useful for 7376loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 7377and 7378disassembling with one simple command. ACPICA BZ 865. Lin Ming. 7379 7380iASL: Allow multiple invocations of -e option. This change allows 7381multiple 7382uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 7383834. 7384Lin Ming. 7385 7386---------------------------------------- 738702 July 2010. Summary of changes for version 20100702: 7388 73891) ACPI CA Core Subsystem: 7390 7391Implemented several updates to the recently added GPE reference count 7392support. The model for "wake" GPEs is changing to give the host OS 7393complete 7394control of these GPEs. Eventually, the ACPICA core will not execute any 7395_PRW 7396methods, since the host already must execute them. Also, additional 7397changes 7398were made to help ensure that the reference counts are kept in proper 7399synchronization with reality. Rafael J. Wysocki. 7400 74011) Ensure that GPEs are not enabled twice during initialization. 74022) Ensure that GPE enable masks stay in sync with the reference count. 74033) Do not inadvertently enable GPEs when writing GPE registers. 74044) Remove the internal wake reference counter and add new AcpiGpeWakeup 7405interface. This interface will set or clear individual GPEs for wakeup. 74065) Remove GpeType argument from AcpiEnable and AcpiDisable. These 7407interfaces 7408are now used for "runtime" GPEs only. 7409 7410Changed the behavior of the GPE install/remove handler interfaces. The 7411GPE 7412is 7413no longer disabled during this process, as it was found to cause problems 7414on 7415some machines. Rafael J. Wysocki. 7416 7417Reverted a change introduced in version 20100528 to enable Embedded 7418Controller multi-byte transfers. This change was found to cause problems 7419with 7420Index Fields and possibly Bank Fields. It will be reintroduced when these 7421problems have been resolved. 7422 7423Fixed a problem with references to Alias objects within Package Objects. 7424A 7425reference to an Alias within the definition of a Package was not always 7426resolved properly. Aliases to objects like Processors, Thermal zones, 7427etc. 7428were resolved to the actual object instead of a reference to the object 7429as 7430it 7431should be. Package objects are only allowed to contain integer, string, 7432buffer, package, and reference objects. Redhat bugzilla 608648. 7433 7434Example Code and Data Size: These are the sizes for the OS-independent 7435acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7436debug version of the code includes the debug output trace mechanism and 7437has a 7438much larger code and data size. 7439 7440 Previous Release: 7441 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7442 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7443 Current Release: 7444 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7445 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7446 74472) iASL Compiler/Disassembler and Tools: 7448 7449iASL: Implemented a new compiler subsystem to allow definition and 7450compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 7451These 7452are called "ACPI Data Tables", and the new compiler is the "Data Table 7453Compiler". This compiler is intended to simplify the existing error-prone 7454process of creating these tables for the BIOS, as well as allowing the 7455disassembly, modification, recompilation, and override of existing ACPI 7456data 7457tables. See the iASL User Guide for detailed information. 7458 7459iASL: Implemented a new Template Generator option in support of the new 7460Data 7461Table Compiler. This option will create examples of all known ACPI tables 7462that can be used as the basis for table development. See the iASL 7463documentation and the -T option. 7464 7465Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 7466Descriptor Table). 7467 7468Updated the Linux makefiles for iASL and AcpiExec to place the generated 7469object files in the local directory so that there can be no collisions 7470between the shared files between them that are generated with different 7471options. 7472 7473Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 7474Use 7475the #define __APPLE__ to enable this support. 7476 7477---------------------------------------- 747828 May 2010. Summary of changes for version 20100528: 7479 7480Note: The ACPI 4.0a specification was released on April 5, 2010 and is 7481available at www.acpi.info. This is primarily an errata release. 7482 74831) ACPI CA Core Subsystem: 7484 7485Undefined ACPI tables: We are looking for the definitions for the 7486following 7487ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 7488 7489Implemented support to enable multi-byte transfers for Embedded 7490Controller 7491(EC) operation regions. Previously, the maximum data size passed to the 7492EC 7493operation region handler was a single byte. There are often EC Fields 7494larger 7495than one byte that need to be transferred, and it is useful for the EC 7496driver 7497to lock these as a single transaction. This change enables single 7498transfers 7499larger than 8 bits. This effectively changes the access to the EC space 7500from 7501ByteAcc to AnyAcc, and will probably require changes to the host OS 7502Embedded 7503Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 7504bit 7505transfers. Alexey Starikovskiy, Lin Ming 7506 7507Implemented a performance enhancement for namespace search and access. 7508This 7509change enhances the performance of namespace searches and walks by adding 7510a 7511backpointer to the parent in each namespace node. On large namespaces, 7512this 7513change can improve overall ACPI performance by up to 9X. Adding a pointer 7514to 7515each namespace node increases the overall size of the internal namespace 7516by 7517about 5%, since each namespace entry usually consists of both a namespace 7518node and an ACPI operand object. However, this is the first growth of the 7519namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 7520 7521Implemented a performance optimization that reduces the number of 7522namespace 7523walks. On control method exit, only walk the namespace if the method is 7524known 7525to have created namespace objects outside of its local scope. Previously, 7526the 7527entire namespace was traversed on each control method exit. This change 7528can 7529improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 7530Moore. 7531 7532Added support to truncate I/O addresses to 16 bits for Windows 7533compatibility. 7534Some ASL code has been seen in the field that inadvertently has bits set 7535above bit 15. This feature is optional and is enabled if the BIOS 7536requests 7537any Windows OSI strings. It can also be enabled by the host OS. Matthew 7538Garrett, Bob Moore. 7539 7540Added support to limit the maximum time for the ASL Sleep() operator. To 7541prevent accidental deep sleeps, limit the maximum time that Sleep() will 7542actually sleep. Configurable, the default maximum is two seconds. ACPICA 7543bugzilla 854. 7544 7545Added run-time validation support for the _WDG and_WED Microsoft 7546predefined 7547methods. These objects are defined by "Windows Instrumentation", and are 7548not 7549part of the ACPI spec. ACPICA BZ 860. 7550 7551Expanded all statistic counters used during namespace and device 7552initialization from 16 to 32 bits in order to support very large 7553namespaces. 7554 7555Replaced all instances of %d in printf format specifiers with %u since 7556nearly 7557all integers in ACPICA are unsigned. 7558 7559Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 7560returned 7561as AE_NO_HANDLER. 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: 88.4K Code, 18.8K Data, 107.2K Total 7571 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7572 Current Release: 7573 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7574 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7575 75762) iASL Compiler/Disassembler and Tools: 7577 7578iASL: Added compiler support for the _WDG and_WED Microsoft predefined 7579methods. These objects are defined by "Windows Instrumentation", and are 7580not 7581part of the ACPI spec. ACPICA BZ 860. 7582 7583AcpiExec: added option to disable the memory tracking mechanism. The -dt 7584option will disable the tracking mechanism, which improves performance 7585considerably. 7586 7587AcpiExec: Restructured the command line options into -d (disable) and -e 7588(enable) options. 7589 7590---------------------------------------- 759128 April 2010. Summary of changes for version 20100428: 7592 75931) ACPI CA Core Subsystem: 7594 7595Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 7596including FADT-based and GPE Block Devices, execute any _PRW methods in 7597the 7598new table, and process any _Lxx/_Exx GPE methods in the new table. Any 7599runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 7600immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 7601Devices. Provides compatibility with other ACPI implementations. Two new 7602files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 7603Moore. 7604 7605Fixed a regression introduced in version 20100331 within the table 7606manager 7607where initial table loading could fail. This was introduced in the fix 7608for 7609AcpiReallocateRootTable. Also, renamed some of fields in the table 7610manager 7611data structures to clarify their meaning and use. 7612 7613Fixed a possible allocation overrun during internal object copy in 7614AcpiUtCopySimpleObject. The original code did not correctly handle the 7615case 7616where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 7617847. 7618 7619Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 7620possible access beyond end-of-allocation. Also, now fully validate 7621descriptor 7622(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 7623 7624Example Code and Data Size: These are the sizes for the OS-independent 7625acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7626debug version of the code includes the debug output trace mechanism and 7627has a 7628much larger code and data size. 7629 7630 Previous Release: 7631 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7632 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7633 Current Release: 7634 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7635 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7636 76372) iASL Compiler/Disassembler and Tools: 7638 7639iASL: Implemented Min/Max/Len/Gran validation for address resource 7640descriptors. This change implements validation for the address fields 7641that 7642are common to all address-type resource descriptors. These checks are 7643implemented: Checks for valid Min/Max, length within the Min/Max window, 7644valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 7645per 7646table 6-40 in the ACPI 4.0a specification. Also split the large 7647aslrestype1.c 7648and aslrestype2.c files into five new files. ACPICA BZ 840. 7649 7650iASL: Added support for the _Wxx predefined names. This support was 7651missing 7652and these names were not recognized by the compiler as valid predefined 7653names. ACPICA BZ 851. 7654 7655iASL: Added an error for all predefined names that are defined to return 7656no 7657value and thus must be implemented as Control Methods. These include all 7658of 7659the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 7660names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 7661 7662iASL: Implemented the -ts option to emit hex AML data in ASL format, as 7663an 7664ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 7665be 7666dynamically loaded via the Load() operator. Also cleaned up output for 7667the 7668- 7669ta and -tc options. ACPICA BZ 853. 7670 7671Tests: Added a new file with examples of extended iASL error checking. 7672Demonstrates the advanced error checking ability of the iASL compiler. 7673Available at tests/misc/badcode.asl. 7674 7675---------------------------------------- 767631 March 2010. Summary of changes for version 20100331: 7677 76781) ACPI CA Core Subsystem: 7679 7680Completed a major update for the GPE support in order to improve support 7681for 7682shared GPEs and to simplify both host OS and ACPICA code. Added a 7683reference 7684count mechanism to support shared GPEs that require multiple device 7685drivers. 7686Several external interfaces have changed. One external interface has been 7687removed. One new external interface was added. Most of the GPE external 7688interfaces now use the GPE spinlock instead of the events mutex (and the 7689Flags parameter for many GPE interfaces has been removed.) See the 7690updated 7691ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 7692Rafael 7693Wysocki. ACPICA BZ 831. 7694 7695Changed: 7696 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 7697Removed: 7698 AcpiSetGpeType 7699New: 7700 AcpiSetGpe 7701 7702Implemented write support for DataTable operation regions. These regions 7703are 7704defined via the DataTableRegion() operator. Previously, only read support 7705was 7706implemented. The ACPI specification allows DataTableRegions to be 7707read/write, 7708however. 7709 7710Implemented a new subsystem option to force a copy of the DSDT to local 7711memory. Optionally copy the entire DSDT to local memory (instead of 7712simply 7713mapping it.) There are some (albeit very rare) BIOSs that corrupt or 7714replace 7715the original DSDT, creating the need for this option. Default is FALSE, 7716do 7717not copy the DSDT. 7718 7719Implemented detection of a corrupted or replaced DSDT. This change adds 7720support to detect a DSDT that has been corrupted and/or replaced from 7721outside 7722the OS (by firmware). This is typically catastrophic for the system, but 7723has 7724been seen on some machines. Once this problem has been detected, the DSDT 7725copy option can be enabled via system configuration. Lin Ming, Bob Moore. 7726 7727Fixed two problems with AcpiReallocateRootTable during the root table 7728copy. 7729When copying the root table to the new allocation, the length used was 7730incorrect. The new size was used instead of the current table size, 7731meaning 7732too much data was copied. Also, the count of available slots for ACPI 7733tables 7734was not set correctly. Alexey Starikovskiy, Bob Moore. 7735 7736Example Code and Data Size: These are the sizes for the OS-independent 7737acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7738debug version of the code includes the debug output trace mechanism and 7739has a 7740much larger code and data size. 7741 7742 Previous Release: 7743 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7744 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7745 Current Release: 7746 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7747 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7748 77492) iASL Compiler/Disassembler and Tools: 7750 7751iASL: Implement limited typechecking for values returned from predefined 7752control methods. The type of any returned static (unnamed) object is now 7753validated. For example, Return(1). ACPICA BZ 786. 7754 7755iASL: Fixed a predefined name object verification regression. Fixes a 7756problem 7757introduced in version 20100304. An error is incorrectly generated if a 7758predefined name is declared as a static named object with a value defined 7759using the keywords "Zero", "One", or "Ones". Lin Ming. 7760 7761iASL: Added Windows 7 support for the -g option (get local ACPI tables) 7762by 7763reducing the requested registry access rights. ACPICA BZ 842. 7764 7765Disassembler: fixed a possible fault when generating External() 7766statements. 7767Introduced in commit ae7d6fd: Properly handle externals with parent- 7768prefix 7769(carat). Fixes a string length allocation calculation. Lin Ming. 7770 7771---------------------------------------- 777204 March 2010. Summary of changes for version 20100304: 7773 77741) ACPI CA Core Subsystem: 7775 7776Fixed a possible problem with the AML Mutex handling function 7777AcpiExReleaseMutex where the function could fault under the very rare 7778condition when the interpreter has blocked, the interpreter lock is 7779released, 7780the interpreter is then reentered via the same thread, and attempts to 7781acquire an AML mutex that was previously acquired. FreeBSD report 140979. 7782Lin 7783Ming. 7784 7785Implemented additional configuration support for the AML "Debug Object". 7786Output from the debug object can now be enabled via a global variable, 7787AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 7788debugging. 7789This debug output is now available in the release version of ACPICA 7790instead 7791of just the debug version. Also, the entire debug output module can now 7792be 7793configured out of the ACPICA build if desired. One new file added, 7794executer/exdebug.c. Lin Ming, Bob Moore. 7795 7796Added header support for the ACPI MCHI table (Management Controller Host 7797Interface Table). This table was added in ACPI 4.0, but the defining 7798document 7799has only recently become available. 7800 7801Standardized output of integer values for ACPICA warnings/errors. Always 7802use 78030x prefix for hex output, always use %u for unsigned integer decimal 7804output. 7805Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 7806400 7807invocations.) These invocations were converted from the original 7808ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 7809 7810Example Code and Data Size: These are the sizes for the OS-independent 7811acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7812debug version of the code includes the debug output trace mechanism and 7813has a 7814much larger code and data size. 7815 7816 Previous Release: 7817 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7818 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7819 Current Release: 7820 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7821 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7822 78232) iASL Compiler/Disassembler and Tools: 7824 7825iASL: Implemented typechecking support for static (non-control method) 7826predefined named objects that are declared with the Name() operator. For 7827example, the type of this object is now validated to be of type Integer: 7828Name(_BBN, 1). This change migrates the compiler to using the core 7829predefined 7830name table instead of maintaining a local version. Added a new file, 7831aslpredef.c. ACPICA BZ 832. 7832 7833Disassembler: Added support for the ACPI 4.0 MCHI table. 7834 7835---------------------------------------- 783621 January 2010. Summary of changes for version 20100121: 7837 78381) ACPI CA Core Subsystem: 7839 7840Added the 2010 copyright to all module headers and signons. This affects 7841virtually every file in the ACPICA core subsystem, the iASL compiler, the 7842tools/utilities, and the test suites. 7843 7844Implemented a change to the AcpiGetDevices interface to eliminate 7845unnecessary 7846invocations of the _STA method. In the case where a specific _HID is 7847requested, do not run _STA until a _HID match is found. This eliminates 7848potentially dozens of _STA calls during a search for a particular 7849device/HID, 7850which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 7851 7852Implemented an additional repair for predefined method return values. 7853Attempt 7854to repair unexpected NULL elements within returned Package objects. 7855Create 7856an 7857Integer of value zero, a NULL String, or a zero-length Buffer as 7858appropriate. 7859ACPICA BZ 818. Lin Ming, Bob Moore. 7860 7861Removed the obsolete ACPI_INTEGER data type. This type was introduced as 7862the 7863code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 7864(with 786564-bit AML integers). It is now obsolete and this change removes it from 7866the 7867ACPICA code base, replaced by UINT64. The original typedef has been 7868retained 7869for now for compatibility with existing device driver code. ACPICA BZ 7870824. 7871 7872Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 7873in 7874the parse tree object. 7875 7876Added additional warning options for the gcc-4 generation. Updated the 7877source 7878accordingly. This includes some code restructuring to eliminate 7879unreachable 7880code, elimination of some gotos, elimination of unused return values, 7881some 7882additional casting, and removal of redundant declarations. 7883 7884Example Code and Data Size: These are the sizes for the OS-independent 7885acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7886debug version of the code includes the debug output trace mechanism and 7887has a 7888much larger code and data size. 7889 7890 Previous Release: 7891 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7892 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7893 Current Release: 7894 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7895 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7896 78972) iASL Compiler/Disassembler and Tools: 7898 7899No functional changes for this release. 7900 7901---------------------------------------- 790214 December 2009. Summary of changes for version 20091214: 7903 79041) ACPI CA Core Subsystem: 7905 7906Enhanced automatic data type conversions for predefined name repairs. 7907This 7908change expands the automatic repairs/conversions for predefined name 7909return 7910values to make Integers, Strings, and Buffers fully interchangeable. 7911Also, 7912a 7913Buffer can be converted to a Package of Integers if necessary. The 7914nsrepair.c 7915module was completely restructured. Lin Ming, Bob Moore. 7916 7917Implemented automatic removal of null package elements during predefined 7918name 7919repairs. This change will automatically remove embedded and trailing NULL 7920package elements from returned package objects that are defined to 7921contain 7922a 7923variable number of sub-packages. The driver is then presented with a 7924package 7925with no null elements to deal with. ACPICA BZ 819. 7926 7927Implemented a repair for the predefined _FDE and _GTM names. The expected 7928return value for both names is a Buffer of 5 DWORDs. This repair fixes 7929two 7930possible problems (both seen in the field), where a package of integers 7931is 7932returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 7933Kim. 7934 7935Implemented additional module-level code support. This change will 7936properly 7937execute module-level code that is not at the root of the namespace (under 7938a 7939Device object, etc.). Now executes the code within the current scope 7940instead 7941of the root. ACPICA BZ 762. Lin Ming. 7942 7943Fixed possible mutex acquisition errors when running _REG methods. Fixes 7944a 7945problem where mutex errors can occur when running a _REG method that is 7946in 7947the same scope as a method-defined operation region or an operation 7948region 7949under a module-level IF block. This type of code is rare, so the problem 7950has 7951not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 7952 7953Fixed a possible memory leak during module-level code execution. An 7954object 7955could be leaked for each block of executed module-level code if the 7956interpreter slack mode is enabled This change deletes any implicitly 7957returned 7958object from the module-level code block. Lin Ming. 7959 7960Removed messages for successful predefined repair(s). The repair 7961mechanism 7962was considered too wordy. Now, messages are only unconditionally emitted 7963if 7964the return object cannot be repaired. Existing messages for successful 7965repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 7966827. 7967 7968Example Code and Data Size: These are the sizes for the OS-independent 7969acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7970debug version of the code includes the debug output trace mechanism and 7971has a 7972much larger code and data size. 7973 7974 Previous Release: 7975 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7976 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7977 Current Release: 7978 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7979 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7980 79812) iASL Compiler/Disassembler and Tools: 7982 7983iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 7984files 7985were no longer automatically removed at the termination of the compile. 7986 7987acpiexec: Implemented the -f option to specify default region fill value. 7988This option specifies the value used to initialize buffers that simulate 7989operation regions. Default value is zero. Useful for debugging problems 7990that 7991depend on a specific initial value for a region or field. 7992 7993---------------------------------------- 799412 November 2009. Summary of changes for version 20091112: 7995 79961) ACPI CA Core Subsystem: 7997 7998Implemented a post-order callback to AcpiWalkNamespace. The existing 7999interface only has a pre-order callback. This change adds an additional 8000parameter for a post-order callback which will be more useful for bus 8001scans. 8002ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 8003 8004Modified the behavior of the operation region memory mapping cache for 8005SystemMemory. Ensure that the memory mappings created for operation 8006regions 8007do not cross 4K page boundaries. Crossing a page boundary while mapping 8008regions can cause kernel warnings on some hosts if the pages have 8009different 8010attributes. Such regions are probably BIOS bugs, and this is the 8011workaround. 8012Linux BZ 14445. Lin Ming. 8013 8014Implemented an automatic repair for predefined methods that must return 8015sorted lists. This change will repair (by sorting) packages returned by 8016_ALR, 8017_PSS, and _TSS. Drivers can now assume that the packages are correctly 8018sorted 8019and do not contain NULL package elements. Adds one new file, 8020namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 8021 8022Fixed a possible fault during predefined name validation if a return 8023Package 8024object contains NULL elements. Also adds a warning if a NULL element is 8025followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 8026may 8027include repair or removal of all such NULL elements where possible. 8028 8029Implemented additional module-level executable AML code support. This 8030change 8031will execute module-level code that is not at the root of the namespace 8032(under a Device object, etc.) at table load time. Module-level executable 8033AML 8034code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 8035 8036Implemented a new internal function to create Integer objects. This 8037function 8038simplifies miscellaneous object creation code. ACPICA BZ 823. 8039 8040Reduced the severity of predefined repair messages, Warning to Info. 8041Since 8042the object was successfully repaired, a warning is too severe. Reduced to 8043an 8044info message for now. These messages may eventually be changed to debug- 8045only. 8046ACPICA BZ 812. 8047 8048Example Code and Data Size: These are the sizes for the OS-independent 8049acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8050debug version of the code includes the debug output trace mechanism and 8051has a 8052much larger code and data size. 8053 8054 Previous Release: 8055 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8056 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8057 Current Release: 8058 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8059 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8060 80612) iASL Compiler/Disassembler and Tools: 8062 8063iASL: Implemented Switch() with While(1) so that Break works correctly. 8064This 8065change correctly implements the Switch operator with a surrounding 8066While(1) 8067so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 8068 8069iASL: Added a message if a package initializer list is shorter than 8070package 8071length. Adds a new remark for a Package() declaration if an initializer 8072list 8073exists, but is shorter than the declared length of the package. Although 8074technically legal, this is probably a coding error and it is seen in the 8075field. ACPICA BZ 815. Lin Ming, Bob Moore. 8076 8077iASL: Fixed a problem where the compiler could fault after the maximum 8078number 8079of errors was reached (200). 8080 8081acpixtract: Fixed a possible warning for pointer cast if the compiler 8082warning 8083level set very high. 8084 8085---------------------------------------- 808613 October 2009. Summary of changes for version 20091013: 8087 80881) ACPI CA Core Subsystem: 8089 8090Fixed a problem where an Operation Region _REG method could be executed 8091more 8092than once. If a custom address space handler is installed by the host 8093before 8094the "initialize operation regions" phase of the ACPICA initialization, 8095any 8096_REG methods for that address space could be executed twice. This change 8097fixes the problem. ACPICA BZ 427. Lin Ming. 8098 8099Fixed a possible memory leak for the Scope() ASL operator. When the exact 8100invocation of "Scope(\)" is executed (change scope to root), one internal 8101operand object was leaked. Lin Ming. 8102 8103Implemented a run-time repair for the _MAT predefined method. If the _MAT 8104return value is defined as a Field object in the AML, and the field 8105size is less than or equal to the default width of an integer (32 or 810664),_MAT 8107can incorrectly return an Integer instead of a Buffer. ACPICA now 8108automatically repairs this problem. ACPICA BZ 810. 8109 8110Implemented a run-time repair for the _BIF and _BIX predefined methods. 8111The 8112"OEM Information" field is often incorrectly returned as an Integer with 8113value zero if the field is not supported by the platform. This is due to 8114an 8115ambiguity in the ACPI specification. The field should always be a string. 8116ACPICA now automatically repairs this problem by returning a NULL string 8117within the returned Package. ACPICA BZ 807. 8118 8119Example Code and Data Size: These are the sizes for the OS-independent 8120acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8121debug version of the code includes the debug output trace mechanism and 8122has a 8123much larger code and data size. 8124 8125 Previous Release: 8126 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8127 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8128 Current Release: 8129 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8130 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8131 81322) iASL Compiler/Disassembler and Tools: 8133 8134Disassembler: Fixed a problem where references to external symbols that 8135contained one or more parent-prefixes (carats) were not handled 8136correctly, 8137possibly causing a fault. ACPICA BZ 806. Lin Ming. 8138 8139Disassembler: Restructured the code so that all functions that handle 8140external symbols are in a single module. One new file is added, 8141common/dmextern.c. 8142 8143AML Debugger: Added a max count argument for the Batch command (which 8144executes multiple predefined methods within the namespace.) 8145 8146iASL: Updated the compiler documentation (User Reference.) Available at 8147http://www.acpica.org/documentation/. ACPICA BZ 750. 8148 8149AcpiXtract: Updated for Lint and other formatting changes. Close all open 8150files. 8151 8152---------------------------------------- 815303 September 2009. Summary of changes for version 20090903: 8154 81551) ACPI CA Core Subsystem: 8156 8157For Windows Vista compatibility, added the automatic execution of an _INI 8158method located at the namespace root (\_INI). This method is executed at 8159table load time. This support is in addition to the automatic execution 8160of 8161\_SB._INI. Lin Ming. 8162 8163Fixed a possible memory leak in the interpreter for AML package objects 8164if 8165the package initializer list is longer than the defined size of the 8166package. 8167This apparently can only happen if the BIOS changes the package size on 8168the 8169fly (seen in a _PSS object), as ASL compilers do not allow this. The 8170interpreter will truncate the package to the defined size (and issue an 8171error 8172message), but previously could leave the extra objects undeleted if they 8173were 8174pre-created during the argument processing (such is the case if the 8175package 8176consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 8177 8178Fixed a problem seen when a Buffer or String is stored to itself via ASL. 8179This has been reported in the field. Previously, ACPICA would zero out 8180the 8181buffer/string. Now, the operation is treated as a noop. Provides Windows 8182compatibility. ACPICA BZ 803. Lin Ming. 8183 8184Removed an extraneous error message for ASL constructs of the form 8185Store(LocalX,LocalX) when LocalX is uninitialized. These curious 8186statements 8187are seen in many BIOSs and are once again treated as NOOPs and no error 8188is 8189emitted when they are encountered. ACPICA BZ 785. 8190 8191Fixed an extraneous warning message if a _DSM reserved method returns a 8192Package object. _DSM can return any type of object, so validation on the 8193return type cannot be performed. ACPICA BZ 802. 8194 8195Example Code and Data Size: These are the sizes for the OS-independent 8196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8197debug version of the code includes the debug output trace mechanism and 8198has a 8199much larger code and data size. 8200 8201 Previous Release: 8202 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8203 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8204 Current Release: 8205 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8206 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8207 82082) iASL Compiler/Disassembler and Tools: 8209 8210iASL: Fixed a problem with the use of the Alias operator and Resource 8211Templates. The correct alias is now constructed and no error is emitted. 8212ACPICA BZ 738. 8213 8214iASL: Implemented the -I option to specify additional search directories 8215for 8216include files. Allows multiple additional search paths for include files. 8217Directories are searched in the order specified on the command line 8218(after 8219the local directory is searched.) ACPICA BZ 800. 8220 8221iASL: Fixed a problem where the full pathname for include files was not 8222emitted for warnings/errors. This caused the IDE support to not work 8223properly. ACPICA BZ 765. 8224 8225iASL: Implemented the -@ option to specify a Windows-style response file 8226containing additional command line options. ACPICA BZ 801. 8227 8228AcpiExec: Added support to load multiple AML files simultaneously (such 8229as 8230a 8231DSDT and multiple SSDTs). Also added support for wildcards within the AML 8232pathname. These features allow all machine tables to be easily loaded and 8233debugged together. ACPICA BZ 804. 8234 8235Disassembler: Added missing support for disassembly of HEST table Error 8236Bank 8237subtables. 8238 8239---------------------------------------- 824030 July 2009. Summary of changes for version 20090730: 8241 8242The ACPI 4.0 implementation for ACPICA is complete with this release. 8243 82441) ACPI CA Core Subsystem: 8245 8246ACPI 4.0: Added header file support for all new and changed ACPI tables. 8247Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 8248new 8249for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 8250BERT, 8251EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 8252There 8253have been some ACPI 4.0 changes to other existing tables. Split the large 8254actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 8255 8256ACPI 4.0: Implemented predefined name validation for all new names. There 8257are 825831 new names in ACPI 4.0. The predefined validation module was split into 8259two 8260files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 8261 8262Implemented support for so-called "module-level executable code". This is 8263executable AML code that exists outside of any control method and is 8264intended 8265to be executed at table load time. Although illegal since ACPI 2.0, this 8266type 8267of code still exists and is apparently still being created. Blocks of 8268this 8269code are now detected and executed as intended. Currently, the code 8270blocks 8271must exist under either an If, Else, or While construct; these are the 8272typical cases seen in the field. ACPICA BZ 762. Lin Ming. 8273 8274Implemented an automatic dynamic repair for predefined names that return 8275nested Package objects. This applies to predefined names that are defined 8276to 8277return a variable-length Package of sub-packages. If the number of sub- 8278packages is one, BIOS code is occasionally seen that creates a simple 8279single 8280package with no sub-packages. This code attempts to fix the problem by 8281wrapping a new package object around the existing package. These methods 8282can 8283be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 8284BZ 8285790. 8286 8287Fixed a regression introduced in 20090625 for the AcpiGetDevices 8288interface. 8289The _HID/_CID matching was broken and no longer matched IDs correctly. 8290ACPICA 8291BZ 793. 8292 8293Fixed a problem with AcpiReset where the reset would silently fail if the 8294register was one of the protected I/O ports. AcpiReset now bypasses the 8295port 8296validation mechanism. This may eventually be driven into the 8297AcpiRead/Write 8298interfaces. 8299 8300Fixed a regression related to the recent update of the AcpiRead/Write 8301interfaces. A sleep/suspend could fail if the optional PM2 Control 8302register 8303does not exist during an attempt to write the Bus Master Arbitration bit. 8304(However, some hosts already delete the code that writes this bit, and 8305the 8306code may in fact be obsolete at this date.) ACPICA BZ 799. 8307 8308Fixed a problem where AcpiTerminate could fault if inadvertently called 8309twice 8310in succession. ACPICA BZ 795. 8311 8312Example Code and Data Size: These are the sizes for the OS-independent 8313acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8314debug version of the code includes the debug output trace mechanism and 8315has a 8316much larger code and data size. 8317 8318 Previous Release: 8319 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8320 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8321 Current Release: 8322 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8323 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8324 83252) iASL Compiler/Disassembler and Tools: 8326 8327ACPI 4.0: Implemented disassembler support for all new ACPI tables and 8328changes to existing tables. ACPICA BZ 775. 8329 8330---------------------------------------- 833125 June 2009. Summary of changes for version 20090625: 8332 8333The ACPI 4.0 Specification was released on June 16 and is available at 8334www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 8335continue for the next few releases. 8336 83371) ACPI CA Core Subsystem: 8338 8339ACPI 4.0: Implemented interpreter support for the IPMI operation region 8340address space. Includes support for bi-directional data buffers and an 8341IPMI 8342address space handler (to be installed by an IPMI device driver.) ACPICA 8343BZ 8344773. Lin Ming. 8345 8346ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 8347Includes 8348support in both the header files and the disassembler. 8349 8350Completed a major update for the AcpiGetObjectInfo external interface. 8351Changes include: 8352 - Support for variable, unlimited length HID, UID, and CID strings. 8353 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 8354etc.) 8355 - Call the _SxW power methods on behalf of a device object. 8356 - Determine if a device is a PCI root bridge. 8357 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 8358These changes will require an update to all callers of this interface. 8359See 8360the updated ACPICA Programmer Reference for details. One new source file 8361has 8362been added - utilities/utids.c. ACPICA BZ 368, 780. 8363 8364Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 8365transfers. The Value parameter has been extended from 32 bits to 64 bits 8366in 8367order to support new ACPI 4.0 tables. These changes will require an 8368update 8369to 8370all callers of these interfaces. See the ACPICA Programmer Reference for 8371details. ACPICA BZ 768. 8372 8373Fixed several problems with AcpiAttachData. The handler was not invoked 8374when 8375the host node was deleted. The data sub-object was not automatically 8376deleted 8377when the host node was deleted. The interface to the handler had an 8378unused 8379parameter, this was removed. ACPICA BZ 778. 8380 8381Enhanced the function that dumps ACPI table headers. All non-printable 8382characters in the string fields are now replaced with '?' (Signature, 8383OemId, 8384OemTableId, and CompilerId.) ACPI tables with non-printable characters in 8385these fields are occasionally seen in the field. ACPICA BZ 788. 8386 8387Fixed a problem with predefined method repair code where the code that 8388attempts to repair/convert an object of incorrect type is only executed 8389on 8390the first time the predefined method is called. The mechanism that 8391disables 8392warnings on subsequent calls was interfering with the repair mechanism. 8393ACPICA BZ 781. 8394 8395Fixed a possible memory leak in the predefined validation/repair code 8396when 8397a 8398buffer is automatically converted to an expected string object. 8399 8400Removed obsolete 16-bit files from the distribution and from the current 8401git 8402tree head. ACPICA BZ 776. 8403 8404Example Code and Data Size: These are the sizes for the OS-independent 8405acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8406debug version of the code includes the debug output trace mechanism and 8407has a 8408much larger code and data size. 8409 8410 Previous Release: 8411 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8412 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8413 Current Release: 8414 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8415 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8416 84172) iASL Compiler/Disassembler and Tools: 8418 8419ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 8420operation region keyword. ACPICA BZ 771, 772. Lin Ming. 8421 8422ACPI 4.0: iASL - implemented compile-time validation support for all new 8423predefined names and control methods (31 total). ACPICA BZ 769. 8424 8425---------------------------------------- 842621 May 2009. Summary of changes for version 20090521: 8427 84281) ACPI CA Core Subsystem: 8429 8430Disabled the preservation of the SCI enable bit in the PM1 control 8431register. 8432The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 8433to 8434be 8435a "preserved" bit - "OSPM always preserves this bit position", section 84364.7.3.2.1. However, some machines fail if this bit is in fact preserved 8437because the bit needs to be explicitly set by the OS as a workaround. No 8438machines fail if the bit is not preserved. Therefore, ACPICA no longer 8439attempts to preserve this bit. 8440 8441Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 8442incorrectly formed _PRT package could cause a fault. Added validation to 8443ensure that each package element is actually a sub-package. 8444 8445Implemented a new interface to install or override a single control 8446method, 8447AcpiInstallMethod. This interface is useful when debugging in order to 8448repair 8449an existing method or to install a missing method without having to 8450override 8451the entire ACPI table. See the ACPICA Programmer Reference for use and 8452examples. Lin Ming, Bob Moore. 8453 8454Fixed several reference count issues with the DdbHandle object that is 8455created from a Load or LoadTable operator. Prevent premature deletion of 8456the 8457object. Also, mark the object as invalid once the table has been 8458unloaded. 8459This is needed because the handle itself may not be deleted after the 8460table 8461unload, depending on whether it has been stored in a named object by the 8462caller. Lin Ming. 8463 8464Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 8465mutexes of the same sync level are acquired but then not released in 8466strict 8467opposite order, the internally maintained Current Sync Level becomes 8468confused 8469and can cause subsequent execution errors. ACPICA BZ 471. 8470 8471Changed the allowable release order for ASL mutex objects. The ACPI 4.0 8472specification has been changed to make the SyncLevel for mutex objects 8473more 8474useful. When releasing a mutex, the SyncLevel of the mutex must now be 8475the 8476same as the current sync level. This makes more sense than the previous 8477rule 8478(SyncLevel less than or equal). This change updates the code to match the 8479specification. 8480 8481Fixed a problem with the local version of the AcpiOsPurgeCache function. 8482The 8483(local) cache must be locked during all cache object deletions. Andrew 8484Baumann. 8485 8486Updated the Load operator to use operation region interfaces. This 8487replaces 8488direct memory mapping with region access calls. Now, all region accesses 8489go 8490through the installed region handler as they should. 8491 8492Simplified and optimized the NsGetNextNode function. Reduced parameter 8493count 8494and reduced code for this frequently used function. 8495 8496Example Code and Data Size: These are the sizes for the OS-independent 8497acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8498debug version of the code includes the debug output trace mechanism and 8499has a 8500much larger code and data size. 8501 8502 Previous Release: 8503 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8504 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8505 Current Release: 8506 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8507 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8508 85092) iASL Compiler/Disassembler and Tools: 8510 8511Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 8512problems 8513with sub-table disassembly and handling invalid sub-tables. Attempt 8514recovery 8515after an invalid sub-table ID. 8516 8517---------------------------------------- 851822 April 2009. Summary of changes for version 20090422: 8519 85201) ACPI CA Core Subsystem: 8521 8522Fixed a compatibility issue with the recently released I/O port 8523protection 8524mechanism. For windows compatibility, 1) On a port protection violation, 8525simply ignore the request and do not return an exception (allow the 8526control 8527method to continue execution.) 2) If only part of the request overlaps a 8528protected port, read/write the individual ports that are not protected. 8529Linux 8530BZ 13036. Lin Ming 8531 8532Enhanced the execution of the ASL/AML BreakPoint operator so that it 8533actually 8534breaks into the AML debugger if the debugger is present. This matches the 8535ACPI-defined behavior. 8536 8537Fixed several possible warnings related to the use of the configurable 8538ACPI_THREAD_ID. This type can now be configured as either an integer or a 8539pointer with no warnings. Also fixes several warnings in printf-like 8540statements for the 64-bit build when the type is configured as a pointer. 8541ACPICA BZ 766, 767. 8542 8543Fixed a number of possible warnings when compiling with gcc 4+ (depending 8544on 8545warning options.) Examples include printf formats, aliasing, unused 8546globals, 8547missing prototypes, missing switch default statements, use of non-ANSI 8548library functions, use of non-ANSI constructs. See generate/unix/Makefile 8549for 8550a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 8551 8552Example Code and Data Size: These are the sizes for the OS-independent 8553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8554debug version of the code includes the debug output trace mechanism and 8555has a 8556much larger code and data size. 8557 8558 Previous Release: 8559 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8560 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8561 Current Release: 8562 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8563 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8564 85652) iASL Compiler/Disassembler and Tools: 8566 8567iASL: Fixed a generation warning from Bison 2.3 and fixed several 8568warnings 8569on 8570the 64-bit build. 8571 8572iASL: Fixed a problem where the Unix/Linux versions of the compiler could 8573not 8574correctly digest Windows/DOS formatted files (with CR/LF). 8575 8576iASL: Added a new option for "quiet mode" (-va) that produces only the 8577compilation summary, not individual errors and warnings. Useful for large 8578batch compilations. 8579 8580AcpiExec: Implemented a new option (-z) to enable a forced 8581semaphore/mutex 8582timeout that can be used to detect hang conditions during execution of 8583AML 8584code (includes both internal semaphores and AML-defined mutexes and 8585events.) 8586 8587Added new makefiles for the generation of acpica in a generic unix-like 8588environment. These makefiles are intended to generate the acpica tools 8589and 8590utilities from the original acpica git source tree structure. 8591 8592Test Suites: Updated and cleaned up the documentation files. Updated the 8593copyrights to 2009, affecting all source files. Use the new version of 8594iASL 8595with quiet mode. Increased the number of available semaphores in the 8596Windows 8597OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 8598added 8599an alternate implementation of the semaphore timeout to allow aslts to 8600execute fully on Cygwin. 8601 8602---------------------------------------- 860320 March 2009. Summary of changes for version 20090320: 8604 86051) ACPI CA Core Subsystem: 8606 8607Fixed a possible race condition between AcpiWalkNamespace and dynamic 8608table 8609unloads. Added a reader/writer locking mechanism to allow multiple 8610concurrent 8611namespace walks (readers), but block a dynamic table unload until it can 8612gain 8613exclusive write access to the namespace. This fixes a problem where a 8614table 8615unload could (possibly catastrophically) delete the portion of the 8616namespace 8617that is currently being examined by a walk. Adds a new file, utlock.c, 8618that 8619implements the reader/writer lock mechanism. ACPICA BZ 749. 8620 8621Fixed a regression introduced in version 20090220 where a change to the 8622FADT 8623handling could cause the ACPICA subsystem to access non-existent I/O 8624ports. 8625 8626Modified the handling of FADT register and table (FACS/DSDT) addresses. 8627The 8628FADT can contain both 32-bit and 64-bit versions of these addresses. 8629Previously, the 64-bit versions were favored, meaning that if both 32 and 863064 8631versions were valid, but not equal, the 64-bit version was used. This was 8632found to cause some machines to fail. Now, in this case, the 32-bit 8633version 8634is used instead. This now matches the Windows behavior. 8635 8636Implemented a new mechanism to protect certain I/O ports. Provides 8637Microsoft 8638compatibility and protects the standard PC I/O ports from access via AML 8639code. Adds a new file, hwvalid.c 8640 8641Fixed a possible extraneous warning message from the FADT support. The 8642message warns of a 32/64 length mismatch between the legacy and GAS 8643definitions for a register. 8644 8645Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 8646is 8647made obsolete by the port protection mechanism above. It was previously 8648used 8649to validate the entire address range of an operation region, which could 8650be 8651incorrect if the range included illegal ports, but fields within the 8652operation region did not actually access those ports. Validation is now 8653performed on a per-field basis instead of the entire region. 8654 8655Modified the handling of the PM1 Status Register ignored bit (bit 11.) 8656Ignored bits must be "preserved" according to the ACPI spec. Usually, 8657this 8658means a read/modify/write when writing to the register. However, for 8659status 8660registers, writing a one means clear the event. Writing a zero means 8661preserve 8662the event (do not clear.) This behavior is clarified in the ACPI 4.0 8663spec, 8664and the ACPICA code now simply always writes a zero to the ignored bit. 8665 8666Modified the handling of ignored bits for the PM1 A/B Control Registers. 8667As 8668per the ACPI specification, for the control registers, preserve 8669(read/modify/write) all bits that are defined as either reserved or 8670ignored. 8671 8672Updated the handling of write-only bits in the PM1 A/B Control Registers. 8673When reading the register, zero the write-only bits as per the ACPI spec. 8674ACPICA BZ 443. Lin Ming. 8675 8676Removed "Linux" from the list of supported _OSI strings. Linux no longer 8677wants to reply true to this request. The Windows strings are the only 8678paths 8679through the AML that are tested and known to work properly. 8680 8681 Previous Release: 8682 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8683 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8684 Current Release: 8685 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8686 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8687 86882) iASL Compiler/Disassembler and Tools: 8689 8690Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 8691and 8692aetables.c 8693 8694---------------------------------------- 869520 February 2009. Summary of changes for version 20090220: 8696 86971) ACPI CA Core Subsystem: 8698 8699Optimized the ACPI register locking. Removed locking for reads from the 8700ACPI 8701bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 8702is 8703not required when reading the single-bit registers. The 8704AcpiGetRegisterUnlocked function is no longer needed and has been 8705removed. 8706This will improve performance for reads on these registers. ACPICA BZ 8707760. 8708 8709Fixed the parameter validation for AcpiRead/Write. Now return 8710AE_BAD_PARAMETER if the input register pointer is null, and 8711AE_BAD_ADDRESS 8712if 8713the register has an address of zero. Previously, these cases simply 8714returned 8715AE_OK. For optional registers such as PM1B status/enable/control, the 8716caller 8717should check for a valid register address before calling. ACPICA BZ 748. 8718 8719Renamed the external ACPI bit register access functions. Renamed 8720AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 8721functions. The new names are AcpiReadBitRegister and 8722AcpiWriteBitRegister. 8723Also, restructured the code for these functions by simplifying the code 8724path 8725and condensing duplicate code to reduce code size. 8726 8727Added new functions to transparently handle the possibly split PM1 A/B 8728registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 8729functions 8730now handle the split registers for PM1 Status, Enable, and Control. 8731ACPICA 8732BZ 8733746. 8734 8735Added a function to handle the PM1 control registers, 8736AcpiHwWritePm1Control. 8737This function writes both of the PM1 control registers (A/B). These 8738registers 8739are different than the PM1 A/B status and enable registers in that 8740different 8741values can be written to the A/B registers. Most notably, the SLP_TYP 8742bits 8743can be different, as per the values returned from the _Sx predefined 8744methods. 8745 8746Removed an extra register write within AcpiHwClearAcpiStatus. This 8747function 8748was writing an optional PM1B status register twice. The existing call to 8749the 8750low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 8751A/B 8752register. ACPICA BZ 751. 8753 8754Split out the PM1 Status registers from the FADT. Added new globals for 8755these 8756registers (A/B), similar to the way the PM1 Enable registers are handled. 8757Instead of overloading the FADT Event Register blocks. This makes the 8758code 8759clearer and less prone to error. 8760 8761Fixed the warning message for when the platform contains too many ACPI 8762tables 8763for the default size of the global root table data structure. The 8764calculation 8765for the truncation value was incorrect. 8766 8767Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 8768obsolete macro, since it is now a simple reference to ->common.type. 8769There 8770were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 8771 8772Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 8773TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 8774simply SLEEP_TYPE. ACPICA BZ 754. 8775 8776Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 8777function is only needed on 64-bit host operating systems and is thus not 8778included for 32-bit hosts. 8779 8780Debug output: print the input and result for invocations of the _OSI 8781reserved 8782control method via the ACPI_LV_INFO debug level. Also, reduced some of 8783the 8784verbosity of this debug level. Len Brown. 8785 8786Example Code and Data Size: These are the sizes for the OS-independent 8787acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8788debug version of the code includes the debug output trace mechanism and 8789has a 8790much larger code and data size. 8791 8792 Previous Release: 8793 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8794 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8795 Current Release: 8796 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8797 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8798 87992) iASL Compiler/Disassembler and Tools: 8800 8801Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 8802various legal performance profiles. 8803 8804---------------------------------------- 880523 January 2009. Summary of changes for version 20090123: 8806 88071) ACPI CA Core Subsystem: 8808 8809Added the 2009 copyright to all module headers and signons. This affects 8810virtually every file in the ACPICA core subsystem, the iASL compiler, and 8811the tools/utilities. 8812 8813Implemented a change to allow the host to override any ACPI table, 8814including 8815dynamically loaded tables. Previously, only the DSDT could be replaced by 8816the 8817host. With this change, the AcpiOsTableOverride interface is called for 8818each 8819table found in the RSDT/XSDT during ACPICA initialization, and also 8820whenever 8821a table is dynamically loaded via the AML Load operator. 8822 8823Updated FADT flag definitions, especially the Boot Architecture flags. 8824 8825Debugger: For the Find command, automatically pad the input ACPI name 8826with 8827underscores if the name is shorter than 4 characters. This enables a 8828match 8829with the actual namespace entry which is itself padded with underscores. 8830 8831Example Code and Data Size: These are the sizes for the OS-independent 8832acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8833debug version of the code includes the debug output trace mechanism and 8834has a 8835much larger code and data size. 8836 8837 Previous Release: 8838 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8839 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8840 Current Release: 8841 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8842 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8843 88442) iASL Compiler/Disassembler and Tools: 8845 8846Fix build error under Bison-2.4. 8847 8848Dissasembler: Enhanced FADT support. Added decoding of the Boot 8849Architecture 8850flags. Now decode all flags, regardless of the FADT version. Flag output 8851includes the FADT version which first defined each flag. 8852 8853The iASL -g option now dumps the RSDT to a file (in addition to the FADT 8854and 8855DSDT). Windows only. 8856 8857---------------------------------------- 885804 December 2008. Summary of changes for version 20081204: 8859 88601) ACPI CA Core Subsystem: 8861 8862The ACPICA Programmer Reference has been completely updated and revamped 8863for 8864this release. This includes updates to the external interfaces, OSL 8865interfaces, the overview sections, and the debugger reference. 8866 8867Several new ACPICA interfaces have been implemented and documented in the 8868programmer reference: 8869AcpiReset - Writes the reset value to the FADT-defined reset register. 8870AcpiDisableAllGpes - Disable all available GPEs. 8871AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 8872AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 8873AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 8874AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 8875AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 8876 8877Most of the public ACPI hardware-related interfaces have been moved to a 8878new 8879file, components/hardware/hwxface.c 8880 8881Enhanced the FADT parsing and low-level ACPI register access: The ACPI 8882register lengths within the FADT are now used, and the low level ACPI 8883register access no longer hardcodes the ACPI register lengths. Given that 8884there may be some risk in actually trusting the FADT register lengths, a 8885run- 8886time option was added to fall back to the default hardcoded lengths if 8887the 8888FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 8889option is set to true for now, and a warning is issued if a suspicious 8890FADT 8891register length is overridden with the default value. 8892 8893Fixed a reference count issue in NsRepairObject. This problem was 8894introduced 8895in version 20081031 as part of a fix to repair Buffer objects within 8896Packages. Lin Ming. 8897 8898Added semaphore support to the Linux/Unix application OS-services layer 8899(OSL). ACPICA BZ 448. Lin Ming. 8900 8901Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 8902will 8903be implemented in the OSL, or will binary semaphores be used instead. 8904 8905Example Code and Data Size: These are the sizes for the OS-independent 8906acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8907debug version of the code includes the debug output trace mechanism and 8908has a 8909much larger code and data size. 8910 8911 Previous Release: 8912 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8913 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8914 Current Release: 8915 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8916 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8917 89182) iASL Compiler/Disassembler and Tools: 8919 8920iASL: Completed the '-e' option to include additional ACPI tables in 8921order 8922to 8923aid with disassembly and External statement generation. ACPICA BZ 742. 8924Lin 8925Ming. 8926 8927iASL: Removed the "named object in while loop" error. The compiler cannot 8928determine how many times a loop will execute. ACPICA BZ 730. 8929 8930Disassembler: Implemented support for FADT revision 2 (MS extension). 8931ACPICA 8932BZ 743. 8933 8934Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 8935MCFG). 8936 8937---------------------------------------- 893831 October 2008. Summary of changes for version 20081031: 8939 89401) ACPI CA Core Subsystem: 8941 8942Restructured the ACPICA header files into public/private. acpi.h now 8943includes 8944only the "public" acpica headers. All other acpica headers are "private" 8945and 8946should not be included by acpica users. One new file, accommon.h is used 8947to 8948include the commonly used private headers for acpica code generation. 8949Future 8950plans include moving all private headers to a new subdirectory. 8951 8952Implemented an automatic Buffer->String return value conversion for 8953predefined ACPI methods. For these methods (such as _BIF), added 8954automatic 8955conversion for return objects that are required to be a String, but a 8956Buffer 8957was found instead. This can happen when reading string battery data from 8958an 8959operation region, because it used to be difficult to convert the data 8960from 8961buffer to string from within the ASL. Ensures that the host OS is 8962provided 8963with a valid null-terminated string. Linux BZ 11822. 8964 8965Updated the FACS waking vector interfaces. Split 8966AcpiSetFirmwareWakingVector 8967into two: one for the 32-bit vector, another for the 64-bit vector. This 8968is 8969required because the host OS must setup the wake much differently for 8970each 8971vector (real vs. protected mode, etc.) and the interface itself should 8972not 8973be 8974deciding which vector to use. Also, eliminated the 8975GetFirmwareWakingVector 8976interface, as it served no purpose (only the firmware reads the vector, 8977OS 8978only writes the vector.) ACPICA BZ 731. 8979 8980Implemented a mechanism to escape infinite AML While() loops. Added a 8981loop 8982counter to force exit from AML While loops if the count becomes too 8983large. 8984This can occur in poorly written AML when the hardware does not respond 8985within a while loop and the loop does not implement a timeout. The 8986maximum 8987loop count is configurable. A new exception code is returned when a loop 8988is 8989broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 8990 8991Optimized the execution of AML While loops. Previously, a control state 8992object was allocated and freed for each execution of the loop. The 8993optimization is to simply reuse the control state for each iteration. 8994This 8995speeds up the raw loop execution time by about 5%. 8996 8997Enhanced the implicit return mechanism. For Windows compatibility, return 8998an 8999implicit integer of value zero for methods that contain no executable 9000code. 9001Such methods are seen in the field as stubs (presumably), and can cause 9002drivers to fail if they expect a return value. Lin Ming. 9003 9004Allow multiple backslashes as root prefixes in namepaths. In a fully 9005qualified namepath, allow multiple backslash prefixes. This can happen 9006(and 9007is seen in the field) because of the use of a double-backslash in strings 9008(since backslash is the escape character) causing confusion. ACPICA BZ 9009739 9010Lin Ming. 9011 9012Emit a warning if two different FACS or DSDT tables are discovered in the 9013FADT. Checks if there are two valid but different addresses for the FACS 9014and 9015DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 9016 9017Consolidated the method argument count validation code. Merged the code 9018that 9019validates control method argument counts into the predefined validation 9020module. Eliminates possible multiple warnings for incorrect argument 9021counts. 9022 9023Implemented ACPICA example code. Includes code for ACPICA initialization, 9024handler installation, and calling a control method. Available at 9025source/tools/examples. 9026 9027Added a global pointer for FACS table to simplify internal FACS access. 9028Use 9029the global pointer instead of using AcpiGetTableByIndex for each FACS 9030access. 9031This simplifies the code for the Global Lock and the Firmware Waking 9032Vector(s). 9033 9034Example Code and Data Size: These are the sizes for the OS-independent 9035acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9036debug version of the code includes the debug output trace mechanism and 9037has a 9038much larger code and data size. 9039 9040 Previous Release: 9041 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9042 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9043 Current Release: 9044 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9045 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9046 90472) iASL Compiler/Disassembler and Tools: 9048 9049iASL: Improved disassembly of external method calls. Added the -e option 9050to 9051allow the inclusion of additional ACPI tables to help with the 9052disassembly 9053of 9054method invocations and the generation of external declarations during the 9055disassembly. Certain external method invocations cannot be disassembled 9056properly without the actual declaration of the method. Use the -e option 9057to 9058include the table where the external method(s) are actually declared. 9059Most 9060useful for disassembling SSDTs that make method calls back to the master 9061DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 9062-d 9063-e dsdt.aml ssdt1.aml 9064 9065iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 9066problem where the use of an alias within a namepath would result in a not 9067found error or cause the compiler to fault. Also now allows forward 9068references from the Alias operator itself. ACPICA BZ 738. 9069 9070---------------------------------------- 907126 September 2008. Summary of changes for version 20080926: 9072 90731) ACPI CA Core Subsystem: 9074 9075Designed and implemented a mechanism to validate predefined ACPI methods 9076and 9077objects. This code validates the predefined ACPI objects (objects whose 9078names 9079start with underscore) that appear in the namespace, at the time they are 9080evaluated. The argument count and the type of the returned object are 9081validated against the ACPI specification. The purpose of this validation 9082is 9083to detect problems with the BIOS-implemented predefined ACPI objects 9084before 9085the results are returned to the ACPI-related drivers. Future enhancements 9086may 9087include actual repair of incorrect return objects where possible. Two new 9088files are nspredef.c and acpredef.h. 9089 9090Fixed a fault in the AML parser if a memory allocation fails during the 9091Op 9092completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 9093 9094Fixed an issue with implicit return compatibility. This change improves 9095the 9096implicit return mechanism to be more compatible with the MS interpreter. 9097Lin 9098Ming, ACPICA BZ 349. 9099 9100Implemented support for zero-length buffer-to-string conversions. Allow 9101zero 9102length strings during interpreter buffer-to-string conversions. For 9103example, 9104during the ToDecimalString and ToHexString operators, as well as implicit 9105conversions. Fiodor Suietov, ACPICA BZ 585. 9106 9107Fixed two possible memory leaks in the error exit paths of 9108AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 9109are 9110similar in that they use a stack of state objects in order to eliminate 9111recursion. The stack must be fully unwound and deallocated if an error 9112occurs. Lin Ming. ACPICA BZ 383. 9113 9114Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 9115global 9116ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 9117Moore ACPICA BZ 442. 9118 9119Removed the obsolete version number in module headers. Removed the 9120"$Revision" number that appeared in each module header. This version 9121number 9122was useful under SourceSafe and CVS, but has no meaning under git. It is 9123not 9124only incorrect, it could also be misleading. 9125 9126Example Code and Data Size: These are the sizes for the OS-independent 9127acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9128debug version of the code includes the debug output trace mechanism and 9129has a 9130much larger code and data size. 9131 9132 Previous Release: 9133 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9134 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9135 Current Release: 9136 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9137 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9138 9139---------------------------------------- 914029 August 2008. Summary of changes for version 20080829: 9141 91421) ACPI CA Core Subsystem: 9143 9144Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 9145Reference. Changes include the elimination of cheating on the Object 9146field 9147for the DdbHandle subtype, addition of a reference class field to 9148differentiate the various reference types (instead of an AML opcode), and 9149the 9150cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 9151 9152Reduce an error to a warning for an incorrect method argument count. 9153Previously aborted with an error if too few arguments were passed to a 9154control method via the external ACPICA interface. Now issue a warning 9155instead 9156and continue. Handles the case where the method inadvertently declares 9157too 9158many arguments, but does not actually use the extra ones. Applies mainly 9159to 9160the predefined methods. Lin Ming. Linux BZ 11032. 9161 9162Disallow the evaluation of named object types with no intrinsic value. 9163Return 9164AE_TYPE for objects that have no value and therefore evaluation is 9165undefined: 9166Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 9167of 9168these types were allowed, but an exception would be generated at some 9169point 9170during the evaluation. Now, the error is generated up front. 9171 9172Fixed a possible memory leak in the AcpiNsGetExternalPathname function 9173(nsnames.c). Fixes a leak in the error exit path. 9174 9175Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 9176debug 9177levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 9178ACPI_EXCEPTION 9179interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 9180ACPI_LV_EVENTS. 9181 9182Removed obsolete and/or unused exception codes from the acexcep.h header. 9183There is the possibility that certain device drivers may be affected if 9184they 9185use any of these exceptions. 9186 9187The ACPICA documentation has been added to the public git source tree, 9188under 9189acpica/documents. Included are the ACPICA programmer reference, the iASL 9190compiler reference, and the changes.txt release logfile. 9191 9192Example Code and Data Size: These are the sizes for the OS-independent 9193acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9194debug version of the code includes the debug output trace mechanism and 9195has a 9196much larger code and data size. 9197 9198 Previous Release: 9199 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9200 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9201 Current Release: 9202 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9203 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9204 92052) iASL Compiler/Disassembler and Tools: 9206 9207Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 9208defines _SCP with 3 arguments. Previous versions defined it with only 1 9209argument. iASL now allows both definitions. 9210 9211iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 9212zero- 9213length subtables when disassembling ACPI tables. Also fixed a couple of 9214errors where a full 16-bit table type field was not extracted from the 9215input 9216properly. 9217 9218acpisrc: Improve comment counting mechanism for generating source code 9219statistics. Count first and last lines of multi-line comments as 9220whitespace, 9221not comment lines. Handle Linux legal header in addition to standard 9222acpica 9223header. 9224 9225---------------------------------------- 9226 922729 July 2008. Summary of changes for version 20080729: 9228 92291) ACPI CA Core Subsystem: 9230 9231Fix a possible deadlock in the GPE dispatch. Remove call to 9232AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 9233attempt 9234to acquire the GPE lock but can deadlock since the GPE lock is already 9235held 9236at dispatch time. This code was introduced in version 20060831 as a 9237response 9238to Linux BZ 6881 and has since been removed from Linux. 9239 9240Add a function to dereference returned reference objects. Examines the 9241return 9242object from a call to AcpiEvaluateObject. Any Index or RefOf references 9243are 9244automatically dereferenced in an attempt to return something useful 9245(these 9246reference types cannot be converted into an external ACPI_OBJECT.) 9247Provides 9248MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 9249 9250x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 9251subtables for the MADT and one new subtable for the SRAT. Includes 9252disassembler and AcpiSrc support. Data from the Intel 64 Architecture 9253x2APIC 9254Specification, June 2008. 9255 9256Additional error checking for pathname utilities. Add error check after 9257all 9258calls to AcpiNsGetPathnameLength. Add status return from 9259AcpiNsBuildExternalPath and check after all calls. Add parameter 9260validation 9261to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 9262 9263Return status from the global init function AcpiUtGlobalInitialize. This 9264is 9265used by both the kernel subsystem and the utilities such as iASL 9266compiler. 9267The function could possibly fail when the caches are initialized. Yang 9268Yi. 9269 9270Add a function to decode reference object types to strings. Created for 9271improved error messages. 9272 9273Improve object conversion error messages. Better error messages during 9274object 9275conversion from internal to the external ACPI_OBJECT. Used for external 9276calls 9277to AcpiEvaluateObject. 9278 9279Example Code and Data Size: These are the sizes for the OS-independent 9280acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9281debug version of the code includes the debug output trace mechanism and 9282has a 9283much larger code and data size. 9284 9285 Previous Release: 9286 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9287 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9288 Current Release: 9289 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9290 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9291 92922) iASL Compiler/Disassembler and Tools: 9293 9294Debugger: fix a possible hang when evaluating non-methods. Fixes a 9295problem 9296introduced in version 20080701. If the object being evaluated (via 9297execute 9298command) is not a method, the debugger can hang while trying to obtain 9299non- 9300existent parameters. 9301 9302iASL: relax error for using reserved "_T_x" identifiers. These names can 9303appear in a disassembled ASL file if they were emitted by the original 9304compiler. Instead of issuing an error or warning and forcing the user to 9305manually change these names, issue a remark instead. 9306 9307iASL: error if named object created in while loop. Emit an error if any 9308named 9309object is created within a While loop. If allowed, this code will 9310generate 9311a 9312run-time error on the second iteration of the loop when an attempt is 9313made 9314to 9315create the same named object twice. ACPICA bugzilla 730. 9316 9317iASL: Support absolute pathnames for include files. Add support for 9318absolute 9319pathnames within the Include operator. previously, only relative 9320pathnames 9321were supported. 9322 9323iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 9324Descriptor. 9325The ACPI spec requires one interrupt minimum. BZ 423 9326 9327iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 9328Handles the case for the Interrupt Resource Descriptor where 9329the ResourceSource argument is omitted but ResourceSourceIndex 9330is present. Now leave room for the Index. BZ 426 9331 9332iASL: Prevent error message if CondRefOf target does not exist. Fixes 9333cases 9334where an error message is emitted if the target does not exist. BZ 516 9335 9336iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 9337(get ACPI tables on Windows). This was apparently broken in version 933820070919. 9339 9340AcpiXtract: Handle EOF while extracting data. Correctly handle the case 9341where 9342the EOF happens immediately after the last table in the input file. Print 9343completion message. Previously, no message was displayed in this case. 9344 9345---------------------------------------- 934601 July 2008. Summary of changes for version 20080701: 9347 93480) Git source tree / acpica.org 9349 9350Fixed a problem where a git-clone from http would not transfer the entire 9351source tree. 9352 93531) ACPI CA Core Subsystem: 9354 9355Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 9356enable bit. Now performs a read-change-write of the enable register 9357instead 9358of simply writing out the cached enable mask. This will prevent 9359inadvertent 9360enabling of GPEs if a rogue GPE is received during initialization (before 9361GPE 9362handlers are installed.) 9363 9364Implemented a copy for dynamically loaded tables. Previously, dynamically 9365loaded tables were simply mapped - but on some machines this memory is 9366corrupted after suspend. Now copy the table to a local buffer. For the 9367OpRegion case, added checksum verify. Use the table length from the table 9368header, not the region length. For the Buffer case, use the table length 9369also. Dennis Noordsij, Bob Moore. BZ 10734 9370 9371Fixed a problem where the same ACPI table could not be dynamically loaded 9372and 9373unloaded more than once. Without this change, a table cannot be loaded 9374again 9375once it has been loaded/unloaded one time. The current mechanism does not 9376unregister a table upon an unload. During a load, if the same table is 9377found, 9378this no longer returns an exception. BZ 722 9379 9380Fixed a problem where the wrong descriptor length was calculated for the 9381EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 9382EndTag 9383are calculated as 12 bytes long, but the actual length in the internal 9384descriptor is 16 because of the round-up to 8 on the 64-bit build. 9385Reported 9386by Linn Crosetto. BZ 728 9387 9388Fixed a possible memory leak in the Unload operator. The DdbHandle 9389returned 9390by Load() did not have its reference count decremented during unload, 9391leading 9392to a memory leak. Lin Ming. BZ 727 9393 9394Fixed a possible memory leak when deleting thermal/processor objects. Any 9395associated notify handlers (and objects) were not being deleted. Fiodor 9396Suietov. BZ 506 9397 9398Fixed the ordering of the ASCII names in the global mutex table to match 9399the 9400actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 9401only. 9402Vegard Nossum. BZ 726 9403 9404Enhanced the AcpiGetObjectInfo interface to return the number of required 9405arguments if the object is a control method. Added this call to the 9406debugger 9407so the proper number of default arguments are passed to a method. This 9408prevents a warning when executing methods from AcpiExec. 9409 9410Added a check for an invalid handle in AcpiGetObjectInfo. Return 9411AE_BAD_PARAMETER if input handle is invalid. BZ 474 9412 9413Fixed an extraneous warning from exconfig.c on the 64-bit build. 9414 9415Example Code and Data Size: These are the sizes for the OS-independent 9416acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9417debug version of the code includes the debug output trace mechanism and 9418has a 9419much larger code and data size. 9420 9421 Previous Release: 9422 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9423 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9424 Current Release: 9425 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9426 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9427 94282) iASL Compiler/Disassembler and Tools: 9429 9430iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 9431resource descriptor names. 9432 9433iASL: Detect invalid ASCII characters in input (windows version). Removed 9434the 9435"-CF" flag from the flex compile, enables correct detection of non-ASCII 9436characters in the input. BZ 441 9437 9438iASL: Eliminate warning when result of LoadTable is not used. Eliminate 9439the 9440"result of operation not used" warning when the DDB handle returned from 9441LoadTable is not used. The warning is not needed. BZ 590 9442 9443AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 9444method 9445to 9446pass address of table to the AML. Added option to disable OpRegion 9447simulation 9448to allow creation of an OpRegion with a real address that was passed to 9449_CFG. 9450All of this allows testing of the Load and Unload operators from 9451AcpiExec. 9452 9453Debugger: update tables command for unloaded tables. Handle unloaded 9454tables 9455and use the standard table header output routine. 9456 9457---------------------------------------- 945809 June 2008. Summary of changes for version 20080609: 9459 94601) ACPI CA Core Subsystem: 9461 9462Implemented a workaround for reversed _PRT entries. A significant number 9463of 9464BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 9465change dynamically detects and repairs this problem. Provides 9466compatibility 9467with MS ACPI. BZ 6859 9468 9469Simplified the internal ACPI hardware interfaces to eliminate the locking 9470flag parameter from Register Read/Write. Added a new external interface, 9471AcpiGetRegisterUnlocked. 9472 9473Fixed a problem where the invocation of a GPE control method could hang. 9474This 9475was a regression introduced in 20080514. The new method argument count 9476validation mechanism can enter an infinite loop when a GPE method is 9477dispatched. Problem fixed by removing the obsolete code that passed GPE 9478block 9479information to the notify handler via the control method parameter 9480pointer. 9481 9482Fixed a problem where the _SST execution status was incorrectly returned 9483to 9484the caller of AcpiEnterSleepStatePrep. This was a regression introduced 9485in 948620080514. _SST is optional and a NOT_FOUND exception should never be 9487returned. BZ 716 9488 9489Fixed a problem where a deleted object could be accessed from within the 9490AML 9491parser. This was a regression introduced in version 20080123 as a fix for 9492the 9493Unload operator. Lin Ming. BZ 10669 9494 9495Cleaned up the debug operand dump mechanism. Eliminated unnecessary 9496operands 9497and eliminated the use of a negative index in a loop. Operands are now 9498displayed in the correct order, not backwards. This also fixes a 9499regression 9500introduced in 20080514 on 64-bit systems where the elimination of 9501ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 9502715 9503 9504Fixed a possible memory leak in EvPciConfigRegionSetup where the error 9505exit 9506path did not delete a locally allocated structure. 9507 9508Updated definitions for the DMAR and SRAT tables to synchronize with the 9509current specifications. Includes disassembler support. 9510 9511Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 9512loop termination value was used. Loop terminated on iteration early, 9513missing 9514one mutex. Linn Crosetto 9515 9516Example Code and Data Size: These are the sizes for the OS-independent 9517acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9518debug version of the code includes the debug output trace mechanism and 9519has a 9520much larger code and data size. 9521 9522 Previous Release: 9523 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9524 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9525 Current Release: 9526 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9527 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9528 95292) iASL Compiler/Disassembler and Tools: 9530 9531Disassembler: Implemented support for EisaId() within _CID objects. Now 9532disassemble integer _CID objects back to EisaId invocations, including 9533multiple integers within _CID packages. Includes single-step support for 9534debugger also. 9535 9536Disassembler: Added support for DMAR and SRAT table definition changes. 9537 9538---------------------------------------- 953914 May 2008. Summary of changes for version 20080514: 9540 95411) ACPI CA Core Subsystem: 9542 9543Fixed a problem where GPEs were enabled too early during the ACPICA 9544initialization. This could lead to "handler not installed" errors on some 9545machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 9546This 9547ensures that all operation regions and devices throughout the namespace 9548have 9549been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 9550 9551Implemented a change to the enter sleep code. Moved execution of the _GTS 9552method to just before setting sleep enable bit. The execution was moved 9553from 9554AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 9555immediately before the SLP_EN bit is set, as per the ACPI specification. 9556Luming Yu, BZ 1653. 9557 9558Implemented a fix to disable unknown GPEs (2nd version). Now always 9559disable 9560the GPE, even if ACPICA thinks that that it is already disabled. It is 9561possible that the AML or some other code has enabled the GPE unbeknownst 9562to 9563the ACPICA code. 9564 9565Fixed a problem with the Field operator where zero-length fields would 9566return 9567an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 9568ASL 9569field declarations in Field(), BankField(), and IndexField(). BZ 10606. 9570 9571Implemented a fix for the Load operator, now load the table at the 9572namespace 9573root. This reverts a change introduced in version 20071019. The table is 9574now 9575loaded at the namespace root even though this goes against the ACPI 9576specification. This provides compatibility with other ACPI 9577implementations. 9578The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 9579Ming. 9580 9581Fixed a problem where ACPICA would not Load() tables with unusual 9582signatures. 9583Now ignore ACPI table signature for Load() operator. Only "SSDT" is 9584acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 9585Therefore, signature validation is worthless. Apparently MS ACPI accepts 9586such 9587signatures, ACPICA must be compatible. BZ 10454. 9588 9589Fixed a possible negative array index in AcpiUtValidateException. Added 9590NULL 9591fields to the exception string arrays to eliminate a -1 subtraction on 9592the 9593SubStatus field. 9594 9595Updated the debug tracking macros to reduce overall code and data size. 9596Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 9597instead of pointers to static strings. Jan Beulich and Bob Moore. 9598 9599Implemented argument count checking in control method invocation via 9600AcpiEvaluateObject. Now emit an error if too few arguments, warning if 9601too 9602many. This applies only to extern programmatic control method execution, 9603not 9604method-to-method calls within the AML. Lin Ming. 9605 9606Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 9607no 9608longer needed, especially with the removal of 16-bit support. It was 9609replaced 9610mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 9611bit 9612on 961332/64-bit platforms is required. 9614 9615Added the C const qualifier for appropriate string constants -- mostly 9616MODULE_NAME and printf format strings. Jan Beulich. 9617 9618Example Code and Data Size: These are the sizes for the OS-independent 9619acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9620debug version of the code includes the debug output trace mechanism and 9621has a 9622much larger code and data size. 9623 9624 Previous Release: 9625 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9626 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9627 Current Release: 9628 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9629 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9630 96312) iASL Compiler/Disassembler and Tools: 9632 9633Implemented ACPI table revision ID validation in the disassembler. Zero 9634is 9635always invalid. For DSDTs, the ID controls the interpreter integer width. 96361 9637means 32-bit and this is unusual. 2 or greater is 64-bit. 9638 9639---------------------------------------- 964021 March 2008. Summary of changes for version 20080321: 9641 96421) ACPI CA Core Subsystem: 9643 9644Implemented an additional change to the GPE support in order to suppress 9645spurious or stray GPEs. The AcpiEvDisableGpe function will now 9646permanently 9647disable incoming GPEs that are neither enabled nor disabled -- meaning 9648that 9649the GPE is unknown to the system. This should prevent future interrupt 9650floods 9651from that GPE. BZ 6217 (Zhang Rui) 9652 9653Fixed a problem where NULL package elements were not returned to the 9654AcpiEvaluateObject interface correctly. The element was simply ignored 9655instead of returning a NULL ACPI_OBJECT package element, potentially 9656causing 9657a buffer overflow and/or confusing the caller who expected a fixed number 9658of 9659elements. BZ 10132 (Lin Ming, Bob Moore) 9660 9661Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 9662Dword, 9663Qword), Field, BankField, and IndexField operators when invoked from 9664inside 9665an executing control method. In this case, these operators created 9666namespace 9667nodes that were incorrectly left marked as permanent nodes instead of 9668temporary nodes. This could cause a problem if there is race condition 9669between an exiting control method and a running namespace walk. (Reported 9670by 9671Linn Crosetto) 9672 9673Fixed a problem where the CreateField and CreateXXXField operators would 9674incorrectly allow duplicate names (the name of the field) with no 9675exception 9676generated. 9677 9678Implemented several changes for Notify handling. Added support for new 9679Notify 9680values (ACPI 2.0+) and improved the Notify debug output. Notify on 9681PowerResource objects is no longer allowed, as per the ACPI 9682specification. 9683(Bob Moore, Zhang Rui) 9684 9685All Reference Objects returned via the AcpiEvaluateObject interface are 9686now 9687marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 9688for 9689NULL objects - either NULL package elements or unresolved named 9690references. 9691 9692Fixed a problem where an extraneous debug message was produced for 9693package 9694objects (when debugging enabled). The message "Package List length larger 9695than NumElements count" is now produced in the correct case, and is now 9696an 9697error message rather than a debug message. Added a debug message for the 9698opposite case, where NumElements is larger than the Package List (the 9699package 9700will be padded out with NULL elements as per the ACPI spec.) 9701 9702Implemented several improvements for the output of the ASL "Debug" object 9703to 9704clarify and keep all data for a given object on one output line. 9705 9706Fixed two size calculation issues with the variable-length Start 9707Dependent 9708resource descriptor. 9709 9710Example Code and Data Size: These are the sizes for the OS-independent 9711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9712debug version of the code includes the debug output trace mechanism and 9713has 9714a much larger code and data size. 9715 9716 Previous Release: 9717 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9718 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9719 Current Release: 9720 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9721 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9722 97232) iASL Compiler/Disassembler and Tools: 9724 9725Fixed a problem with the use of the Switch operator where execution of 9726the 9727containing method by multiple concurrent threads could cause an 9728AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 9729actual Switch opcode, it must be simulated with local named temporary 9730variables and if/else pairs. The solution chosen was to mark any method 9731that 9732uses Switch as Serialized, thus preventing multiple thread entries. BZ 9733469. 9734 9735---------------------------------------- 973613 February 2008. Summary of changes for version 20080213: 9737 97381) ACPI CA Core Subsystem: 9739 9740Implemented another MS compatibility design change for GPE/Notify 9741handling. 9742GPEs are now cleared/enabled asynchronously to allow all pending notifies 9743to 9744complete first. It is expected that the OSL will queue the enable request 9745behind all pending notify requests (may require changes to the local host 9746OSL 9747in AcpiOsExecute). Alexey Starikovskiy. 9748 9749Fixed a problem where buffer and package objects passed as arguments to a 9750control method via the external AcpiEvaluateObject interface could cause 9751an 9752AE_AML_INTERNAL exception depending on the order and type of operators 9753executed by the target control method. 9754 9755Fixed a problem where resource descriptor size optimization could cause a 9756problem when a _CRS resource template is passed to a _SRS method. The 9757_SRS 9758resource template must use the same descriptors (with the same size) as 9759returned from _CRS. This change affects the following resource 9760descriptors: 9761IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 97629487) 9763 9764Fixed a problem where a CopyObject to RegionField, BankField, and 9765IndexField 9766objects did not perform an implicit conversion as it should. These types 9767must 9768retain their initial type permanently as per the ACPI specification. 9769However, 9770a CopyObject to all other object types should not perform an implicit 9771conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 9772 9773Fixed a problem with the AcpiGetDevices interface where the mechanism to 9774match device CIDs did not examine the entire list of available CIDs, but 9775instead aborted on the first non-matching CID. Andrew Patterson. 9776 9777Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 9778was 9779inadvertently changed to return a 16-bit value instead of a 32-bit value, 9780truncating the upper dword of a 64-bit value. This macro is only used to 9781display debug output, so no incorrect calculations were made. Also, 9782reimplemented the macro so that a 64-bit shift is not performed by 9783inefficient compilers. 9784 9785Added missing va_end statements that should correspond with each va_start 9786statement. 9787 9788Example Code and Data Size: These are the sizes for the OS-independent 9789acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9790debug version of the code includes the debug output trace mechanism and 9791has 9792a much larger code and data size. 9793 9794 Previous Release: 9795 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9796 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9797 Current Release: 9798 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9799 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9800 98012) iASL Compiler/Disassembler and Tools: 9802 9803Implemented full disassembler support for the following new ACPI tables: 9804BERT, EINJ, and ERST. Implemented partial disassembler support for the 9805complicated HEST table. These tables support the Windows Hardware Error 9806Architecture (WHEA). 9807 9808---------------------------------------- 980923 January 2008. Summary of changes for version 20080123: 9810 98111) ACPI CA Core Subsystem: 9812 9813Added the 2008 copyright to all module headers and signons. This affects 9814virtually every file in the ACPICA core subsystem, the iASL compiler, and 9815the tools/utilities. 9816 9817Fixed a problem with the SizeOf operator when used with Package and 9818Buffer 9819objects. These objects have deferred execution for some arguments, and 9820the 9821execution is now completed before the SizeOf is executed. This problem 9822caused 9823unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 9824BZ 98259558 9826 9827Implemented an enhancement to the interpreter "slack mode". In the 9828absence 9829of 9830an explicit return or an implicitly returned object from the last 9831executed 9832opcode, a control method will now implicitly return an integer of value 0 9833for 9834Microsoft compatibility. (Lin Ming) BZ 392 9835 9836Fixed a problem with the Load operator where an exception was not 9837returned 9838in 9839the case where the table is already loaded. (Lin Ming) BZ 463 9840 9841Implemented support for the use of DDBHandles as an Indexed Reference, as 9842per 9843the ACPI spec. (Lin Ming) BZ 486 9844 9845Implemented support for UserTerm (Method invocation) for the Unload 9846operator 9847as per the ACPI spec. (Lin Ming) BZ 580 9848 9849Fixed a problem with the LoadTable operator where the OemId and 9850OemTableId 9851input strings could cause unexpected failures if they were shorter than 9852the 9853maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 9854 9855Implemented support for UserTerm (Method invocation) for the Unload 9856operator 9857as per the ACPI spec. (Lin Ming) BZ 580 9858 9859Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 9860HEST, 9861IBFT, UEFI, WDAT. Disassembler support is forthcoming. 9862 9863Example Code and Data Size: These are the sizes for the OS-independent 9864acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9865debug version of the code includes the debug output trace mechanism and 9866has 9867a much larger code and data size. 9868 9869 Previous Release: 9870 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9871 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9872 Current Release: 9873 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9874 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9875 98762) iASL Compiler/Disassembler and Tools: 9877 9878Implemented support in the disassembler for checksum validation on 9879incoming 9880binary DSDTs and SSDTs. If incorrect, a message is displayed within the 9881table 9882header dump at the start of the disassembly. 9883 9884Implemented additional debugging information in the namespace listing 9885file 9886created during compilation. In addition to the namespace hierarchy, the 9887full 9888pathname to each namespace object is displayed. 9889 9890Fixed a problem with the disassembler where invalid ACPI tables could 9891cause 9892faults or infinite loops. 9893 9894Fixed an unexpected parse error when using the optional "parameter types" 9895list in a control method declaration. (Lin Ming) BZ 397 9896 9897Fixed a problem where two External declarations with the same name did 9898not 9899cause an error (Lin Ming) BZ 509 9900 9901Implemented support for full TermArgs (adding Argx, Localx and method 9902invocation) for the ParameterData parameter to the LoadTable operator. 9903(Lin 9904Ming) BZ 583,587 9905 9906---------------------------------------- 990719 December 2007. Summary of changes for version 20071219: 9908 99091) ACPI CA Core Subsystem: 9910 9911Implemented full support for deferred execution for the TermArg string 9912arguments for DataTableRegion. This enables forward references and full 9913operand resolution for the three string arguments. Similar to 9914OperationRegion 9915deferred argument execution.) Lin Ming. BZ 430 9916 9917Implemented full argument resolution support for the BankValue argument 9918to 9919BankField. Previously, only constants were supported, now any TermArg may 9920be 9921used. Lin Ming BZ 387, 393 9922 9923Fixed a problem with AcpiGetDevices where the search of a branch of the 9924device tree could be terminated prematurely. In accordance with the ACPI 9925specification, the search down the current branch is terminated if a 9926device 9927is both not present and not functional (instead of just not present.) 9928Yakui 9929Zhao. 9930 9931Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 9932if 9933the underlying AML code changed the GPE enable registers. Now, any 9934unknown 9935incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 9936disabled 9937instead of simply ignored. Rui Zhang. 9938 9939Fixed a problem with Index Fields where the Index register was 9940incorrectly 9941limited to a maximum of 32 bits. Now any size may be used. 9942 9943Fixed a couple memory leaks associated with "implicit return" objects 9944when 9945the AML Interpreter slack mode is enabled. Lin Ming BZ 349 9946 9947Example Code and Data Size: These are the sizes for the OS-independent 9948acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9949debug version of the code includes the debug output trace mechanism and 9950has 9951a much larger code and data size. 9952 9953 Previous Release: 9954 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9955 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9956 Current Release: 9957 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9958 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9959 9960---------------------------------------- 996114 November 2007. Summary of changes for version 20071114: 9962 99631) ACPI CA Core Subsystem: 9964 9965Implemented event counters for each of the Fixed Events, the ACPI SCI 9966(interrupt) itself, and control methods executed. Named 9967AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 9968These 9969should be useful for debugging and statistics. 9970 9971Implemented a new external interface, AcpiGetStatistics, to retrieve the 9972contents of the various event counters. Returns the current values for 9973AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 9974AcpiMethodCount. The interface can be expanded in the future if new 9975counters 9976are added. Device drivers should use this interface rather than access 9977the 9978counters directly. 9979 9980Fixed a problem with the FromBCD and ToBCD operators. With some 9981compilers, 9982the ShortDivide function worked incorrectly, causing problems with the 9983BCD 9984functions with large input values. A truncation from 64-bit to 32-bit 9985inadvertently occurred. Internal BZ 435. Lin Ming 9986 9987Fixed a problem with Index references passed as method arguments. 9988References 9989passed as arguments to control methods were dereferenced immediately 9990(before 9991control was passed to the called method). The references are now 9992correctly 9993passed directly to the called method. BZ 5389. Lin Ming 9994 9995Fixed a problem with CopyObject used in conjunction with the Index 9996operator. 9997The reference was incorrectly dereferenced before the copy. The reference 9998is 9999now correctly copied. BZ 5391. Lin Ming 10000 10001Fixed a problem with Control Method references within Package objects. 10002These 10003references are now correctly generated. This completes the package 10004construction overhaul that began in version 20071019. 10005 10006Example Code and Data Size: These are the sizes for the OS-independent 10007acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10008debug version of the code includes the debug output trace mechanism and 10009has 10010a much larger code and data size. 10011 10012 Previous Release: 10013 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10014 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10015 Current Release: 10016 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10017 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10018 10019 100202) iASL Compiler/Disassembler and Tools: 10021 10022The AcpiExec utility now installs handlers for all of the predefined 10023Operation Region types. New types supported are: PCI_Config, CMOS, and 10024PCIBARTarget. 10025 10026Fixed a problem with the 64-bit version of AcpiExec where the extended 10027(64- 10028bit) address fields for the DSDT and FACS within the FADT were not being 10029used, causing truncation of the upper 32-bits of these addresses. Lin 10030Ming 10031and Bob Moore 10032 10033---------------------------------------- 1003419 October 2007. Summary of changes for version 20071019: 10035 100361) ACPI CA Core Subsystem: 10037 10038Fixed a problem with the Alias operator when the target of the alias is a 10039named ASL operator that opens a new scope -- Scope, Device, 10040PowerResource, 10041Processor, and ThermalZone. In these cases, any children of the original 10042operator could not be accessed via the alias, potentially causing 10043unexpected 10044AE_NOT_FOUND exceptions. (BZ 9067) 10045 10046Fixed a problem with the Package operator where all named references were 10047created as object references and left otherwise unresolved. According to 10048the 10049ACPI specification, a Package can only contain Data Objects or references 10050to 10051control methods. The implication is that named references to Data Objects 10052(Integer, Buffer, String, Package, BufferField, Field) should be resolved 10053immediately upon package creation. This is the approach taken with this 10054change. References to all other named objects (Methods, Devices, Scopes, 10055etc.) are all now properly created as reference objects. (BZ 5328) 10056 10057Reverted a change to Notify handling that was introduced in version 1005820070508. This version changed the Notify handling from asynchronous to 10059fully synchronous (Device driver Notify handling with respect to the 10060Notify 10061ASL operator). It was found that this change caused more problems than it 10062solved and was removed by most users. 10063 10064Fixed a problem with the Increment and Decrement operators where the type 10065of 10066the target object could be unexpectedly and incorrectly changed. (BZ 353) 10067Lin Ming. 10068 10069Fixed a problem with the Load and LoadTable operators where the table 10070location within the namespace was ignored. Instead, the table was always 10071loaded into the root or current scope. Lin Ming. 10072 10073Fixed a problem with the Load operator when loading a table from a buffer 10074object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 10075 10076Fixed a problem with the Debug object where a store of a DdbHandle 10077reference 10078object to the Debug object could cause a fault. 10079 10080Added a table checksum verification for the Load operator, in the case 10081where 10082the load is from a buffer. (BZ 578). 10083 10084Implemented additional parameter validation for the LoadTable operator. 10085The 10086length of the input strings SignatureString, OemIdString, and OemTableId 10087are 10088now checked for maximum lengths. (BZ 582) Lin Ming. 10089 10090Example Code and Data Size: These are the sizes for the OS-independent 10091acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10092debug version of the code includes the debug output trace mechanism and 10093has 10094a much larger code and data size. 10095 10096 Previous Release: 10097 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10098 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10099 Current Release: 10100 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10101 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10102 10103 101042) iASL Compiler/Disassembler: 10105 10106Fixed a problem where if a single file was specified and the file did not 10107exist, no error message was emitted. (Introduced with wildcard support in 10108version 20070917.) 10109 10110---------------------------------------- 1011119 September 2007. Summary of changes for version 20070919: 10112 101131) ACPI CA Core Subsystem: 10114 10115Designed and implemented new external interfaces to install and remove 10116handlers for ACPI table-related events. Current events that are defined 10117are 10118LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 10119they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 10120AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 10121 10122Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 10123(acpi_serialized option on Linux) could cause some systems to hang during 10124initialization. (Bob Moore) BZ 8171 10125 10126Fixed a problem where objects of certain types (Device, ThermalZone, 10127Processor, PowerResource) can be not found if they are declared and 10128referenced from within the same control method (Lin Ming) BZ 341 10129 10130Example Code and Data Size: These are the sizes for the OS-independent 10131acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10132debug version of the code includes the debug output trace mechanism and 10133has 10134a much larger code and data size. 10135 10136 Previous Release: 10137 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10138 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10139 Current Release: 10140 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10141 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10142 10143 101442) iASL Compiler/Disassembler: 10145 10146Implemented support to allow multiple files to be compiled/disassembled 10147in 10148a 10149single invocation. This includes command line wildcard support for both 10150the 10151Windows and Unix versions of the compiler. This feature simplifies the 10152disassembly and compilation of multiple ACPI tables in a single 10153directory. 10154 10155---------------------------------------- 1015608 May 2007. Summary of changes for version 20070508: 10157 101581) ACPI CA Core Subsystem: 10159 10160Implemented a Microsoft compatibility design change for the handling of 10161the 10162Notify AML operator. Previously, notify handlers were dispatched and 10163executed completely asynchronously in a deferred thread. The new design 10164still executes the notify handlers in a different thread, but the 10165original 10166thread that executed the Notify() now waits at a synchronization point 10167for 10168the notify handler to complete. Some machines depend on a synchronous 10169Notify 10170operator in order to operate correctly. 10171 10172Implemented support to allow Package objects to be passed as method 10173arguments to the external AcpiEvaluateObject interface. Previously, this 10174would return the AE_NOT_IMPLEMENTED exception. This feature had not been 10175implemented since there were no reserved control methods that required it 10176until recently. 10177 10178Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 10179that 10180contained invalid non-zero values in reserved fields could cause later 10181failures because these fields have meaning in later revisions of the 10182FADT. 10183For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 10184fields 10185are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 10186 10187Fixed a problem where the Global Lock handle was not properly updated if 10188a 10189thread that acquired the Global Lock via executing AML code then 10190attempted 10191to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 10192Joe 10193Liu. 10194 10195Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 10196could be corrupted if the interrupt being removed was at the head of the 10197list. Reported by Linn Crosetto. 10198 10199Example Code and Data Size: These are the sizes for the OS-independent 10200acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10201debug version of the code includes the debug output trace mechanism and 10202has 10203a much larger code and data size. 10204 10205 Previous Release: 10206 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10207 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10208 Current Release: 10209 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10210 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10211 10212---------------------------------------- 1021320 March 2007. Summary of changes for version 20070320: 10214 102151) ACPI CA Core Subsystem: 10216 10217Implemented a change to the order of interpretation and evaluation of AML 10218operand objects within the AML interpreter. The interpreter now evaluates 10219operands in the order that they appear in the AML stream (and the 10220corresponding ASL code), instead of in the reverse order (after the 10221entire 10222operand list has been parsed). The previous behavior caused several 10223subtle 10224incompatibilities with the Microsoft AML interpreter as well as being 10225somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 10226 10227Implemented a change to the ACPI Global Lock support. All interfaces to 10228the 10229global lock now allow the same thread to acquire the lock multiple times. 10230This affects the AcpiAcquireGlobalLock external interface to the global 10231lock 10232as well as the internal use of the global lock to support AML fields -- a 10233control method that is holding the global lock can now simultaneously 10234access 10235AML fields that require global lock protection. Previously, in both 10236cases, 10237this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 10238to 10239AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 10240Controller. There is no change to the behavior of the AML Acquire 10241operator, 10242as this can already be used to acquire a mutex multiple times by the same 10243thread. BZ 8066. With assistance from Alexey Starikovskiy. 10244 10245Fixed a problem where invalid objects could be referenced in the AML 10246Interpreter after error conditions. During operand evaluation, ensure 10247that 10248the internal "Return Object" field is cleared on error and only valid 10249pointers are stored there. Caused occasional access to deleted objects 10250that 10251resulted in "large reference count" warning messages. Valery Podrezov. 10252 10253Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 10254on 10255deeply nested control method invocations. BZ 7873, local BZ 487. Valery 10256Podrezov. 10257 10258Fixed an internal problem with the handling of result objects on the 10259interpreter result stack. BZ 7872. Valery Podrezov. 10260 10261Removed obsolete code that handled the case where AML_NAME_OP is the 10262target 10263of a reference (Reference.Opcode). This code was no longer necessary. BZ 102647874. Valery Podrezov. 10265 10266Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 10267was 10268a 10269remnant from the previously discontinued 16-bit support. 10270 10271Example Code and Data Size: These are the sizes for the OS-independent 10272acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10273debug version of the code includes the debug output trace mechanism and 10274has 10275a much larger code and data size. 10276 10277 Previous Release: 10278 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10279 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10280 Current Release: 10281 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10282 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10283 10284---------------------------------------- 1028526 January 2007. Summary of changes for version 20070126: 10286 102871) ACPI CA Core Subsystem: 10288 10289Added the 2007 copyright to all module headers and signons. This affects 10290virtually every file in the ACPICA core subsystem, the iASL compiler, and 10291the utilities. 10292 10293Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 10294during a table load. A bad pointer was passed in the case where the DSDT 10295is 10296overridden, causing a fault in this case. 10297 10298Example Code and Data Size: These are the sizes for the OS-independent 10299acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10300debug version of the code includes the debug output trace mechanism and 10301has 10302a much larger code and data size. 10303 10304 Previous Release: 10305 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10306 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10307 Current Release: 10308 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10309 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10310 10311---------------------------------------- 1031215 December 2006. Summary of changes for version 20061215: 10313 103141) ACPI CA Core Subsystem: 10315 10316Support for 16-bit ACPICA has been completely removed since it is no 10317longer 10318necessary and it clutters the code. All 16-bit macros, types, and 10319conditional compiles have been removed, cleaning up and simplifying the 10320code 10321across the entire subsystem. DOS support is no longer needed since the 10322bootable Linux firmware kit is now available. 10323 10324The handler for the Global Lock is now removed during AcpiTerminate to 10325enable a clean subsystem restart, via the implementation of the 10326AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 10327HP) 10328 10329Implemented enhancements to the multithreading support within the 10330debugger 10331to enable improved multithreading debugging and evaluation of the 10332subsystem. 10333(Valery Podrezov) 10334 10335Debugger: Enhanced the Statistics/Memory command to emit the total 10336(maximum) 10337memory used during the execution, as well as the maximum memory consumed 10338by 10339each of the various object types. (Valery Podrezov) 10340 10341Example Code and Data Size: These are the sizes for the OS-independent 10342acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10343debug version of the code includes the debug output trace mechanism and 10344has 10345a much larger code and data size. 10346 10347 Previous Release: 10348 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10349 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10350 Current Release: 10351 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10352 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10353 10354 103552) iASL Compiler/Disassembler and Tools: 10356 10357AcpiExec: Implemented a new option (-m) to display full memory use 10358statistics upon subsystem/program termination. (Valery Podrezov) 10359 10360---------------------------------------- 1036109 November 2006. Summary of changes for version 20061109: 10362 103631) ACPI CA Core Subsystem: 10364 10365Optimized the Load ASL operator in the case where the source operand is 10366an 10367operation region. Simply map the operation region memory, instead of 10368performing a bytewise read. (Region must be of type SystemMemory, see 10369below.) 10370 10371Fixed the Load ASL operator for the case where the source operand is a 10372region field. A buffer object is also allowed as the source operand. BZ 10373480 10374 10375Fixed a problem where the Load ASL operator allowed the source operand to 10376be 10377an operation region of any type. It is now restricted to regions of type 10378SystemMemory, as per the ACPI specification. BZ 481 10379 10380Additional cleanup and optimizations for the new Table Manager code. 10381 10382AcpiEnable will now fail if all of the required ACPI tables are not 10383loaded 10384(FADT, FACS, DSDT). BZ 477 10385 10386Added #pragma pack(8/4) to acobject.h to ensure that the structures in 10387this 10388header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 10389manually optimized to be aligned and will not work if it is byte-packed. 10390 10391Example Code and Data Size: These are the sizes for the OS-independent 10392acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10393debug version of the code includes the debug output trace mechanism and 10394has 10395a much larger code and data size. 10396 10397 Previous Release: 10398 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10399 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10400 Current Release: 10401 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10402 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10403 10404 104052) iASL Compiler/Disassembler and Tools: 10406 10407Fixed a problem where the presence of the _OSI predefined control method 10408within complex expressions could cause an internal compiler error. 10409 10410AcpiExec: Implemented full region support for multiple address spaces. 10411SpaceId is now part of the REGION object. BZ 429 10412 10413---------------------------------------- 1041411 October 2006. Summary of changes for version 20061011: 10415 104161) ACPI CA Core Subsystem: 10417 10418Completed an AML interpreter performance enhancement for control method 10419execution. Previously a 2-pass parse/execution, control methods are now 10420completely parsed and executed in a single pass. This improves overall 10421interpreter performance by ~25%, reduces code size, and reduces CPU stack 10422use. (Valery Podrezov + interpreter changes in version 20051202 that 10423eliminated namespace loading during the pass one parse.) 10424 10425Implemented _CID support for PCI Root Bridge detection. If the _HID does 10426not 10427match the predefined PCI Root Bridge IDs, the _CID list (if present) is 10428now 10429obtained and also checked for an ID match. 10430 10431Implemented additional support for the PCI _ADR execution: upsearch until 10432a 10433device scope is found before executing _ADR. This allows PCI_Config 10434operation regions to be declared locally within control methods 10435underneath 10436PCI device objects. 10437 10438Fixed a problem with a possible race condition between threads executing 10439AcpiWalkNamespace and the AML interpreter. This condition was removed by 10440modifying AcpiWalkNamespace to (by default) ignore all temporary 10441namespace 10442entries created during any concurrent control method execution. An 10443additional namespace race condition is known to exist between 10444AcpiWalkNamespace and the Load/Unload ASL operators and is still under 10445investigation. 10446 10447Restructured the AML ParseLoop function, breaking it into several 10448subfunctions in order to reduce CPU stack use and improve 10449maintainability. 10450(Mikhail Kouzmich) 10451 10452AcpiGetHandle: Fix for parameter validation to detect invalid 10453combinations 10454of prefix handle and pathname. BZ 478 10455 10456Example Code and Data Size: These are the sizes for the OS-independent 10457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10458debug version of the code includes the debug output trace mechanism and 10459has 10460a much larger code and data size. 10461 10462 Previous Release: 10463 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10464 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10465 Current Release: 10466 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10467 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10468 104692) iASL Compiler/Disassembler and Tools: 10470 10471Ported the -g option (get local ACPI tables) to the new ACPICA Table 10472Manager 10473to restore original behavior. 10474 10475---------------------------------------- 1047627 September 2006. Summary of changes for version 20060927: 10477 104781) ACPI CA Core Subsystem: 10479 10480Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 10481These functions now use a spinlock for mutual exclusion and the interrupt 10482level indication flag is not needed. 10483 10484Fixed a problem with the Global Lock where the lock could appear to be 10485obtained before it is actually obtained. The global lock semaphore was 10486inadvertently created with one unit instead of zero units. (BZ 464) 10487Fiodor 10488Suietov. 10489 10490Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 10491during 10492a read from a buffer or region field. (BZ 458) Fiodor Suietov. 10493 10494Example Code and Data Size: These are the sizes for the OS-independent 10495acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10496debug version of the code includes the debug output trace mechanism and 10497has 10498a much larger code and data size. 10499 10500 Previous Release: 10501 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10502 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10503 Current Release: 10504 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10505 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10506 10507 105082) iASL Compiler/Disassembler and Tools: 10509 10510Fixed a compilation problem with the pre-defined Resource Descriptor 10511field 10512names where an "object does not exist" error could be incorrectly 10513generated 10514if the parent ResourceTemplate pathname places the template within a 10515different namespace scope than the current scope. (BZ 7212) 10516 10517Fixed a problem where the compiler could hang after syntax errors 10518detected 10519in an ElseIf construct. (BZ 453) 10520 10521Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 10522operator. An incorrect output filename was produced when this parameter 10523was 10524a null string (""). Now, the original input filename is used as the AML 10525output filename, with an ".aml" extension. 10526 10527Implemented a generic batch command mode for the AcpiExec utility 10528(execute 10529any AML debugger command) (Valery Podrezov). 10530 10531---------------------------------------- 1053212 September 2006. Summary of changes for version 20060912: 10533 105341) ACPI CA Core Subsystem: 10535 10536Enhanced the implementation of the "serialized mode" of the interpreter 10537(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 10538specified, instead of creating a serialization semaphore per control 10539method, 10540the interpreter lock is simply no longer released before a blocking 10541operation during control method execution. This effectively makes the AML 10542Interpreter single-threaded. The overhead of a semaphore per-method is 10543eliminated. 10544 10545Fixed a regression where an error was no longer emitted if a control 10546method 10547attempts to create 2 objects of the same name. This once again returns 10548AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 10549that 10550will dynamically serialize the control method to possible prevent future 10551errors. (BZ 440) 10552 10553Integrated a fix for a problem with PCI Express HID detection in the PCI 10554Config Space setup procedure. (BZ 7145) 10555 10556Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 10557AcpiHwInitialize function - the FADT registers are now validated when the 10558table is loaded. 10559 10560Added two new warnings during FADT verification - 1) if the FADT is 10561larger 10562than the largest known FADT version, and 2) if there is a mismatch 10563between 10564a 1056532-bit block address and the 64-bit X counterpart (when both are non- 10566zero.) 10567 10568Example Code and Data Size: These are the sizes for the OS-independent 10569acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10570debug version of the code includes the debug output trace mechanism and 10571has 10572a much larger code and data size. 10573 10574 Previous Release: 10575 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10576 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10577 Current Release: 10578 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10579 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10580 10581 105822) iASL Compiler/Disassembler and Tools: 10583 10584Fixed a problem with the implementation of the Switch() operator where 10585the 10586temporary variable was declared too close to the actual Switch, instead 10587of 10588at method level. This could cause a problem if the Switch() operator is 10589within a while loop, causing an error on the second iteration. (BZ 460) 10590 10591Disassembler - fix for error emitted for unknown type for target of scope 10592operator. Now, ignore it and continue. 10593 10594Disassembly of an FADT now verifies the input FADT and reports any errors 10595found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 10596 10597Disassembly of raw data buffers with byte initialization data now 10598prefixes 10599each output line with the current buffer offset. 10600 10601Disassembly of ASF! table now includes all variable-length data fields at 10602the end of some of the subtables. 10603 10604The disassembler now emits a comment if a buffer appears to be a 10605ResourceTemplate, but cannot be disassembled as such because the EndTag 10606does 10607not appear at the very end of the buffer. 10608 10609AcpiExec - Added the "-t" command line option to enable the serialized 10610mode 10611of the AML interpreter. 10612 10613---------------------------------------- 1061431 August 2006. Summary of changes for version 20060831: 10615 106161) ACPI CA Core Subsystem: 10617 10618Miscellaneous fixes for the Table Manager: 10619- Correctly initialize internal common FADT for all 64-bit "X" fields 10620- Fixed a couple table mapping issues during table load 10621- Fixed a couple alignment issues for IA64 10622- Initialize input array to zero in AcpiInitializeTables 10623- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 10624AcpiGetTableByIndex 10625 10626Change for GPE support: when a "wake" GPE is received, all wake GPEs are 10627now 10628immediately disabled to prevent the waking GPE from firing again and to 10629prevent other wake GPEs from interrupting the wake process. 10630 10631Added the AcpiGpeCount global that tracks the number of processed GPEs, 10632to 10633be used for debugging systems with a large number of ACPI interrupts. 10634 10635Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 10636both the ACPICA headers and the disassembler. 10637 10638Example Code and Data Size: These are the sizes for the OS-independent 10639acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10640debug version of the code includes the debug output trace mechanism and 10641has 10642a much larger code and data size. 10643 10644 Previous Release: 10645 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10646 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10647 Current Release: 10648 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10649 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10650 10651 106522) iASL Compiler/Disassembler and Tools: 10653 10654Disassembler support for the DMAR ACPI table. 10655 10656---------------------------------------- 1065723 August 2006. Summary of changes for version 20060823: 10658 106591) ACPI CA Core Subsystem: 10660 10661The Table Manager component has been completely redesigned and 10662reimplemented. The new design is much simpler, and reduces the overall 10663code 10664and data size of the kernel-resident ACPICA by approximately 5%. Also, it 10665is 10666now possible to obtain the ACPI tables very early during kernel 10667initialization, even before dynamic memory management is initialized. 10668(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 10669 10670Obsolete ACPICA interfaces: 10671 10672- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 10673init 10674time). 10675- AcpiLoadTable: Not needed. 10676- AcpiUnloadTable: Not needed. 10677 10678New ACPICA interfaces: 10679 10680- AcpiInitializeTables: Must be called before the table manager can be 10681used. 10682- AcpiReallocateRootTable: Used to transfer the root table to dynamically 10683allocated memory after it becomes available. 10684- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 10685tables 10686in the RSDT/XSDT. 10687 10688Other ACPICA changes: 10689 10690- AcpiGetTableHeader returns the actual mapped table header, not a copy. 10691Use 10692AcpiOsUnmapMemory to free this mapping. 10693- AcpiGetTable returns the actual mapped table. The mapping is managed 10694internally and must not be deleted by the caller. Use of this interface 10695causes no additional dynamic memory allocation. 10696- AcpiFindRootPointer: Support for physical addressing has been 10697eliminated, 10698it appeared to be unused. 10699- The interface to AcpiOsMapMemory has changed to be consistent with the 10700other allocation interfaces. 10701- The interface to AcpiOsGetRootPointer has changed to eliminate 10702unnecessary 10703parameters. 10704- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1070564- 10706bit platforms. Was previously 64 bits on all platforms. 10707- The interface to the ACPI Global Lock acquire/release macros have 10708changed 10709slightly since ACPICA no longer keeps a local copy of the FACS with a 10710constructed pointer to the actual global lock. 10711 10712Porting to the new table manager: 10713 10714- AcpiInitializeTables: Must be called once, and can be called anytime 10715during the OS initialization process. It allows the host to specify an 10716area 10717of memory to be used to store the internal version of the RSDT/XSDT (root 10718table). This allows the host to access ACPI tables before memory 10719management 10720is initialized and running. 10721- AcpiReallocateRootTable: Can be called after memory management is 10722running 10723to copy the root table to a dynamically allocated array, freeing up the 10724scratch memory specified in the call to AcpiInitializeTables. 10725- AcpiSubsystemInitialize: This existing interface is independent of the 10726Table Manager, and does not have to be called before the Table Manager 10727can 10728be used, it only must be called before the rest of ACPICA can be used. 10729- ACPI Tables: Some changes have been made to the names and structure of 10730the 10731actbl.h and actbl1.h header files and may require changes to existing 10732code. 10733For example, bitfields have been completely removed because of their lack 10734of 10735portability across C compilers. 10736- Update interfaces to the Global Lock acquire/release macros if local 10737versions are used. (see acwin.h) 10738 10739Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 10740 10741New files: tbfind.c 10742 10743Example Code and Data Size: These are the sizes for the OS-independent 10744acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10745debug version of the code includes the debug output trace mechanism and 10746has 10747a much larger code and data size. 10748 10749 Previous Release: 10750 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10751 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10752 Current Release: 10753 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10754 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10755 10756 107572) iASL Compiler/Disassembler and Tools: 10758 10759No changes for this release. 10760 10761---------------------------------------- 1076221 July 2006. Summary of changes for version 20060721: 10763 107641) ACPI CA Core Subsystem: 10765 10766The full source code for the ASL test suite used to validate the iASL 10767compiler and the ACPICA core subsystem is being released with the ACPICA 10768source for the first time. The source is contained in a separate package 10769and 10770consists of over 1100 files that exercise all ASL/AML operators. The 10771package 10772should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 10773Fiodor 10774Suietov) 10775 10776Completed a new design and implementation for support of the ACPI Global 10777Lock. On the OS side, the global lock is now treated as a standard AML 10778mutex. Previously, multiple OS threads could "acquire" the global lock 10779simultaneously. However, this could cause the BIOS to be starved out of 10780the 10781lock - especially in cases such as the Embedded Controller driver where 10782there is a tight coupling between the OS and the BIOS. 10783 10784Implemented an optimization for the ACPI Global Lock interrupt mechanism. 10785The Global Lock interrupt handler no longer queues the execution of a 10786separate thread to signal the global lock semaphore. Instead, the 10787semaphore 10788is signaled directly from the interrupt handler. 10789 10790Implemented support within the AML interpreter for package objects that 10791contain a larger AML length (package list length) than the package 10792element 10793count. In this case, the length of the package is truncated to match the 10794package element count. Some BIOS code apparently modifies the package 10795length 10796on the fly, and this change supports this behavior. Provides 10797compatibility 10798with the MS AML interpreter. (With assistance from Fiodor Suietov) 10799 10800Implemented a temporary fix for the BankValue parameter of a Bank Field 10801to 10802support all constant values, now including the Zero and One opcodes. 10803Evaluation of this parameter must eventually be converted to a full 10804TermArg 10805evaluation. A not-implemented error is now returned (temporarily) for 10806non- 10807constant values for this parameter. 10808 10809Fixed problem reports (Fiodor Suietov) integrated: 10810- Fix for premature object deletion after CopyObject on Operation Region 10811(BZ 10812350) 10813 10814Example Code and Data Size: These are the sizes for the OS-independent 10815acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10816debug version of the code includes the debug output trace mechanism and 10817has 10818a much larger code and data size. 10819 10820 Previous Release: 10821 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 10822 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 10823 Current Release: 10824 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10825 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10826 10827 108282) iASL Compiler/Disassembler and Tools: 10829 10830No changes for this release. 10831 10832---------------------------------------- 1083307 July 2006. Summary of changes for version 20060707: 10834 108351) ACPI CA Core Subsystem: 10836 10837Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 10838that do not allow the initialization of address pointers within packed 10839structures - even though the hardware itself may support misaligned 10840transfers. Some of the debug data structures are packed by default to 10841minimize size. 10842 10843Added an error message for the case where AcpiOsGetThreadId() returns 10844zero. 10845A non-zero value is required by the core ACPICA code to ensure the proper 10846operation of AML mutexes and recursive control methods. 10847 10848The DSDT is now the only ACPI table that determines whether the AML 10849interpreter is in 32-bit or 64-bit mode. Not really a functional change, 10850but 10851the hooks for per-table 32/64 switching have been removed from the code. 10852A 10853clarification to the ACPI specification is forthcoming in ACPI 3.0B. 10854 10855Fixed a possible leak of an OwnerID in the error path of 10856AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 10857deletion to a single place in AcpiTbUninstallTable to correct possible 10858leaks 10859when using the AcpiTbDeleteTablesByType interface (with assistance from 10860Lance Ortiz.) 10861 10862Fixed a problem with Serialized control methods where the semaphore 10863associated with the method could be over-signaled after multiple method 10864invocations. 10865 10866Fixed two issues with the locking of the internal namespace data 10867structure. 10868Both the Unload() operator and AcpiUnloadTable interface now lock the 10869namespace during the namespace deletion associated with the table unload 10870(with assistance from Linn Crosetto.) 10871 10872Fixed problem reports (Valery Podrezov) integrated: 10873- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 10874 10875Fixed problem reports (Fiodor Suietov) integrated: 10876- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 10877- On Address Space handler deletion, needless deactivation call (BZ 374) 10878- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 10879375) 10880- Possible memory leak, Notify sub-objects of Processor, Power, 10881ThermalZone 10882(BZ 376) 10883- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 10884- Minimum Length of RSDT should be validated (BZ 379) 10885- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 10886Handler (BZ (380) 10887- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 10888loaded 10889(BZ 381) 10890 10891Example Code and Data Size: These are the sizes for the OS-independent 10892acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10893debug version of the code includes the debug output trace mechanism and 10894has 10895a much larger code and data size. 10896 10897 Previous Release: 10898 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10899 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10900 Current Release: 10901 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10902 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10903 10904 109052) iASL Compiler/Disassembler and Tools: 10906 10907Fixed problem reports: 10908Compiler segfault when ASL contains a long (>1024) String declaration (BZ 10909436) 10910 10911---------------------------------------- 1091223 June 2006. Summary of changes for version 20060623: 10913 109141) ACPI CA Core Subsystem: 10915 10916Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 10917allows the type to be customized to the host OS for improved efficiency 10918(since a spinlock is usually a very small object.) 10919 10920Implemented support for "ignored" bits in the ACPI registers. According 10921to 10922the ACPI specification, these bits should be preserved when writing the 10923registers via a read/modify/write cycle. There are 3 bits preserved in 10924this 10925manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 10926 10927Implemented the initial deployment of new OSL mutex interfaces. Since 10928some 10929host operating systems have separate mutex and semaphore objects, this 10930feature was requested. The base code now uses mutexes (and the new mutex 10931interfaces) wherever a binary semaphore was used previously. However, for 10932the current release, the mutex interfaces are defined as macros to map 10933them 10934to the existing semaphore interfaces. Therefore, no OSL changes are 10935required 10936at this time. (See acpiosxf.h) 10937 10938Fixed several problems with the support for the control method SyncLevel 10939parameter. The SyncLevel now works according to the ACPI specification 10940and 10941in concert with the Mutex SyncLevel parameter, since the current 10942SyncLevel 10943is a property of the executing thread. Mutual exclusion for control 10944methods 10945is now implemented with a mutex instead of a semaphore. 10946 10947Fixed three instances of the use of the C shift operator in the bitfield 10948support code (exfldio.c) to avoid the use of a shift value larger than 10949the 10950target data width. The behavior of C compilers is undefined in this case 10951and 10952can cause unpredictable results, and therefore the case must be detected 10953and 10954avoided. (Fiodor Suietov) 10955 10956Added an info message whenever an SSDT or OEM table is loaded dynamically 10957via the Load() or LoadTable() ASL operators. This should improve 10958debugging 10959capability since it will show exactly what tables have been loaded 10960(beyond 10961the tables present in the RSDT/XSDT.) 10962 10963Example Code and Data Size: These are the sizes for the OS-independent 10964acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10965debug version of the code includes the debug output trace mechanism and 10966has 10967a much larger code and data size. 10968 10969 Previous Release: 10970 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10971 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10972 Current Release: 10973 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10974 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10975 10976 109772) iASL Compiler/Disassembler and Tools: 10978 10979No changes for this release. 10980 10981---------------------------------------- 1098208 June 2006. Summary of changes for version 20060608: 10983 109841) ACPI CA Core Subsystem: 10985 10986Converted the locking mutex used for the ACPI hardware to a spinlock. 10987This 10988change should eliminate all problems caused by attempting to acquire a 10989semaphore at interrupt level, and it means that all ACPICA external 10990interfaces that directly access the ACPI hardware can be safely called 10991from 10992interrupt level. OSL code that implements the semaphore interfaces should 10993be 10994able to eliminate any workarounds for being called at interrupt level. 10995 10996Fixed a regression introduced in 20060526 where the ACPI device 10997initialization could be prematurely aborted with an AE_NOT_FOUND if a 10998device 10999did not have an optional _INI method. 11000 11001Fixed an IndexField issue where a write to the Data Register should be 11002limited in size to the AccessSize (width) of the IndexField itself. (BZ 11003433, 11004Fiodor Suietov) 11005 11006Fixed problem reports (Valery Podrezov) integrated: 11007- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 11008 11009Fixed problem reports (Fiodor Suietov) integrated: 11010- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 11011 11012Removed four global mutexes that were obsolete and were no longer being 11013used. 11014 11015Example Code and Data Size: These are the sizes for the OS-independent 11016acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11017debug version of the code includes the debug output trace mechanism and 11018has 11019a much larger code and data size. 11020 11021 Previous Release: 11022 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11023 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11024 Current Release: 11025 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11026 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11027 11028 110292) iASL Compiler/Disassembler and Tools: 11030 11031Fixed a fault when using -g option (get tables from registry) on Windows 11032machines. 11033 11034Fixed problem reports integrated: 11035- Generate error if CreateField NumBits parameter is zero. (BZ 405) 11036- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 11037Suietov) 11038- Global table revision override (-r) is ignored (BZ 413) 11039 11040---------------------------------------- 1104126 May 2006. Summary of changes for version 20060526: 11042 110431) ACPI CA Core Subsystem: 11044 11045Restructured, flattened, and simplified the internal interfaces for 11046namespace object evaluation - resulting in smaller code, less CPU stack 11047use, 11048and fewer interfaces. (With assistance from Mikhail Kouzmich) 11049 11050Fixed a problem with the CopyObject operator where the first parameter 11051was 11052not typed correctly for the parser, interpreter, compiler, and 11053disassembler. 11054Caused various errors and unexpected behavior. 11055 11056Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 11057produced incorrect results with some C compilers. Since the behavior of C 11058compilers when the shift value is larger than the datatype width is 11059apparently not well defined, the interpreter now detects this condition 11060and 11061simply returns zero as expected in all such cases. (BZ 395) 11062 11063Fixed problem reports (Valery Podrezov) integrated: 11064- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 11065- Allow interpreter to handle nested method declarations (BZ 5361) 11066 11067Fixed problem reports (Fiodor Suietov) integrated: 11068- AcpiTerminate doesn't free debug memory allocation list objects (BZ 11069355) 11070- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 11071356) 11072- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 11073- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 11074- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 11075- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 11076- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 11077- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 11078- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 11079365) 11080- Status of the Global Initialization Handler call not used (BZ 366) 11081- Incorrect object parameter to Global Initialization Handler (BZ 367) 11082 11083Example Code and Data Size: These are the sizes for the OS-independent 11084acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11085debug version of the code includes the debug output trace mechanism and 11086has 11087a much larger code and data size. 11088 11089 Previous Release: 11090 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11091 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11092 Current Release: 11093 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11094 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11095 11096 110972) iASL Compiler/Disassembler and Tools: 11098 11099Modified the parser to allow the names IO, DMA, and IRQ to be used as 11100namespace identifiers with no collision with existing resource descriptor 11101macro names. This provides compatibility with other ASL compilers and is 11102most useful for disassembly/recompilation of existing tables without 11103parse 11104errors. (With assistance from Thomas Renninger) 11105 11106Disassembler: fixed an incorrect disassembly problem with the 11107DataTableRegion and CopyObject operators. Fixed a possible fault during 11108disassembly of some Alias operators. 11109 11110---------------------------------------- 1111112 May 2006. Summary of changes for version 20060512: 11112 111131) ACPI CA Core Subsystem: 11114 11115Replaced the AcpiOsQueueForExecution interface with a new interface named 11116AcpiOsExecute. The major difference is that the new interface does not 11117have 11118a Priority parameter, this appeared to be useless and has been replaced 11119by 11120a 11121Type parameter. The Type tells the host what type of execution is being 11122requested, such as global lock handler, notify handler, GPE handler, etc. 11123This allows the host to queue and execute the request as appropriate for 11124the 11125request type, possibly using different work queues and different 11126priorities 11127for the various request types. This enables fixes for multithreading 11128deadlock problems such as BZ #5534, and will require changes to all 11129existing 11130OS interface layers. (Alexey Starikovskiy and Bob Moore) 11131 11132Fixed a possible memory leak associated with the support for the so- 11133called 11134"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 11135Suietov) 11136 11137Fixed a problem with the Load() operator where a table load from an 11138operation region could overwrite an internal table buffer by up to 7 11139bytes 11140and cause alignment faults on IPF systems. (With assistance from Luming 11141Yu) 11142 11143Example Code and Data Size: These are the sizes for the OS-independent 11144acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11145debug version of the code includes the debug output trace mechanism and 11146has 11147a much larger code and data size. 11148 11149 Previous Release: 11150 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11151 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11152 Current Release: 11153 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11154 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11155 11156 11157 111582) iASL Compiler/Disassembler and Tools: 11159 11160Disassembler: Implemented support to cross reference the internal 11161namespace 11162and automatically generate ASL External() statements for symbols not 11163defined 11164within the current table being disassembled. This will simplify the 11165disassembly and recompilation of interdependent tables such as SSDTs 11166since 11167these statements will no longer have to be added manually. 11168 11169Disassembler: Implemented experimental support to automatically detect 11170invocations of external control methods and generate appropriate 11171External() 11172statements. This is problematic because the AML cannot be correctly 11173parsed 11174until the number of arguments for each control method is known. 11175Currently, 11176standalone method invocations and invocations as the source operand of a 11177Store() statement are supported. 11178 11179Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 11180LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 11181LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 11182more readable and likely closer to the original ASL source. 11183 11184---------------------------------------- 1118521 April 2006. Summary of changes for version 20060421: 11186 111871) ACPI CA Core Subsystem: 11188 11189Removed a device initialization optimization introduced in 20051216 where 11190the _STA method was not run unless an _INI was also present for the same 11191device. This optimization could cause problems because it could allow 11192_INI 11193methods to be run within a not-present device subtree. (If a not-present 11194device had no _INI, _STA would not be run, the not-present status would 11195not 11196be discovered, and the children of the device would be incorrectly 11197traversed.) 11198 11199Implemented a new _STA optimization where namespace subtrees that do not 11200contain _INI are identified and ignored during device initialization. 11201Selectively running _STA can significantly improve boot time on large 11202machines (with assistance from Len Brown.) 11203 11204Implemented support for the device initialization case where the returned 11205_STA flags indicate a device not-present but functioning. In this case, 11206_INI 11207is not run, but the device children are examined for presence, as per the 11208ACPI specification. 11209 11210Implemented an additional change to the IndexField support in order to 11211conform to MS behavior. The value written to the Index Register is not 11212simply a byte offset, it is a byte offset in units of the access width of 11213the parent Index Field. (Fiodor Suietov) 11214 11215Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 11216interface is called during the creation of all AML operation regions, and 11217allows the host OS to exert control over what addresses it will allow the 11218AML code to access. Operation Regions whose addresses are disallowed will 11219cause a runtime exception when they are actually accessed (will not 11220affect 11221or abort table loading.) See oswinxf or osunixxf for an example 11222implementation. 11223 11224Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 11225interface allows the host OS to match the various "optional" 11226interface/behavior strings for the _OSI predefined control method as 11227appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 11228for an example implementation. 11229 11230Restructured and corrected various problems in the exception handling 11231code 11232paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 11233(with assistance from Takayoshi Kochi.) 11234 11235Modified the Linux source converter to ignore quoted string literals 11236while 11237converting identifiers from mixed to lower case. This will correct 11238problems 11239with the disassembler and other areas where such strings must not be 11240modified. 11241 11242The ACPI_FUNCTION_* macros no longer require quotes around the function 11243name. This allows the Linux source converter to convert the names, now 11244that 11245the converter ignores quoted strings. 11246 11247Example Code and Data Size: These are the sizes for the OS-independent 11248acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11249debug version of the code includes the debug output trace mechanism and 11250has 11251a much larger code and data size. 11252 11253 Previous Release: 11254 11255 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11256 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11257 Current Release: 11258 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11259 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11260 11261 112622) iASL Compiler/Disassembler and Tools: 11263 11264Implemented 3 new warnings for iASL, and implemented multiple warning 11265levels 11266(w2 flag). 11267 112681) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 11269not 11270WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 11271check for the possible timeout, a warning is issued. 11272 112732) Useless operators: If an ASL operator does not specify an optional 11274target 11275operand and it also does not use the function return value from the 11276operator, a warning is issued since the operator effectively does 11277nothing. 11278 112793) Unreferenced objects: If a namespace object is created, but never 11280referenced, a warning is issued. This is a warning level 2 since there 11281are 11282cases where this is ok, such as when a secondary table is loaded that 11283uses 11284the unreferenced objects. Even so, care is taken to only flag objects 11285that 11286don't look like they will ever be used. For example, the reserved methods 11287(starting with an underscore) are usually not referenced because it is 11288expected that the OS will invoke them. 11289 11290---------------------------------------- 1129131 March 2006. Summary of changes for version 20060331: 11292 112931) ACPI CA Core Subsystem: 11294 11295Implemented header file support for the following additional ACPI tables: 11296ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 11297support, 11298all current and known ACPI tables are now defined in the ACPICA headers 11299and 11300are available for use by device drivers and other software. 11301 11302Implemented support to allow tables that contain ACPI names with invalid 11303characters to be loaded. Previously, this would cause the table load to 11304fail, but since there are several known cases of such tables on existing 11305machines, this change was made to enable ACPI support for them. Also, 11306this 11307matches the behavior of the Microsoft ACPI implementation. 11308 11309Fixed a couple regressions introduced during the memory optimization in 11310the 1131120060317 release. The namespace node definition required additional 11312reorganization and an internal datatype that had been changed to 8-bit 11313was 11314restored to 32-bit. (Valery Podrezov) 11315 11316Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 11317could be passed through to AcpiOsReleaseObject which is unexpected. Such 11318null pointers are now trapped and ignored, matching the behavior of the 11319previous implementation before the deployment of AcpiOsReleaseObject. 11320(Valery Podrezov, Fiodor Suietov) 11321 11322Fixed a memory mapping leak during the deletion of a SystemMemory 11323operation 11324region where a cached memory mapping was not deleted. This became a 11325noticeable problem for operation regions that are defined within 11326frequently 11327used control methods. (Dana Meyers) 11328 11329Reorganized the ACPI table header files into two main files: one for the 11330ACPI tables consumed by the ACPICA core, and another for the 11331miscellaneous 11332ACPI tables that are consumed by the drivers and other software. The 11333various 11334FADT definitions were merged into one common section and three different 11335tables (ACPI 1.0, 1.0+, and 2.0) 11336 11337Example Code and Data Size: These are the sizes for the OS-independent 11338acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11339debug version of the code includes the debug output trace mechanism and 11340has 11341a much larger code and data size. 11342 11343 Previous Release: 11344 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11345 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11346 Current Release: 11347 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11348 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11349 11350 113512) iASL Compiler/Disassembler and Tools: 11352 11353Disassembler: Implemented support to decode and format all non-AML ACPI 11354tables (tables other than DSDTs and SSDTs.) This includes the new tables 11355added to the ACPICA headers, therefore all current and known ACPI tables 11356are 11357supported. 11358 11359Disassembler: The change to allow ACPI names with invalid characters also 11360enables the disassembly of such tables. Invalid characters within names 11361are 11362changed to '*' to make the name printable; the iASL compiler will still 11363generate an error for such names, however, since this is an invalid ACPI 11364character. 11365 11366Implemented an option for AcpiXtract (-a) to extract all tables found in 11367the 11368input file. The default invocation extracts only the DSDTs and SSDTs. 11369 11370Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 11371makefile for the AcpiXtract utility. 11372 11373---------------------------------------- 1137417 March 2006. Summary of changes for version 20060317: 11375 113761) ACPI CA Core Subsystem: 11377 11378Implemented the use of a cache object for all internal namespace nodes. 11379Since there are about 1000 static nodes in a typical system, this will 11380decrease memory use for cache implementations that minimize per- 11381allocation 11382overhead (such as a slab allocator.) 11383 11384Removed the reference count mechanism for internal namespace nodes, since 11385it 11386was deemed unnecessary. This reduces the size of each namespace node by 11387about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 11388case, 11389and 32 bytes for the 64-bit case. 11390 11391Optimized several internal data structures to reduce object size on 64- 11392bit 11393platforms by packing data within the 64-bit alignment. This includes the 11394frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 11395instances corresponding to the namespace objects. 11396 11397Added two new strings for the predefined _OSI method: "Windows 2001.1 11398SP1" 11399and "Windows 2006". 11400 11401Split the allocation tracking mechanism out to a separate file, from 11402utalloc.c to uttrack.c. This mechanism appears to be only useful for 11403application-level code. Kernels may wish to not include uttrack.c in 11404distributions. 11405 11406Removed all remnants of the obsolete ACPI_REPORT_* macros and the 11407associated 11408code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 11409macros.) 11410 11411Code and Data Size: These are the sizes for the acpica.lib produced by 11412the 11413Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11414ACPI 11415driver or OSPM code. The debug version of the code includes the debug 11416output 11417trace mechanism and has a much larger code and data size. Note that these 11418values will vary depending on the efficiency of the compiler and the 11419compiler options used during generation. 11420 11421 Previous Release: 11422 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11423 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11424 Current Release: 11425 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11426 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11427 11428 114292) iASL Compiler/Disassembler and Tools: 11430 11431Implemented an ANSI C version of the acpixtract utility. This version 11432will 11433automatically extract the DSDT and all SSDTs from the input acpidump text 11434file and dump the binary output to separate files. It can also display a 11435summary of the input file including the headers for each table found and 11436will extract any single ACPI table, with any signature. (See 11437source/tools/acpixtract) 11438 11439---------------------------------------- 1144010 March 2006. Summary of changes for version 20060310: 11441 114421) ACPI CA Core Subsystem: 11443 11444Tagged all external interfaces to the subsystem with the new 11445ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 11446assist 11447kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 11448macro. The default definition is NULL. 11449 11450Added the ACPI_THREAD_ID type for the return value from 11451AcpiOsGetThreadId. 11452This allows the host to define this as necessary to simplify kernel 11453integration. The default definition is ACPI_NATIVE_UINT. 11454 11455Fixed two interpreter problems related to error processing, the deletion 11456of 11457objects, and placing invalid pointers onto the internal operator result 11458stack. BZ 6028, 6151 (Valery Podrezov) 11459 11460Increased the reference count threshold where a warning is emitted for 11461large 11462reference counts in order to eliminate unnecessary warnings on systems 11463with 11464large namespaces (especially 64-bit.) Increased the value from 0x400 to 114650x800. 11466 11467Due to universal disagreement as to the meaning of the 'c' in the 11468calloc() 11469function, the ACPI_MEM_CALLOCATE macro has been renamed to 11470ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 11471ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 11472ACPI_FREE. 11473 11474Code and Data Size: These are the sizes for the acpica.lib produced by 11475the 11476Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11477ACPI 11478driver or OSPM code. The debug version of the code includes the debug 11479output 11480trace mechanism and has a much larger code and data size. Note that these 11481values will vary depending on the efficiency of the compiler and the 11482compiler options used during generation. 11483 11484 Previous Release: 11485 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11486 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11487 Current Release: 11488 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11489 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11490 11491 114922) iASL Compiler/Disassembler: 11493 11494Disassembler: implemented support for symbolic resource descriptor 11495references. If a CreateXxxxField operator references a fixed offset 11496within 11497a 11498resource descriptor, a name is assigned to the descriptor and the offset 11499is 11500translated to the appropriate resource tag and pathname. The addition of 11501this support brings the disassembled code very close to the original ASL 11502source code and helps eliminate run-time errors when the disassembled 11503code 11504is modified (and recompiled) in such a way as to invalidate the original 11505fixed offsets. 11506 11507Implemented support for a Descriptor Name as the last parameter to the 11508ASL 11509Register() macro. This parameter was inadvertently left out of the ACPI 11510specification, and will be added for ACPI 3.0b. 11511 11512Fixed a problem where the use of the "_OSI" string (versus the full path 11513"\_OSI") caused an internal compiler error. ("No back ptr to op") 11514 11515Fixed a problem with the error message that occurs when an invalid string 11516is 11517used for a _HID object (such as one with an embedded asterisk: 11518"*PNP010A".) 11519The correct message is now displayed. 11520 11521---------------------------------------- 1152217 February 2006. Summary of changes for version 20060217: 11523 115241) ACPI CA Core Subsystem: 11525 11526Implemented a change to the IndexField support to match the behavior of 11527the 11528Microsoft AML interpreter. The value written to the Index register is now 11529a 11530byte offset, no longer an index based upon the width of the Data 11531register. 11532This should fix IndexField problems seen on some machines where the Data 11533register is not exactly one byte wide. The ACPI specification will be 11534clarified on this point. 11535 11536Fixed a problem where several resource descriptor types could overrun the 11537internal descriptor buffer due to size miscalculation: VendorShort, 11538VendorLong, and Interrupt. This was noticed on IA64 machines, but could 11539affect all platforms. 11540 11541Fixed a problem where individual resource descriptors were misaligned 11542within 11543the internal buffer, causing alignment faults on IA64 platforms. 11544 11545Code and Data Size: These are the sizes for the acpica.lib produced by 11546the 11547Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11548ACPI 11549driver or OSPM code. The debug version of the code includes the debug 11550output 11551trace mechanism and has a much larger code and data size. Note that these 11552values will vary depending on the efficiency of the compiler and the 11553compiler options used during generation. 11554 11555 Previous Release: 11556 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11557 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11558 Current Release: 11559 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11560 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11561 11562 115632) iASL Compiler/Disassembler: 11564 11565Implemented support for new reserved names: _WDG and _WED are Microsoft 11566extensions for Windows Instrumentation Management, _TDL is a new ACPI- 11567defined method (Throttling Depth Limit.) 11568 11569Fixed a problem where a zero-length VendorShort or VendorLong resource 11570descriptor was incorrectly emitted as a descriptor of length one. 11571 11572---------------------------------------- 1157310 February 2006. Summary of changes for version 20060210: 11574 115751) ACPI CA Core Subsystem: 11576 11577Removed a couple of extraneous ACPI_ERROR messages that appeared during 11578normal execution. These became apparent after the conversion from 11579ACPI_DEBUG_PRINT. 11580 11581Fixed a problem where the CreateField operator could hang if the BitIndex 11582or 11583NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 11584 11585Fixed a problem where a DeRefOf operation on a buffer object incorrectly 11586failed with an exception. This also fixes a couple of related RefOf and 11587DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 11588 11589Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 11590of 11591AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 11592BZ 115935480) 11594 11595Implemented a memory cleanup at the end of the execution of each 11596iteration 11597of an AML While() loop, preventing the accumulation of outstanding 11598objects. 11599(Valery Podrezov, BZ 5427) 11600 11601Eliminated a chunk of duplicate code in the object resolution code. 11602(Valery 11603Podrezov, BZ 5336) 11604 11605Fixed several warnings during the 64-bit code generation. 11606 11607The AcpiSrc source code conversion tool now inserts one line of 11608whitespace 11609after an if() statement that is followed immediately by a comment, 11610improving 11611readability of the Linux code. 11612 11613Code and Data Size: The current and previous library sizes for the core 11614subsystem are shown below. These are the code and data sizes for the 11615acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11616These 11617values do not include any ACPI driver or OSPM code. The debug version of 11618the 11619code includes the debug output trace mechanism and has a much larger code 11620and data size. Note that these values will vary depending on the 11621efficiency 11622of the compiler and the compiler options used during generation. 11623 11624 Previous Release: 11625 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11626 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11627 Current Release: 11628 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11629 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11630 11631 116322) iASL Compiler/Disassembler: 11633 11634Fixed a problem with the disassembly of a BankField operator with a 11635complex 11636expression for the BankValue parameter. 11637 11638---------------------------------------- 1163927 January 2006. Summary of changes for version 20060127: 11640 116411) ACPI CA Core Subsystem: 11642 11643Implemented support in the Resource Manager to allow unresolved 11644namestring 11645references within resource package objects for the _PRT method. This 11646support 11647is in addition to the previously implemented unresolved reference support 11648within the AML parser. If the interpreter slack mode is enabled, these 11649unresolved references will be passed through to the caller as a NULL 11650package 11651entry. 11652 11653Implemented and deployed new macros and functions for error and warning 11654messages across the subsystem. These macros are simpler and generate less 11655code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 11656ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 11657macros remain defined to allow ACPI drivers time to migrate to the new 11658macros. 11659 11660Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 11661the 11662Acquire/Release Lock OSL interfaces. 11663 11664Fixed a problem where Alias ASL operators are sometimes not correctly 11665resolved, in both the interpreter and the iASL compiler. 11666 11667Fixed several problems with the implementation of the 11668ConcatenateResTemplate 11669ASL operator. As per the ACPI specification, zero length buffers are now 11670treated as a single EndTag. One-length buffers always cause a fatal 11671exception. Non-zero length buffers that do not end with a full 2-byte 11672EndTag 11673cause a fatal exception. 11674 11675Fixed a possible structure overwrite in the AcpiGetObjectInfo external 11676interface. (With assistance from Thomas Renninger) 11677 11678Code and Data Size: The current and previous library sizes for the core 11679subsystem are shown below. These are the code and data sizes for the 11680acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11681These 11682values do not include any ACPI driver or OSPM code. The debug version of 11683the 11684code includes the debug output trace mechanism and has a much larger code 11685and data size. Note that these values will vary depending on the 11686efficiency 11687of the compiler and the compiler options used during generation. 11688 11689 Previous Release: 11690 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11691 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11692 Current Release: 11693 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11694 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11695 11696 116972) iASL Compiler/Disassembler: 11698 11699Fixed an internal error that was generated for any forward references to 11700ASL 11701Alias objects. 11702 11703---------------------------------------- 1170413 January 2006. Summary of changes for version 20060113: 11705 117061) ACPI CA Core Subsystem: 11707 11708Added 2006 copyright to all module headers and signons. This affects 11709virtually every file in the ACPICA core subsystem, iASL compiler, and the 11710utilities. 11711 11712Enhanced the ACPICA error reporting in order to simplify user migration 11713to 11714the non-debug version of ACPICA. Replaced all instances of the 11715ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 11716debug 11717levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 11718respectively. This preserves all error and warning messages in the non- 11719debug 11720version of the ACPICA code (this has been referred to as the "debug lite" 11721option.) Over 200 cases were converted to create a total of over 380 11722error/warning messages across the ACPICA code. This increases the code 11723and 11724data size of the default non-debug version of the code somewhat (about 1172513K), 11726but all error/warning reporting may be disabled if desired (and code 11727eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 11728configuration option. The size of the debug version of ACPICA remains 11729about 11730the same. 11731 11732Fixed a memory leak within the AML Debugger "Set" command. One object was 11733not properly deleted for every successful invocation of the command. 11734 11735Code and Data Size: The current and previous library sizes for the core 11736subsystem are shown below. These are the code and data sizes for the 11737acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11738These 11739values do not include any ACPI driver or OSPM code. The debug version of 11740the 11741code includes the debug output trace mechanism and has a much larger code 11742and data size. Note that these values will vary depending on the 11743efficiency 11744of the compiler and the compiler options used during generation. 11745 11746 Previous Release: 11747 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11748 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11749 Current Release: 11750 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11751 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11752 11753 117542) iASL Compiler/Disassembler: 11755 11756The compiler now officially supports the ACPI 3.0a specification that was 11757released on December 30, 2005. (Specification is available at 11758www.acpi.info) 11759 11760---------------------------------------- 1176116 December 2005. Summary of changes for version 20051216: 11762 117631) ACPI CA Core Subsystem: 11764 11765Implemented optional support to allow unresolved names within ASL Package 11766objects. A null object is inserted in the package when a named reference 11767cannot be located in the current namespace. Enabled via the interpreter 11768slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 11769machines 11770that contain such code. 11771 11772Implemented an optimization to the initialization sequence that can 11773improve 11774boot time. During ACPI device initialization, the _STA method is now run 11775if 11776and only if the _INI method exists. The _STA method is used to determine 11777if 11778the device is present; An _INI can only be run if _STA returns present, 11779but 11780it is a waste of time to run the _STA method if the _INI does not exist. 11781(Prototype and assistance from Dong Wei) 11782 11783Implemented use of the C99 uintptr_t for the pointer casting macros if it 11784is 11785available in the current compiler. Otherwise, the default (void *) cast 11786is 11787used as before. 11788 11789Fixed some possible memory leaks found within the execution path of the 11790Break, Continue, If, and CreateField operators. (Valery Podrezov) 11791 11792Fixed a problem introduced in the 20051202 release where an exception is 11793generated during method execution if a control method attempts to declare 11794another method. 11795 11796Moved resource descriptor string constants that are used by both the AML 11797disassembler and AML debugger to the common utilities directory so that 11798these components are independent. 11799 11800Implemented support in the AcpiExec utility (-e switch) to globally 11801ignore 11802exceptions during control method execution (method is not aborted.) 11803 11804Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 11805generation. 11806 11807Code and Data Size: The current and previous library sizes for the core 11808subsystem are shown below. These are the code and data sizes for the 11809acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11810These 11811values do not include any ACPI driver or OSPM code. The debug version of 11812the 11813code includes the debug output trace mechanism and has a much larger code 11814and data size. Note that these values will vary depending on the 11815efficiency 11816of the compiler and the compiler options used during generation. 11817 11818 Previous Release: 11819 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11820 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11821 Current Release: 11822 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11823 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11824 11825 118262) iASL Compiler/Disassembler: 11827 11828Fixed a problem where a CPU stack overflow fault could occur if a 11829recursive 11830method call was made from within a Return statement. 11831 11832---------------------------------------- 1183302 December 2005. Summary of changes for version 20051202: 11834 118351) ACPI CA Core Subsystem: 11836 11837Modified the parsing of control methods to no longer create namespace 11838objects during the first pass of the parse. Objects are now created only 11839during the execute phase, at the moment the namespace creation operator 11840is 11841encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 11842This 11843should eliminate ALREADY_EXISTS exceptions seen on some machines where 11844reentrant control methods are protected by an AML mutex. The mutex will 11845now 11846correctly block multiple threads from attempting to create the same 11847object 11848more than once. 11849 11850Increased the number of available Owner Ids for namespace object tracking 11851from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 11852on 11853some machines with a large number of ACPI tables (either static or 11854dynamic). 11855 11856Fixed a problem with the AcpiExec utility where a fault could occur when 11857the 11858-b switch (batch mode) is used. 11859 11860Enhanced the namespace dump routine to output the owner ID for each 11861namespace object. 11862 11863Code and Data Size: The current and previous library sizes for the core 11864subsystem are shown below. These are the code and data sizes for the 11865acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11866These 11867values do not include any ACPI driver or OSPM code. The debug version of 11868the 11869code includes the debug output trace mechanism and has a much larger code 11870and data size. Note that these values will vary depending on the 11871efficiency 11872of the compiler and the compiler options used during generation. 11873 11874 Previous Release: 11875 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11876 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11877 Current Release: 11878 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11879 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11880 11881 118822) iASL Compiler/Disassembler: 11883 11884Fixed a parse error during compilation of certain Switch/Case constructs. 11885To 11886simplify the parse, the grammar now allows for multiple Default 11887statements 11888and this error is now detected and flagged during the analysis phase. 11889 11890Disassembler: The disassembly now includes the contents of the original 11891table header within a comment at the start of the file. This includes the 11892name and version of the original ASL compiler. 11893 11894---------------------------------------- 1189517 November 2005. Summary of changes for version 20051117: 11896 118971) ACPI CA Core Subsystem: 11898 11899Fixed a problem in the AML parser where the method thread count could be 11900decremented below zero if any errors occurred during the method parse 11901phase. 11902This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 11903machines. 11904This also fixed a related regression with the mechanism that detects and 11905corrects methods that cannot properly handle reentrancy (related to the 11906deployment of the new OwnerId mechanism.) 11907 11908Eliminated the pre-parsing of control methods (to detect errors) during 11909table load. Related to the problem above, this was causing unwind issues 11910if 11911any errors occurred during the parse, and it seemed to be overkill. A 11912table 11913load should not be aborted if there are problems with any single control 11914method, thus rendering this feature rather pointless. 11915 11916Fixed a problem with the new table-driven resource manager where an 11917internal 11918buffer overflow could occur for small resource templates. 11919 11920Implemented a new external interface, AcpiGetVendorResource. This 11921interface 11922will find and return a vendor-defined resource descriptor within a _CRS 11923or 11924_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 11925Helgaas. 11926 11927Removed the length limit (200) on string objects as per the upcoming ACPI 119283.0A specification. This affects the following areas of the interpreter: 119291) 11930any implicit conversion of a Buffer to a String, 2) a String object 11931result 11932of the ASL Concatenate operator, 3) the String object result of the ASL 11933ToString operator. 11934 11935Fixed a problem in the Windows OS interface layer (OSL) where a 11936WAIT_FOREVER 11937on a semaphore object would incorrectly timeout. This allows the 11938multithreading features of the AcpiExec utility to work properly under 11939Windows. 11940 11941Updated the Linux makefiles for the iASL compiler and AcpiExec to include 11942the recently added file named "utresrc.c". 11943 11944Code and Data Size: The current and previous library sizes for the core 11945subsystem are shown below. These are the code and data sizes for the 11946acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11947These 11948values do not include any ACPI driver or OSPM code. The debug version of 11949the 11950code includes the debug output trace mechanism and has a much larger code 11951and data size. Note that these values will vary depending on the 11952efficiency 11953of the compiler and the compiler options used during generation. 11954 11955 Previous Release: 11956 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11957 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11958 Current Release: 11959 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11960 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11961 11962 119632) iASL Compiler/Disassembler: 11964 11965Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 11966specification. For the iASL compiler, this means that string literals 11967within 11968the source ASL can be of any length. 11969 11970Enhanced the listing output to dump the AML code for resource descriptors 11971immediately after the ASL code for each descriptor, instead of in a block 11972at 11973the end of the entire resource template. 11974 11975Enhanced the compiler debug output to dump the entire original parse tree 11976constructed during the parse phase, before any transforms are applied to 11977the 11978tree. The transformed tree is dumped also. 11979 11980---------------------------------------- 1198102 November 2005. Summary of changes for version 20051102: 11982 119831) ACPI CA Core Subsystem: 11984 11985Modified the subsystem initialization sequence to improve GPE support. 11986The 11987GPE initialization has been split into two parts in order to defer 11988execution 11989of the _PRW methods (Power Resources for Wake) until after the hardware 11990is 11991fully initialized and the SCI handler is installed. This allows the _PRW 11992methods to access fields protected by the Global Lock. This will fix 11993systems 11994where a NO_GLOBAL_LOCK exception has been seen during initialization. 11995 11996Converted the ACPI internal object disassemble and display code within 11997the 11998AML debugger to fully table-driven operation, reducing code size and 11999increasing maintainability. 12000 12001Fixed a regression with the ConcatenateResTemplate() ASL operator 12002introduced 12003in the 20051021 release. 12004 12005Implemented support for "local" internal ACPI object types within the 12006debugger "Object" command and the AcpiWalkNamespace external interfaces. 12007These local types include RegionFields, BankFields, IndexFields, Alias, 12008and 12009reference objects. 12010 12011Moved common AML resource handling code into a new file, "utresrc.c". 12012This 12013code is shared by both the Resource Manager and the AML Debugger. 12014 12015Code and Data Size: The current and previous library sizes for the core 12016subsystem are shown below. These are the code and data sizes for the 12017acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12018These 12019values do not include any ACPI driver or OSPM code. The debug version of 12020the 12021code includes the debug output trace mechanism and has a much larger code 12022and data size. Note that these values will vary depending on the 12023efficiency 12024of the compiler and the compiler options used during generation. 12025 12026 Previous Release: 12027 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12028 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12029 Current Release: 12030 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12031 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12032 12033 120342) iASL Compiler/Disassembler: 12035 12036Fixed a problem with very large initializer lists (more than 4000 12037elements) 12038for both Buffer and Package objects where the parse stack could overflow. 12039 12040Enhanced the pre-compile source code scan for non-ASCII characters to 12041ignore 12042characters within comment fields. The scan is now always performed and is 12043no 12044longer optional, detecting invalid characters within a source file 12045immediately rather than during the parse phase or later. 12046 12047Enhanced the ASL grammar definition to force early reductions on all 12048list- 12049style grammar elements so that the overall parse stack usage is greatly 12050reduced. This should improve performance and reduce the possibility of 12051parse 12052stack overflow. 12053 12054Eliminated all reduce/reduce conflicts in the iASL parser generation. 12055Also, 12056with the addition of a %expected statement, the compiler generates from 12057source with no warnings. 12058 12059Fixed a possible segment fault in the disassembler if the input filename 12060does not contain a "dot" extension (Thomas Renninger). 12061 12062---------------------------------------- 1206321 October 2005. Summary of changes for version 20051021: 12064 120651) ACPI CA Core Subsystem: 12066 12067Implemented support for the EM64T and other x86-64 processors. This 12068essentially entails recognizing that these processors support non-aligned 12069memory transfers. Previously, all 64-bit processors were assumed to lack 12070hardware support for non-aligned transfers. 12071 12072Completed conversion of the Resource Manager to nearly full table-driven 12073operation. Specifically, the resource conversion code (convert AML to 12074internal format and the reverse) and the debug code to dump internal 12075resource descriptors are fully table-driven, reducing code and data size 12076and 12077improving maintainability. 12078 12079The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 12080word 12081on 64-bit processors instead of a fixed 32-bit word. (With assistance 12082from 12083Alexey Starikovskiy) 12084 12085Implemented support within the resource conversion code for the Type- 12086Specific byte within the various ACPI 3.0 *WordSpace macros. 12087 12088Fixed some issues within the resource conversion code for the type- 12089specific 12090flags for both Memory and I/O address resource descriptors. For Memory, 12091implemented support for the MTP and TTP flags. For I/O, split the TRS and 12092TTP flags into two separate fields. 12093 12094Code and Data Size: The current and previous library sizes for the core 12095subsystem are shown below. These are the code and data sizes for the 12096acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12097These 12098values do not include any ACPI driver or OSPM code. The debug version of 12099the 12100code includes the debug output trace mechanism and has a much larger code 12101and data size. Note that these values will vary depending on the 12102efficiency 12103of the compiler and the compiler options used during generation. 12104 12105 Previous Release: 12106 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12107 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12108 Current Release: 12109 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12110 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12111 12112 12113 121142) iASL Compiler/Disassembler: 12115 12116Relaxed a compiler restriction that disallowed a ResourceIndex byte if 12117the 12118corresponding ResourceSource string was not also present in a resource 12119descriptor declaration. This restriction caused problems with existing 12120AML/ASL code that includes the Index byte without the string. When such 12121AML 12122was disassembled, it could not be compiled without modification. Further, 12123the modified code created a resource template with a different size than 12124the 12125original, breaking code that used fixed offsets into the resource 12126template 12127buffer. 12128 12129Removed a recent feature of the disassembler to ignore a lone 12130ResourceIndex 12131byte. This byte is now emitted if present so that the exact AML can be 12132reproduced when the disassembled code is recompiled. 12133 12134Improved comments and text alignment for the resource descriptor code 12135emitted by the disassembler. 12136 12137Implemented disassembler support for the ACPI 3.0 AccessSize field within 12138a 12139Register() resource descriptor. 12140 12141---------------------------------------- 1214230 September 2005. Summary of changes for version 20050930: 12143 121441) ACPI CA Core Subsystem: 12145 12146Completed a major overhaul of the Resource Manager code - specifically, 12147optimizations in the area of the AML/internal resource conversion code. 12148The 12149code has been optimized to simplify and eliminate duplicated code, CPU 12150stack 12151use has been decreased by optimizing function parameters and local 12152variables, and naming conventions across the manager have been 12153standardized 12154for clarity and ease of maintenance (this includes function, parameter, 12155variable, and struct/typedef names.) The update may force changes in some 12156driver code, depending on how resources are handled by the host OS. 12157 12158All Resource Manager dispatch and information tables have been moved to a 12159single location for clarity and ease of maintenance. One new file was 12160created, named "rsinfo.c". 12161 12162The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 12163guarantee that the argument is not evaluated twice, making them less 12164prone 12165to macro side-effects. However, since there exists the possibility of 12166additional stack use if a particular compiler cannot optimize them (such 12167as 12168in the debug generation case), the original macros are optionally 12169available. 12170Note that some invocations of the return_VALUE macro may now cause size 12171mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 12172to 12173eliminate these. (From Randy Dunlap) 12174 12175Implemented a new mechanism to enable debug tracing for individual 12176control 12177methods. A new external interface, AcpiDebugTrace, is provided to enable 12178this mechanism. The intent is to allow the host OS to easily enable and 12179disable tracing for problematic control methods. This interface can be 12180easily exposed to a user or debugger interface if desired. See the file 12181psxface.c for details. 12182 12183AcpiUtCallocate will now return a valid pointer if a length of zero is 12184specified - a length of one is used and a warning is issued. This matches 12185the behavior of AcpiUtAllocate. 12186 12187Code and Data Size: The current and previous library sizes for the core 12188subsystem are shown below. These are the code and data sizes for the 12189acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12190These 12191values do not include any ACPI driver or OSPM code. The debug version of 12192the 12193code includes the debug output trace mechanism and has a much larger code 12194and data size. Note that these values will vary depending on the 12195efficiency 12196of the compiler and the compiler options used during generation. 12197 12198 Previous Release: 12199 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12200 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12201 Current Release: 12202 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12203 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12204 12205 122062) iASL Compiler/Disassembler: 12207 12208A remark is issued if the effective compile-time length of a package or 12209buffer is zero. Previously, this was a warning. 12210 12211---------------------------------------- 1221216 September 2005. Summary of changes for version 20050916: 12213 122141) ACPI CA Core Subsystem: 12215 12216Fixed a problem within the Resource Manager where support for the Generic 12217Register descriptor was not fully implemented. This descriptor is now 12218fully 12219recognized, parsed, disassembled, and displayed. 12220 12221Completely restructured the Resource Manager code to utilize table-driven 12222dispatch and lookup, eliminating many of the large switch() statements. 12223This 12224reduces overall subsystem code size and code complexity. Affects the 12225resource parsing and construction, disassembly, and debug dump output. 12226 12227Cleaned up and restructured the debug dump output for all resource 12228descriptors. Improved readability of the output and reduced code size. 12229 12230Fixed a problem where changes to internal data structures caused the 12231optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 12232 12233Code and Data Size: The current and previous library sizes for the core 12234subsystem are shown below. These are the code and data sizes for the 12235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12236These 12237values do not include any ACPI driver or OSPM code. The debug version of 12238the 12239code includes the debug output trace mechanism and has a much larger code 12240and data size. Note that these values will vary depending on the 12241efficiency 12242of the compiler and the compiler options used during generation. 12243 12244 Previous Release: 12245 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12246 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12247 Current Release: 12248 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12249 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12250 12251 122522) iASL Compiler/Disassembler: 12253 12254Updated the disassembler to automatically insert an EndDependentFn() 12255macro 12256into the ASL stream if this macro is missing in the original AML code, 12257simplifying compilation of the resulting ASL module. 12258 12259Fixed a problem in the disassembler where a disassembled ResourceSource 12260string (within a large resource descriptor) was not surrounded by quotes 12261and 12262not followed by a comma, causing errors when the resulting ASL module was 12263compiled. Also, escape sequences within a ResourceSource string are now 12264handled correctly (especially "\\") 12265 12266---------------------------------------- 1226702 September 2005. Summary of changes for version 20050902: 12268 122691) ACPI CA Core Subsystem: 12270 12271Fixed a problem with the internal Owner ID allocation and deallocation 12272mechanisms for control method execution and recursive method invocation. 12273This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 12274messages seen on some systems. Recursive method invocation depth is 12275currently limited to 255. (Alexey Starikovskiy) 12276 12277Completely eliminated all vestiges of support for the "module-level 12278executable code" until this support is fully implemented and debugged. 12279This 12280should eliminate the NO_RETURN_VALUE exceptions seen during table load on 12281some systems that invoke this support. 12282 12283Fixed a problem within the resource manager code where the transaction 12284flags 12285for a 64-bit address descriptor were handled incorrectly in the type- 12286specific flag byte. 12287 12288Consolidated duplicate code within the address descriptor resource 12289manager 12290code, reducing overall subsystem code size. 12291 12292Fixed a fault when using the AML debugger "disassemble" command to 12293disassemble individual control methods. 12294 12295Removed references to the "release_current" directory within the Unix 12296release package. 12297 12298Code and Data Size: The current and previous core subsystem library sizes 12299are shown below. These are the code and data sizes for the acpica.lib 12300produced by the Microsoft Visual C++ 6.0 compiler. These values do not 12301include any ACPI driver or OSPM code. The debug version of the code 12302includes 12303the debug output trace mechanism and has a much larger code and data 12304size. 12305Note that these values will vary depending on the efficiency of the 12306compiler 12307and the compiler options used during generation. 12308 12309 Previous Release: 12310 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12311 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12312 Current Release: 12313 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12314 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12315 12316 123172) iASL Compiler/Disassembler: 12318 12319Implemented an error check for illegal duplicate values in the interrupt 12320and 12321dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 12322Interrupt(). 12323 12324Implemented error checking for the Irq() and IrqNoFlags() macros to 12325detect 12326too many values in the interrupt list (16 max) and invalid values in the 12327list (range 0 - 15) 12328 12329The maximum length string literal within an ASL file is now restricted to 12330200 characters as per the ACPI specification. 12331 12332Fixed a fault when using the -ln option (generate namespace listing). 12333 12334Implemented an error check to determine if a DescriptorName within a 12335resource descriptor has already been used within the current scope. 12336 12337---------------------------------------- 1233815 August 2005. Summary of changes for version 20050815: 12339 123401) ACPI CA Core Subsystem: 12341 12342Implemented a full bytewise compare to determine if a table load request 12343is 12344attempting to load a duplicate table. The compare is performed if the 12345table 12346signatures and table lengths match. This will allow different tables with 12347the same OEM Table ID and revision to be loaded - probably against the 12348ACPI 12349specification, but discovered in the field nonetheless. 12350 12351Added the changes.txt logfile to each of the zipped release packages. 12352 12353Code and Data Size: Current and previous core subsystem library sizes are 12354shown below. These are the code and data sizes for the acpica.lib 12355produced 12356by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12357any ACPI driver or OSPM code. The debug version of the code includes the 12358debug output trace mechanism and has a much larger code and data size. 12359Note 12360that these values will vary depending on the efficiency of the compiler 12361and 12362the compiler options used during generation. 12363 12364 Previous Release: 12365 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12366 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12367 Current Release: 12368 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12369 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12370 12371 123722) iASL Compiler/Disassembler: 12373 12374Fixed a problem where incorrect AML code could be generated for Package 12375objects if optimization is disabled (via the -oa switch). 12376 12377Fixed a problem with where incorrect AML code is generated for variable- 12378length packages when the package length is not specified and the number 12379of 12380initializer values is greater than 255. 12381 12382 12383---------------------------------------- 1238429 July 2005. Summary of changes for version 20050729: 12385 123861) ACPI CA Core Subsystem: 12387 12388Implemented support to ignore an attempt to install/load a particular 12389ACPI 12390table more than once. Apparently there exists BIOS code that repeatedly 12391attempts to load the same SSDT upon certain events. With assistance from 12392Venkatesh Pallipadi. 12393 12394Restructured the main interface to the AML parser in order to correctly 12395handle all exceptional conditions. This will prevent leakage of the 12396OwnerId 12397resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 12398some 12399machines. With assistance from Alexey Starikovskiy. 12400 12401Support for "module level code" has been disabled in this version due to 12402a 12403number of issues that have appeared on various machines. The support can 12404be 12405enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 12406compilation. When the issues are fully resolved, the code will be enabled 12407by 12408default again. 12409 12410Modified the internal functions for debug print support to define the 12411FunctionName parameter as a (const char *) for compatibility with 12412compiler 12413built-in macros such as __FUNCTION__, etc. 12414 12415Linted the entire ACPICA source tree for both 32-bit and 64-bit. 12416 12417Implemented support to display an object count summary for the AML 12418Debugger 12419commands Object and Methods. 12420 12421Code and Data Size: Current and previous core subsystem library sizes are 12422shown below. These are the code and data sizes for the acpica.lib 12423produced 12424by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12425any ACPI driver or OSPM code. The debug version of the code includes the 12426debug output trace mechanism and has a much larger code and data size. 12427Note 12428that these values will vary depending on the efficiency of the compiler 12429and 12430the compiler options used during generation. 12431 12432 Previous Release: 12433 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12434 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12435 Current Release: 12436 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12437 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12438 12439 124402) iASL Compiler/Disassembler: 12441 12442Fixed a regression that appeared in the 20050708 version of the compiler 12443where an error message was inadvertently emitted for invocations of the 12444_OSI 12445reserved control method. 12446 12447---------------------------------------- 1244808 July 2005. Summary of changes for version 20050708: 12449 124501) ACPI CA Core Subsystem: 12451 12452The use of the CPU stack in the debug version of the subsystem has been 12453considerably reduced. Previously, a debug structure was declared in every 12454function that used the debug macros. This structure has been removed in 12455favor of declaring the individual elements as parameters to the debug 12456functions. This reduces the cumulative stack use during nested execution 12457of 12458ACPI function calls at the cost of a small increase in the code size of 12459the 12460debug version of the subsystem. With assistance from Alexey Starikovskiy 12461and 12462Len Brown. 12463 12464Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 12465headers to define a macro that will return the current function name at 12466runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 12467by 12468the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 12469compiler-dependent header, the function name is saved on the CPU stack 12470(one 12471pointer per function.) This mechanism is used because apparently there 12472exists no standard ANSI-C defined macro that that returns the function 12473name. 12474 12475Redesigned and reimplemented the "Owner ID" mechanism used to track 12476namespace objects created/deleted by ACPI tables and control method 12477execution. A bitmap is now used to allocate and free the IDs, thus 12478solving 12479the wraparound problem present in the previous implementation. The size 12480of 12481the namespace node descriptor was reduced by 2 bytes as a result (Alexey 12482Starikovskiy). 12483 12484Removed the UINT32_BIT and UINT16_BIT types that were used for the 12485bitfield 12486flag definitions within the headers for the predefined ACPI tables. These 12487have been replaced by UINT8_BIT in order to increase the code portability 12488of 12489the subsystem. If the use of UINT8 remains a problem, we may be forced to 12490eliminate bitfields entirely because of a lack of portability. 12491 12492Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 12493This 12494is a frequently used function and this improvement increases the 12495performance 12496of the entire subsystem (Alexey Starikovskiy). 12497 12498Fixed several possible memory leaks and the inverse - premature object 12499deletion (Alexey Starikovskiy). 12500 12501Code and Data Size: Current and previous core subsystem library sizes are 12502shown below. These are the code and data sizes for the acpica.lib 12503produced 12504by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12505any ACPI driver or OSPM code. The debug version of the code includes the 12506debug output trace mechanism and has a much larger code and data size. 12507Note 12508that these values will vary depending on the efficiency of the compiler 12509and 12510the compiler options used during generation. 12511 12512 Previous Release: 12513 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12514 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12515 Current Release: 12516 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12517 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12518 12519---------------------------------------- 1252024 June 2005. Summary of changes for version 20050624: 12521 125221) ACPI CA Core Subsystem: 12523 12524Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 12525the host-defined cache object. This allows the OSL implementation to 12526define 12527and type this object in any manner desired, simplifying the OSL 12528implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 12529Linux, and should be defined in the OS-specific header file for other 12530operating systems as required. 12531 12532Changed the interface to AcpiOsAcquireObject to directly return the 12533requested object as the function return (instead of ACPI_STATUS.) This 12534change was made for performance reasons, since this is the purpose of the 12535interface in the first place. AcpiOsAcquireObject is now similar to the 12536AcpiOsAllocate interface. 12537 12538Implemented a new AML debugger command named Businfo. This command 12539displays 12540information about all devices that have an associate _PRT object. The 12541_ADR, 12542_HID, _UID, and _CID are displayed for these devices. 12543 12544Modified the initialization sequence in AcpiInitializeSubsystem to call 12545the 12546OSL interface AcpiOslInitialize first, before any local initialization. 12547This 12548change was required because the global initialization now calls OSL 12549interfaces. 12550 12551Enhanced the Dump command to display the entire contents of Package 12552objects 12553(including all sub-objects and their values.) 12554 12555Restructured the code base to split some files because of size and/or 12556because the code logically belonged in a separate file. New files are 12557listed 12558below. All makefiles and project files included in the ACPI CA release 12559have 12560been updated. 12561 utilities/utcache.c /* Local cache interfaces */ 12562 utilities/utmutex.c /* Local mutex support */ 12563 utilities/utstate.c /* State object support */ 12564 interpreter/parser/psloop.c /* Main AML parse loop */ 12565 12566Code and Data Size: Current and previous core subsystem library sizes are 12567shown below. These are the code and data sizes for the acpica.lib 12568produced 12569by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12570any ACPI driver or OSPM code. The debug version of the code includes the 12571debug output trace mechanism and has a much larger code and data size. 12572Note 12573that these values will vary depending on the efficiency of the compiler 12574and 12575the compiler options used during generation. 12576 12577 Previous Release: 12578 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12579 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12580 Current Release: 12581 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12582 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12583 12584 125852) iASL Compiler/Disassembler: 12586 12587Fixed a regression introduced in version 20050513 where the use of a 12588Package 12589object within a Case() statement caused a compile time exception. The 12590original behavior has been restored (a Match() operator is emitted.) 12591 12592---------------------------------------- 1259317 June 2005. Summary of changes for version 20050617: 12594 125951) ACPI CA Core Subsystem: 12596 12597Moved the object cache operations into the OS interface layer (OSL) to 12598allow 12599the host OS to handle these operations if desired (for example, the Linux 12600OSL will invoke the slab allocator). This support is optional; the 12601compile 12602time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 12603cache 12604code in the ACPI CA core. The new OSL interfaces are shown below. See 12605utalloc.c for an example implementation, and acpiosxf.h for the exact 12606interface definitions. With assistance from Alexey Starikovskiy. 12607 AcpiOsCreateCache 12608 AcpiOsDeleteCache 12609 AcpiOsPurgeCache 12610 AcpiOsAcquireObject 12611 AcpiOsReleaseObject 12612 12613Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 12614return 12615and restore a flags parameter. This fits better with many OS lock models. 12616Note: the current execution state (interrupt handler or not) is no longer 12617passed to these interfaces. If necessary, the OSL must determine this 12618state 12619by itself, a simple and fast operation. With assistance from Alexey 12620Starikovskiy. 12621 12622Fixed a problem in the ACPI table handling where a valid XSDT was assumed 12623present if the revision of the RSDP was 2 or greater. According to the 12624ACPI 12625specification, the XSDT is optional in all cases, and the table manager 12626therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 12627Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 12628contain 12629only the RSDT. 12630 12631Fixed an interpreter problem with the Mid() operator in the case of an 12632input 12633string where the resulting output string is of zero length. It now 12634correctly 12635returns a valid, null terminated string object instead of a string object 12636with a null pointer. 12637 12638Fixed a problem with the control method argument handling to allow a 12639store 12640to an Arg object that already contains an object of type Device. The 12641Device 12642object is now correctly overwritten. Previously, an error was returned. 12643 12644 12645Enhanced the debugger Find command to emit object values in addition to 12646the 12647found object pathnames. The output format is the same as the dump 12648namespace 12649command. 12650 12651Enhanced the debugger Set command. It now has the ability to set the 12652value 12653of any Named integer object in the namespace (Previously, only method 12654locals 12655and args could be set.) 12656 12657Code and Data Size: Current and previous core subsystem library sizes are 12658shown below. These are the code and data sizes for the acpica.lib 12659produced 12660by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12661any ACPI driver or OSPM code. The debug version of the code includes the 12662debug output trace mechanism and has a much larger code and data size. 12663Note 12664that these values will vary depending on the efficiency of the compiler 12665and 12666the compiler options used during generation. 12667 12668 Previous Release: 12669 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12670 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12671 Current Release: 12672 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12673 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12674 12675 126762) iASL Compiler/Disassembler: 12677 12678Fixed a regression in the disassembler where if/else/while constructs 12679were 12680output incorrectly. This problem was introduced in the previous release 12681(20050526). This problem also affected the single-step disassembly in the 12682debugger. 12683 12684Fixed a problem where compiling the reserved _OSI method would randomly 12685(but 12686rarely) produce compile errors. 12687 12688Enhanced the disassembler to emit compilable code in the face of 12689incorrect 12690AML resource descriptors. If the optional ResourceSourceIndex is present, 12691but the ResourceSource is not, do not emit the ResourceSourceIndex in the 12692disassembly. Otherwise, the resulting code cannot be compiled without 12693errors. 12694 12695---------------------------------------- 1269626 May 2005. Summary of changes for version 20050526: 12697 126981) ACPI CA Core Subsystem: 12699 12700Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 12701the module level (not within a control method.) These opcodes are 12702executed 12703exactly once at the time the table is loaded. This type of code was legal 12704up 12705until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 12706in 12707order to provide backwards compatibility with earlier BIOS 12708implementations. 12709This eliminates the "Encountered executable code at module level" warning 12710that was previously generated upon detection of such code. 12711 12712Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 12713inadvertently be generated during the lookup of namespace objects in the 12714second pass parse of ACPI tables and control methods. It appears that 12715this 12716problem could occur during the resolution of forward references to 12717namespace 12718objects. 12719 12720Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 12721corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 12722allows the deadlock detection debug code to be compiled out in the normal 12723case, improving mutex performance (and overall subsystem performance) 12724considerably. 12725 12726Implemented a handful of miscellaneous fixes for possible memory leaks on 12727error conditions and error handling control paths. These fixes were 12728suggested by FreeBSD and the Coverity Prevent source code analysis tool. 12729 12730Added a check for a null RSDT pointer in AcpiGetFirmwareTable 12731(tbxfroot.c) 12732to prevent a fault in this error case. 12733 12734Code and Data Size: Current and previous core subsystem library sizes are 12735shown below. These are the code and data sizes for the acpica.lib 12736produced 12737by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12738any ACPI driver or OSPM code. The debug version of the code includes the 12739debug output trace mechanism and has a much larger code and data size. 12740Note 12741that these values will vary depending on the efficiency of the compiler 12742and 12743the compiler options used during generation. 12744 12745 Previous Release: 12746 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12747 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12748 Current Release: 12749 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12750 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12751 12752 127532) iASL Compiler/Disassembler: 12754 12755Implemented support to allow Type 1 and Type 2 ASL operators to appear at 12756the module level (not within a control method.) These operators will be 12757executed once at the time the table is loaded. This type of code was 12758legal 12759up until the release of ACPI 2.0B (2002) and is now supported by the iASL 12760compiler in order to provide backwards compatibility with earlier BIOS 12761ASL 12762code. 12763 12764The ACPI integer width (specified via the table revision ID or the -r 12765override, 32 or 64 bits) is now used internally during compile-time 12766constant 12767folding to ensure that constants are truncated to 32 bits if necessary. 12768Previously, the revision ID value was only emitted in the AML table 12769header. 12770 12771An error message is now generated for the Mutex and Method operators if 12772the 12773SyncLevel parameter is outside the legal range of 0 through 15. 12774 12775Fixed a problem with the Method operator ParameterTypes list handling 12776(ACPI 127773.0). Previously, more than 2 types or 2 arguments generated a syntax 12778error. 12779The actual underlying implementation of method argument typechecking is 12780still under development, however. 12781 12782---------------------------------------- 1278313 May 2005. Summary of changes for version 20050513: 12784 127851) ACPI CA Core Subsystem: 12786 12787Implemented support for PCI Express root bridges -- added support for 12788device 12789PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 12790 12791The interpreter now automatically truncates incoming 64-bit constants to 1279232 12793bits if currently executing out of a 32-bit ACPI table (Revision < 2). 12794This 12795also affects the iASL compiler constant folding. (Note: as per below, the 12796iASL compiler no longer allows 64-bit constants within 32-bit tables.) 12797 12798Fixed a problem where string and buffer objects with "static" pointers 12799(pointers to initialization data within an ACPI table) were not handled 12800consistently. The internal object copy operation now always copies the 12801data 12802to a newly allocated buffer, regardless of whether the source object is 12803static or not. 12804 12805Fixed a problem with the FromBCD operator where an implicit result 12806conversion was improperly performed while storing the result to the 12807target 12808operand. Since this is an "explicit conversion" operator, the implicit 12809conversion should never be performed on the output. 12810 12811Fixed a problem with the CopyObject operator where a copy to an existing 12812named object did not always completely overwrite the existing object 12813stored 12814at name. Specifically, a buffer-to-buffer copy did not delete the 12815existing 12816buffer. 12817 12818Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 12819and 12820structs for consistency. 12821 12822Code and Data Size: Current and previous core subsystem library sizes are 12823shown below. These are the code and data sizes for the acpica.lib 12824produced 12825by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12826any ACPI driver or OSPM code. The debug version of the code includes the 12827debug output trace mechanism and has a much larger code and data size. 12828Note 12829that these values will vary depending on the efficiency of the compiler 12830and 12831the compiler options used during generation. 12832 12833 Previous Release: 12834 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12835 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12836 Current Release: (Same sizes) 12837 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12838 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12839 12840 128412) iASL Compiler/Disassembler: 12842 12843The compiler now emits a warning if an attempt is made to generate a 64- 12844bit 12845integer constant from within a 32-bit ACPI table (Revision < 2). The 12846integer 12847is truncated to 32 bits. 12848 12849Fixed a problem with large package objects: if the static length of the 12850package is greater than 255, the "variable length package" opcode is 12851emitted. Previously, this caused an error. This requires an update to the 12852ACPI spec, since it currently (incorrectly) states that packages larger 12853than 12854255 elements are not allowed. 12855 12856The disassembler now correctly handles variable length packages and 12857packages 12858larger than 255 elements. 12859 12860---------------------------------------- 1286108 April 2005. Summary of changes for version 20050408: 12862 128631) ACPI CA Core Subsystem: 12864 12865Fixed three cases in the interpreter where an "index" argument to an ASL 12866function was still (internally) 32 bits instead of the required 64 bits. 12867This was the Index argument to the Index, Mid, and Match operators. 12868 12869The "strupr" function is now permanently local (AcpiUtStrupr), since this 12870is 12871not a POSIX-defined function and not present in most kernel-level C 12872libraries. All references to the C library strupr function have been 12873removed 12874from the headers. 12875 12876Completed the deployment of static functions/prototypes. All prototypes 12877with 12878the static attribute have been moved from the headers to the owning C 12879file. 12880 12881Implemented an extract option (-e) for the AcpiBin utility (AML binary 12882utility). This option allows the utility to extract individual ACPI 12883tables 12884from the output of AcpiDmp. It provides the same functionality of the 12885acpixtract.pl perl script without the worry of setting the correct perl 12886options. AcpiBin runs on Windows and has not yet been generated/validated 12887in 12888the Linux/Unix environment (but should be soon). 12889 12890Updated and fixed the table dump option for AcpiBin (-d). This option 12891converts a single ACPI table to a hex/ascii file, similar to the output 12892of 12893AcpiDmp. 12894 12895Code and Data Size: Current and previous core subsystem library sizes are 12896shown below. These are the code and data sizes for the acpica.lib 12897produced 12898by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12899any ACPI driver or OSPM code. The debug version of the code includes the 12900debug output trace mechanism and has a much larger code and data size. 12901Note 12902that these values will vary depending on the efficiency of the compiler 12903and 12904the compiler options used during generation. 12905 12906 Previous Release: 12907 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12908 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12909 Current Release: 12910 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12911 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12912 12913 129142) iASL Compiler/Disassembler: 12915 12916Disassembler fix: Added a check to ensure that the table length found in 12917the 12918ACPI table header within the input file is not longer than the actual 12919input 12920file size. This indicates some kind of file or table corruption. 12921 12922---------------------------------------- 1292329 March 2005. Summary of changes for version 20050329: 12924 129251) ACPI CA Core Subsystem: 12926 12927An error is now generated if an attempt is made to create a Buffer Field 12928of 12929length zero (A CreateField with a length operand of zero.) 12930 12931The interpreter now issues a warning whenever executable code at the 12932module 12933level is detected during ACPI table load. This will give some idea of the 12934prevalence of this type of code. 12935 12936Implemented support for references to named objects (other than control 12937methods) within package objects. 12938 12939Enhanced package object output for the debug object. Package objects are 12940now 12941completely dumped, showing all elements. 12942 12943Enhanced miscellaneous object output for the debug object. Any object can 12944now be written to the debug object (for example, a device object can be 12945written, and the type of the object will be displayed.) 12946 12947The "static" qualifier has been added to all local functions across both 12948the 12949core subsystem and the iASL compiler. 12950 12951The number of "long" lines (> 80 chars) within the source has been 12952significantly reduced, by about 1/3. 12953 12954Cleaned up all header files to ensure that all CA/iASL functions are 12955prototyped (even static functions) and the formatting is consistent. 12956 12957Two new header files have been added, acopcode.h and acnames.h. 12958 12959Removed several obsolete functions that were no longer used. 12960 12961Code and Data Size: Current and previous core subsystem library sizes are 12962shown below. These are the code and data sizes for the acpica.lib 12963produced 12964by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12965any ACPI driver or OSPM code. The debug version of the code includes the 12966debug output trace mechanism and has a much larger code and data size. 12967Note 12968that these values will vary depending on the efficiency of the compiler 12969and 12970the compiler options used during generation. 12971 12972 Previous Release: 12973 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12974 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12975 Current Release: 12976 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12977 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12978 12979 12980 129812) iASL Compiler/Disassembler: 12982 12983Fixed a problem with the resource descriptor generation/support. For the 12984ResourceSourceIndex and the ResourceSource fields, both must be present, 12985or 12986both must be not present - can't have one without the other. 12987 12988The compiler now returns non-zero from the main procedure if any errors 12989have 12990occurred during the compilation. 12991 12992 12993---------------------------------------- 1299409 March 2005. Summary of changes for version 20050309: 12995 129961) ACPI CA Core Subsystem: 12997 12998The string-to-buffer implicit conversion code has been modified again 12999after 13000a change to the ACPI specification. In order to match the behavior of 13001the 13002other major ACPI implementation, the target buffer is no longer truncated 13003if 13004the source string is smaller than an existing target buffer. This change 13005requires an update to the ACPI spec, and should eliminate the recent 13006AE_AML_BUFFER_LIMIT issues. 13007 13008The "implicit return" support was rewritten to a new algorithm that 13009solves 13010the general case. Rather than attempt to determine when a method is about 13011to 13012exit, the result of every ASL operator is saved momentarily until the 13013very 13014next ASL operator is executed. Therefore, no matter how the method exits, 13015there will always be a saved implicit return value. This feature is only 13016enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 13017eliminate 13018AE_AML_NO_RETURN_VALUE errors when enabled. 13019 13020Implemented implicit conversion support for the predicate (operand) of 13021the 13022If, Else, and While operators. String and Buffer arguments are 13023automatically 13024converted to Integers. 13025 13026Changed the string-to-integer conversion behavior to match the new ACPI 13027errata: "If no integer object exists, a new integer is created. The ASCII 13028string is interpreted as a hexadecimal constant. Each string character is 13029interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 13030with the first character as the most significant digit, and ending with 13031the 13032first non-hexadecimal character or end-of-string." This means that the 13033first 13034non-hex character terminates the conversion and this is the code that was 13035changed. 13036 13037Fixed a problem where the ObjectType operator would fail (fault) when 13038used 13039on an Index of a Package which pointed to a null package element. The 13040operator now properly returns zero (Uninitialized) in this case. 13041 13042Fixed a problem where the While operator used excessive memory by not 13043properly popping the result stack during execution. There was no memory 13044leak 13045after execution, however. (Code provided by Valery Podrezov.) 13046 13047Fixed a problem where references to control methods within Package 13048objects 13049caused the method to be invoked, instead of producing a reference object 13050pointing to the method. 13051 13052Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 13053to 13054improve performance and reduce code size. (Code provided by Alexey 13055Starikovskiy.) 13056 13057Code and Data Size: Current and previous core subsystem library sizes are 13058shown below. These are the code and data sizes for the acpica.lib 13059produced 13060by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13061any ACPI driver or OSPM code. The debug version of the code includes the 13062debug output trace mechanism and has a much larger code and data size. 13063Note 13064that these values will vary depending on the efficiency of the compiler 13065and 13066the compiler options used during generation. 13067 13068 Previous Release: 13069 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13070 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13071 Current Release: 13072 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13073 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13074 13075 130762) iASL Compiler/Disassembler: 13077 13078Fixed a problem with the Return operator with no arguments. Since the AML 13079grammar for the byte encoding requires an operand for the Return opcode, 13080the 13081compiler now emits a Return(Zero) for this case. An ACPI specification 13082update has been written for this case. 13083 13084For tables other than the DSDT, namepath optimization is automatically 13085disabled. This is because SSDTs can be loaded anywhere in the namespace, 13086the 13087compiler has no knowledge of where, and thus cannot optimize namepaths. 13088 13089Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 13090inadvertently omitted from the ACPI specification, and will require an 13091update to the spec. 13092 13093The source file scan for ASCII characters is now optional (-a). This 13094change 13095was made because some vendors place non-ascii characters within comments. 13096However, the scan is simply a brute-force byte compare to ensure all 13097characters in the file are in the range 0x00 to 0x7F. 13098 13099Fixed a problem with the CondRefOf operator where the compiler was 13100inappropriately checking for the existence of the target. Since the point 13101of 13102the operator is to check for the existence of the target at run-time, the 13103compiler no longer checks for the target existence. 13104 13105Fixed a problem where errors generated from the internal AML interpreter 13106during constant folding were not handled properly, causing a fault. 13107 13108Fixed a problem with overly aggressive range checking for the Stall 13109operator. The valid range (max 255) is now only checked if the operand is 13110of 13111type Integer. All other operand types cannot be statically checked. 13112 13113Fixed a problem where control method references within the RefOf, 13114DeRefOf, 13115and ObjectType operators were not treated properly. They are now treated 13116as 13117actual references, not method invocations. 13118 13119Fixed and enhanced the "list namespace" option (-ln). This option was 13120broken 13121a number of releases ago. 13122 13123Improved error handling for the Field, IndexField, and BankField 13124operators. 13125The compiler now cleanly reports and recovers from errors in the field 13126component (FieldUnit) list. 13127 13128Fixed a disassembler problem where the optional ResourceDescriptor fields 13129TRS and TTP were not always handled correctly. 13130 13131Disassembler - Comments in output now use "//" instead of "/*" 13132 13133---------------------------------------- 1313428 February 2005. Summary of changes for version 20050228: 13135 131361) ACPI CA Core Subsystem: 13137 13138Fixed a problem where the result of an Index() operator (an object 13139reference) must increment the reference count on the target object for 13140the 13141life of the object reference. 13142 13143Implemented AML Interpreter and Debugger support for the new ACPI 3.0 13144Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 13145WordSpace 13146resource descriptors. 13147 13148Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 13149Space Descriptor" string, indicating interpreter support for the 13150descriptors 13151above. 13152 13153Implemented header support for the new ACPI 3.0 FADT flag bits. 13154 13155Implemented header support for the new ACPI 3.0 PCI Express bits for the 13156PM1 13157status/enable registers. 13158 13159Updated header support for the MADT processor local Apic struct and MADT 13160platform interrupt source struct for new ACPI 3.0 fields. 13161 13162Implemented header support for the SRAT and SLIT ACPI tables. 13163 13164Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 13165flag 13166at runtime. 13167 13168Code and Data Size: Current and previous core subsystem library sizes are 13169shown below. These are the code and data sizes for the acpica.lib 13170produced 13171by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13172any ACPI driver or OSPM code. The debug version of the code includes the 13173debug output trace mechanism and has a much larger code and data size. 13174Note 13175that these values will vary depending on the efficiency of the compiler 13176and 13177the compiler options used during generation. 13178 13179 Previous Release: 13180 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13181 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13182 Current Release: 13183 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13184 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13185 13186 131872) iASL Compiler/Disassembler: 13188 13189Fixed a problem with the internal 64-bit String-to-integer conversion 13190with 13191strings less than two characters long. 13192 13193Fixed a problem with constant folding where the result of the Index() 13194operator can not be considered a constant. This means that Index() cannot 13195be 13196a type3 opcode and this will require an update to the ACPI specification. 13197 13198Disassembler: Implemented support for the TTP, MTP, and TRS resource 13199descriptor fields. These fields were inadvertently ignored and not output 13200in 13201the disassembly of the resource descriptor. 13202 13203 13204 ---------------------------------------- 1320511 February 2005. Summary of changes for version 20050211: 13206 132071) ACPI CA Core Subsystem: 13208 13209Implemented ACPI 3.0 support for implicit conversion within the Match() 13210operator. MatchObjects can now be of type integer, buffer, or string 13211instead 13212of just type integer. Package elements are implicitly converted to the 13213type 13214of the MatchObject. This change aligns the behavior of Match() with the 13215behavior of the other logical operators (LLess(), etc.) It also requires 13216an 13217errata change to the ACPI specification as this support was intended for 13218ACPI 3.0, but was inadvertently omitted. 13219 13220Fixed a problem with the internal implicit "to buffer" conversion. 13221Strings 13222that are converted to buffers will cause buffer truncation if the string 13223is 13224smaller than the target buffer. Integers that are converted to buffers 13225will 13226not cause buffer truncation, only zero extension (both as per the ACPI 13227spec.) The problem was introduced when code was added to truncate the 13228buffer, but this should not be performed in all cases, only the string 13229case. 13230 13231Fixed a problem with the Buffer and Package operators where the 13232interpreter 13233would get confused if two such operators were used as operands to an ASL 13234operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 13235stack was not being popped after the execution of these operators, 13236resulting 13237in an AE_NO_RETURN_VALUE exception. 13238 13239Fixed a problem with constructs of the form Store(Index(...),...). The 13240reference object returned from Index was inadvertently resolved to an 13241actual 13242value. This problem was introduced in version 20050114 when the behavior 13243of 13244Store() was modified to restrict the object types that can be used as the 13245source operand (to match the ACPI specification.) 13246 13247Reduced excessive stack use within the AcpiGetObjectInfo procedure. 13248 13249Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 13250 13251Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 13252 13253Code and Data Size: Current and previous core subsystem library sizes are 13254shown below. These are the code and data sizes for the acpica.lib 13255produced 13256by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13257any ACPI driver or OSPM code. The debug version of the code includes the 13258debug output trace mechanism and has a much larger code and data size. 13259Note 13260that these values will vary depending on the efficiency of the compiler 13261and 13262the compiler options used during generation. 13263 13264 Previous Release: 13265 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13266 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13267 Current Release: 13268 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13269 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13270 13271 132722) iASL Compiler/Disassembler: 13273 13274Fixed a code generation problem in the constant folding optimization code 13275where incorrect code was generated if a constant was reduced to a buffer 13276object (i.e., a reduced type 5 opcode.) 13277 13278Fixed a typechecking problem for the ToBuffer operator. Caused by an 13279incorrect return type in the internal opcode information table. 13280 13281---------------------------------------- 1328225 January 2005. Summary of changes for version 20050125: 13283 132841) ACPI CA Core Subsystem: 13285 13286Fixed a recently introduced problem with the Global Lock where the 13287underlying semaphore was not created. This problem was introduced in 13288version 20050114, and caused an AE_AML_NO_OPERAND exception during an 13289Acquire() operation on _GL. 13290 13291The local object cache is now optional, and is disabled by default. Both 13292AcpiExec and the iASL compiler enable the cache because they run in user 13293mode and this enhances their performance. #define 13294ACPI_ENABLE_OBJECT_CACHE 13295to enable the local cache. 13296 13297Fixed an issue in the internal function AcpiUtEvaluateObject concerning 13298the 13299optional "implicit return" support where an error was returned if no 13300return 13301object was expected, but one was implicitly returned. AE_OK is now 13302returned 13303in this case and the implicitly returned object is deleted. 13304AcpiUtEvaluateObject is only occasionally used, and only to execute 13305reserved 13306methods such as _STA and _INI where the return type is known up front. 13307 13308Fixed a few issues with the internal convert-to-integer code. It now 13309returns 13310an error if an attempt is made to convert a null string, a string of only 13311blanks/tabs, or a zero-length buffer. This affects both implicit 13312conversion 13313and explicit conversion via the ToInteger() operator. 13314 13315The internal debug code in AcpiUtAcquireMutex has been commented out. It 13316is 13317not needed for normal operation and should increase the performance of 13318the 13319entire subsystem. The code remains in case it is needed for debug 13320purposes 13321again. 13322 13323The AcpiExec source and makefile are included in the Unix/Linux package 13324for 13325the first time. 13326 13327Code and Data Size: Current and previous core subsystem library sizes are 13328shown below. These are the code and data sizes for the acpica.lib 13329produced 13330by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13331any ACPI driver or OSPM code. The debug version of the code includes the 13332debug output trace mechanism and has a much larger code and data size. 13333Note 13334that these values will vary depending on the efficiency of the compiler 13335and 13336the compiler options used during generation. 13337 13338 Previous Release: 13339 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13340 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13341 Current Release: 13342 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13343 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13344 133452) iASL Compiler/Disassembler: 13346 13347Switch/Case support: A warning is now issued if the type of the Switch 13348value 13349cannot be determined at compile time. For example, Switch(Arg0) will 13350generate the warning, and the type is assumed to be an integer. As per 13351the 13352ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 13353the 13354warning. 13355 13356Switch/Case support: Implemented support for buffer and string objects as 13357the switch value. This is an ACPI 3.0 feature, now that LEqual supports 13358buffers and strings. 13359 13360Switch/Case support: The emitted code for the LEqual() comparisons now 13361uses 13362the switch value as the first operand, not the second. The case value is 13363now 13364the second operand, and this allows the case value to be implicitly 13365converted to the type of the switch value, not the other way around. 13366 13367Switch/Case support: Temporary variables are now emitted immediately 13368within 13369the control method, not at the global level. This means that there are 13370now 1337136 temps available per-method, not 36 temps per-module as was the case 13372with 13373the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 13374 13375---------------------------------------- 1337614 January 2005. Summary of changes for version 20050114: 13377 13378Added 2005 copyright to all module headers. This affects every module in 13379the core subsystem, iASL compiler, and the utilities. 13380 133811) ACPI CA Core Subsystem: 13382 13383Fixed an issue with the String-to-Buffer conversion code where the string 13384null terminator was not included in the buffer after conversion, but 13385there 13386is existing ASL that assumes the string null terminator is included. This 13387is 13388the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 13389introduced in the previous version when the code was updated to correctly 13390set the converted buffer size as per the ACPI specification. The ACPI 13391spec 13392is ambiguous and will be updated to specify that the null terminator must 13393be 13394included in the converted buffer. This also affects the ToBuffer() ASL 13395operator. 13396 13397Fixed a problem with the Mid() ASL/AML operator where it did not work 13398correctly on Buffer objects. Newly created sub-buffers were not being 13399marked 13400as initialized. 13401 13402 13403Fixed a problem in AcpiTbFindTable where incorrect string compares were 13404performed on the OemId and OemTableId table header fields. These fields 13405are 13406not null terminated, so strncmp is now used instead of strcmp. 13407 13408Implemented a restriction on the Store() ASL/AML operator to align the 13409behavior with the ACPI specification. Previously, any object could be 13410used 13411as the source operand. Now, the only objects that may be used are 13412Integers, 13413Buffers, Strings, Packages, Object References, and DDB Handles. If 13414necessary, the original behavior can be restored by enabling the 13415EnableInterpreterSlack flag. 13416 13417Enhanced the optional "implicit return" support to allow an implicit 13418return 13419value from methods that are invoked externally via the AcpiEvaluateObject 13420interface. This enables implicit returns from the _STA and _INI methods, 13421for example. 13422 13423Changed the Revision() ASL/AML operator to return the current version of 13424the 13425AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 13426returned 13427the supported ACPI version (This is the function of the _REV method). 13428 13429Updated the _REV predefined method to return the currently supported 13430version 13431of ACPI, now 3. 13432 13433Implemented batch mode option for the AcpiExec utility (-b). 13434 13435Code and Data Size: Current and previous core subsystem library sizes are 13436shown below. These are the code and data sizes for the acpica.lib 13437produced 13438by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13439any ACPI driver or OSPM code. The debug version of the code includes the 13440debug output trace mechanism and has a much larger code and data size. 13441Note 13442that these values will vary depending on the efficiency of the compiler 13443and 13444the compiler options used during generation. 13445 13446 Previous Release: 13447 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13448 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13449 Current Release: 13450 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13451 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13452 13453---------------------------------------- 1345410 December 2004. Summary of changes for version 20041210: 13455 13456ACPI 3.0 support is nearing completion in both the iASL compiler and the 13457ACPI CA core subsystem. 13458 134591) ACPI CA Core Subsystem: 13460 13461Fixed a problem in the ToDecimalString operator where the resulting 13462string 13463length was incorrectly calculated. The length is now calculated exactly, 13464eliminating incorrect AE_STRING_LIMIT exceptions. 13465 13466Fixed a problem in the ToHexString operator to allow a maximum 200 13467character 13468string to be produced. 13469 13470Fixed a problem in the internal string-to-buffer and buffer-to-buffer 13471copy 13472routine where the length of the resulting buffer was not truncated to the 13473new size (if the target buffer already existed). 13474 13475Code and Data Size: Current and previous core subsystem library sizes are 13476shown below. These are the code and data sizes for the acpica.lib 13477produced 13478by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13479any ACPI driver or OSPM code. The debug version of the code includes the 13480debug output trace mechanism and has a much larger code and data size. 13481Note 13482that these values will vary depending on the efficiency of the compiler 13483and 13484the compiler options used during generation. 13485 13486 Previous Release: 13487 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13488 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13489 Current Release: 13490 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13491 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13492 13493 134942) iASL Compiler/Disassembler: 13495 13496Implemented the new ACPI 3.0 resource template macros - DWordSpace, 13497ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 13498Includes support in the disassembler. 13499 13500Implemented support for the new (ACPI 3.0) parameter to the Register 13501macro, 13502AccessSize. 13503 13504Fixed a problem where the _HE resource name for the Interrupt macro was 13505referencing bit 0 instead of bit 1. 13506 13507Implemented check for maximum 255 interrupts in the Interrupt macro. 13508 13509Fixed a problem with the predefined resource descriptor names where 13510incorrect AML code was generated if the offset within the resource buffer 13511was 0 or 1. The optimizer shortened the AML code to a single byte opcode 13512but did not update the surrounding package lengths. 13513 13514Changes to the Dma macro: All channels within the channel list must be 13515in 13516the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 13517optional (default is BusMaster). 13518 13519Implemented check for maximum 7 data bytes for the VendorShort macro. 13520 13521The ReadWrite parameter is now optional for the Memory32 and similar 13522macros. 13523 13524---------------------------------------- 1352503 December 2004. Summary of changes for version 20041203: 13526 135271) ACPI CA Core Subsystem: 13528 13529The low-level field insertion/extraction code (exfldio) has been 13530completely 13531rewritten to eliminate unnecessary complexity, bugs, and boundary 13532conditions. 13533 13534Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 13535ToDecimalString 13536operators where the input operand could be inadvertently deleted if no 13537conversion was necessary (e.g., if the input to ToInteger was an Integer 13538object.) 13539 13540Fixed a problem with the ToDecimalString and ToHexString where an 13541incorrect 13542exception code was returned if the resulting string would be > 200 chars. 13543AE_STRING_LIMIT is now returned. 13544 13545Fixed a problem with the Concatenate operator where AE_OK was always 13546returned, even if the operation failed. 13547 13548Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 13549semaphores to be allocated. 13550 13551Code and Data Size: Current and previous core subsystem library sizes are 13552shown below. These are the code and data sizes for the acpica.lib 13553produced 13554by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13555any ACPI driver or OSPM code. The debug version of the code includes the 13556debug output trace mechanism and has a much larger code and data size. 13557Note 13558that these values will vary depending on the efficiency of the compiler 13559and 13560the compiler options used during generation. 13561 13562 Previous Release: 13563 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13564 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13565 Current Release: 13566 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13567 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13568 13569 135702) iASL Compiler/Disassembler: 13571 13572Fixed typechecking for the ObjectType and SizeOf operators. Problem was 13573recently introduced in 20041119. 13574 13575Fixed a problem with the ToUUID macro where the upper nybble of each 13576buffer 13577byte was inadvertently set to zero. 13578 13579---------------------------------------- 1358019 November 2004. Summary of changes for version 20041119: 13581 135821) ACPI CA Core Subsystem: 13583 13584Fixed a problem in the internal ConvertToInteger routine where new 13585integers 13586were not truncated to 32 bits for 32-bit ACPI tables. This routine 13587converts 13588buffers and strings to integers. 13589 13590Implemented support to store a value to an Index() on a String object. 13591This 13592is an ACPI 2.0 feature that had not yet been implemented. 13593 13594Implemented new behavior for storing objects to individual package 13595elements 13596(via the Index() operator). The previous behavior was to invoke the 13597implicit 13598conversion rules if an object was already present at the index. The new 13599behavior is to simply delete any existing object and directly store the 13600new 13601object. Although the ACPI specification seems unclear on this subject, 13602other 13603ACPI implementations behave in this manner. (This is the root of the 13604AE_BAD_HEX_CONSTANT issue.) 13605 13606Modified the RSDP memory scan mechanism to support the extended checksum 13607for 13608ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 13609RSDP signature is found with a valid checksum. 13610 13611Code and Data Size: Current and previous core subsystem library sizes are 13612shown below. These are the code and data sizes for the acpica.lib 13613produced 13614by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13615any ACPI driver or OSPM code. The debug version of the code includes the 13616debug output trace mechanism and has a much larger code and data size. 13617Note 13618that these values will vary depending on the efficiency of the compiler 13619and 13620the compiler options used during generation. 13621 13622 Previous Release: 13623 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13624 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13625 Current Release: 13626 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13627 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13628 13629 136302) iASL Compiler/Disassembler: 13631 13632Fixed a missing semicolon in the aslcompiler.y file. 13633 13634---------------------------------------- 1363505 November 2004. Summary of changes for version 20041105: 13636 136371) ACPI CA Core Subsystem: 13638 13639Implemented support for FADT revision 2. This was an interim table 13640(between 13641ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 13642 13643Implemented optional support to allow uninitialized LocalX and ArgX 13644variables in a control method. The variables are initialized to an 13645Integer 13646object with a value of zero. This support is enabled by setting the 13647AcpiGbl_EnableInterpreterSlack flag to TRUE. 13648 13649Implemented support for Integer objects for the SizeOf operator. Either 136504 13651or 8 is returned, depending on the current integer size (32-bit or 64- 13652bit, 13653depending on the parent table revision). 13654 13655Fixed a problem in the implementation of the SizeOf and ObjectType 13656operators 13657where the operand was resolved to a value too early, causing incorrect 13658return values for some objects. 13659 13660Fixed some possible memory leaks during exceptional conditions. 13661 13662Code and Data Size: Current and previous core subsystem library sizes are 13663shown below. These are the code and data sizes for the acpica.lib 13664produced 13665by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13666any ACPI driver or OSPM code. The debug version of the code includes the 13667debug output trace mechanism and has a much larger code and data size. 13668Note 13669that these values will vary depending on the efficiency of the compiler 13670and 13671the compiler options used during generation. 13672 13673 Previous Release: 13674 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13675 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13676 Current Release: 13677 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13678 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13679 13680 136812) iASL Compiler/Disassembler: 13682 13683Implemented support for all ACPI 3.0 reserved names and methods. 13684 13685Implemented all ACPI 3.0 grammar elements in the front-end, including 13686support for semicolons. 13687 13688Implemented the ACPI 3.0 Function() and ToUUID() macros 13689 13690Fixed a problem in the disassembler where a Scope() operator would not be 13691emitted properly if the target of the scope was in another table. 13692 13693---------------------------------------- 1369415 October 2004. Summary of changes for version 20041015: 13695 13696Note: ACPI CA is currently undergoing an in-depth and complete formal 13697evaluation to test/verify the following areas. Other suggestions are 13698welcome. This will result in an increase in the frequency of releases and 13699the number of bug fixes in the next few months. 13700 - Functional tests for all ASL/AML operators 13701 - All implicit/explicit type conversions 13702 - Bit fields and operation regions 13703 - 64-bit math support and 32-bit-only "truncated" math support 13704 - Exceptional conditions, both compiler and interpreter 13705 - Dynamic object deletion and memory leaks 13706 - ACPI 3.0 support when implemented 13707 - External interfaces to the ACPI subsystem 13708 13709 137101) ACPI CA Core Subsystem: 13711 13712Fixed two alignment issues on 64-bit platforms - within debug statements 13713in 13714AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 13715Address 13716field within the non-aligned ACPI generic address structure. 13717 13718Fixed a problem in the Increment and Decrement operators where incorrect 13719operand resolution could result in the inadvertent modification of the 13720original integer when the integer is passed into another method as an 13721argument and the arg is then incremented/decremented. 13722 13723Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 13724bit 13725BCD number were truncated during conversion. 13726 13727Fixed a problem in the ToDecimal operator where the length of the 13728resulting 13729string could be set incorrectly too long if the input operand was a 13730Buffer 13731object. 13732 13733Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 13734(0) 13735within a buffer would prematurely terminate a compare between buffer 13736objects. 13737 13738Added a check for string overflow (>200 characters as per the ACPI 13739specification) during the Concatenate operator with two string operands. 13740 13741Code and Data Size: Current and previous core subsystem library sizes are 13742shown below. These are the code and data sizes for the acpica.lib 13743produced 13744by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13745any ACPI driver or OSPM code. The debug version of the code includes the 13746debug output trace mechanism and has a much larger code and data size. 13747Note 13748that these values will vary depending on the efficiency of the compiler 13749and 13750the compiler options used during generation. 13751 13752 Previous Release: 13753 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13754 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13755 Current Release: 13756 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13757 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13758 13759 13760 137612) iASL Compiler/Disassembler: 13762 13763Allow the use of the ObjectType operator on uninitialized Locals and Args 13764(returns 0 as per the ACPI specification). 13765 13766Fixed a problem where the compiler would fault if there was a syntax 13767error 13768in the FieldName of all of the various CreateXXXField operators. 13769 13770Disallow the use of lower case letters within the EISAID macro, as per 13771the 13772ACPI specification. All EISAID strings must be of the form "UUUNNNN" 13773Where 13774U is an uppercase letter and N is a hex digit. 13775 13776 13777---------------------------------------- 1377806 October 2004. Summary of changes for version 20041006: 13779 137801) ACPI CA Core Subsystem: 13781 13782Implemented support for the ACPI 3.0 Timer operator. This ASL function 13783implements a 64-bit timer with 100 nanosecond granularity. 13784 13785Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 13786implement the ACPI 3.0 Timer operator. This allows the host OS to 13787implement 13788the timer with the best clock available. Also, it keeps the core 13789subsystem 13790out of the clock handling business, since the host OS (usually) performs 13791this function. 13792 13793Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 13794functions use a 64-bit address which is part of the packed ACPI Generic 13795Address Structure. Since the structure is non-aligned, the alignment 13796macros 13797are now used to extract the address to a local variable before use. 13798 13799Fixed a problem where the ToInteger operator assumed all input strings 13800were 13801hexadecimal. The operator now handles both decimal strings and hex 13802strings 13803(prefixed with "0x"). 13804 13805Fixed a problem where the string length in the string object created as a 13806result of the internal ConvertToString procedure could be incorrect. This 13807potentially affected all implicit conversions and also the 13808ToDecimalString 13809and ToHexString operators. 13810 13811Fixed two problems in the ToString operator. If the length parameter was 13812zero, an incorrect string object was created and the value of the input 13813length parameter was inadvertently changed from zero to Ones. 13814 13815Fixed a problem where the optional ResourceSource string in the 13816ExtendedIRQ 13817resource macro was ignored. 13818 13819Simplified the interfaces to the internal division functions, reducing 13820code 13821size and complexity. 13822 13823Code and Data Size: Current and previous core subsystem library sizes are 13824shown below. These are the code and data sizes for the acpica.lib 13825produced 13826by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13827any ACPI driver or OSPM code. The debug version of the code includes the 13828debug output trace mechanism and has a much larger code and data size. 13829Note 13830that these values will vary depending on the efficiency of the compiler 13831and 13832the compiler options used during generation. 13833 13834 Previous Release: 13835 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13836 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13837 Current Release: 13838 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13839 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13840 13841 138422) iASL Compiler/Disassembler: 13843 13844Implemented support for the ACPI 3.0 Timer operator. 13845 13846Fixed a problem where the Default() operator was inadvertently ignored in 13847a 13848Switch/Case block. This was a problem in the translation of the Switch 13849statement to If...Else pairs. 13850 13851Added support to allow a standalone Return operator, with no parentheses 13852(or 13853operands). 13854 13855Fixed a problem with code generation for the ElseIf operator where the 13856translated Else...If parse tree was improperly constructed leading to the 13857loss of some code. 13858 13859---------------------------------------- 1386022 September 2004. Summary of changes for version 20040922: 13861 138621) ACPI CA Core Subsystem: 13863 13864Fixed a problem with the implementation of the LNot() operator where 13865"Ones" 13866was not returned for the TRUE case. Changed the code to return Ones 13867instead 13868of (!Arg) which was usually 1. This change affects iASL constant folding 13869for 13870this operator also. 13871 13872Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 13873not 13874initialized properly -- Now zero the entire buffer in this case where the 13875buffer already exists. 13876 13877Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 13878Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 13879related code considerably. This will require changes/updates to all OS 13880interface layers (OSLs.) 13881 13882Implemented a new external interface, AcpiInstallExceptionHandler, to 13883allow 13884a system exception handler to be installed. This handler is invoked upon 13885any 13886run-time exception that occurs during control method execution. 13887 13888Added support for the DSDT in AcpiTbFindTable. This allows the 13889DataTableRegion() operator to access the local copy of the DSDT. 13890 13891Code and Data Size: Current and previous core subsystem library sizes are 13892shown below. These are the code and data sizes for the acpica.lib 13893produced 13894by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13895any ACPI driver or OSPM code. The debug version of the code includes the 13896debug output trace mechanism and has a much larger code and data size. 13897Note 13898that these values will vary depending on the efficiency of the compiler 13899and 13900the compiler options used during generation. 13901 13902 Previous Release: 13903 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13904 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13905 Current Release: 13906 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13907 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13908 13909 139102) iASL Compiler/Disassembler: 13911 13912Fixed a problem with constant folding and the LNot operator. LNot was 13913returning 1 in the TRUE case, not Ones as per the ACPI specification. 13914This 13915could result in the generation of an incorrect folded/reduced constant. 13916 13917End-Of-File is now allowed within a "//"-style comment. A parse error no 13918longer occurs if such a comment is at the very end of the input ASL 13919source 13920file. 13921 13922Implemented the "-r" option to override the Revision in the table header. 13923The initial use of this option will be to simplify the evaluation of the 13924AML 13925interpreter by allowing a single ASL source module to be compiled for 13926either 1392732-bit or 64-bit integers. 13928 13929 13930---------------------------------------- 1393127 August 2004. Summary of changes for version 20040827: 13932 139331) ACPI CA Core Subsystem: 13934 13935- Implemented support for implicit object conversion in the non-numeric 13936logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 13937and 13938LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 13939the second operand is implicitly converted on the fly to match the type 13940of 13941the first operand. For example: 13942 13943 LEqual (Source1, Source2) 13944 13945Source1 and Source2 must each evaluate to an integer, a string, or a 13946buffer. 13947The data type of Source1 dictates the required type of Source2. Source2 13948is 13949implicitly converted if necessary to match the type of Source1. 13950 13951- Updated and corrected the behavior of the string conversion support. 13952The 13953rules concerning conversion of buffers to strings (according to the ACPI 13954specification) are as follows: 13955 13956ToDecimalString - explicit byte-wise conversion of buffer to string of 13957decimal values (0-255) separated by commas. ToHexString - explicit byte- 13958wise 13959conversion of buffer to string of hex values (0-FF) separated by commas. 13960ToString - explicit byte-wise conversion of buffer to string. Byte-by- 13961byte 13962copy with no transform except NULL terminated. Any other implicit buffer- 13963to- 13964string conversion - byte-wise conversion of buffer to string of hex 13965values 13966(0-FF) separated by spaces. 13967 13968- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 13969 13970- Fixed a problem in AcpiNsGetPathnameLength where the returned length 13971was 13972one byte too short in the case of a node in the root scope. This could 13973cause a fault during debug output. 13974 13975- Code and Data Size: Current and previous core subsystem library sizes 13976are 13977shown below. These are the code and data sizes for the acpica.lib 13978produced 13979by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13980any ACPI driver or OSPM code. The debug version of the code includes the 13981debug output trace mechanism and has a much larger code and data size. 13982Note 13983that these values will vary depending on the efficiency of the compiler 13984and 13985the compiler options used during generation. 13986 13987 Previous Release: 13988 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13989 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13990 Current Release: 13991 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13992 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13993 13994 139952) iASL Compiler/Disassembler: 13996 13997- Fixed a Linux generation error. 13998 13999 14000---------------------------------------- 1400116 August 2004. Summary of changes for version 20040816: 14002 140031) ACPI CA Core Subsystem: 14004 14005Designed and implemented support within the AML interpreter for the so- 14006called "implicit return". This support returns the result of the last 14007ASL 14008operation within a control method, in the absence of an explicit Return() 14009operator. A few machines depend on this behavior, even though it is not 14010explicitly supported by the ASL language. It is optional support that 14011can 14012be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 14013 14014Removed support for the PCI_Config address space from the internal low 14015level 14016hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 14017support was not used internally, and would not work correctly anyway 14018because 14019the PCI bus number and segment number were not supported. There are 14020separate interfaces for PCI configuration space access because of the 14021unique 14022interface. 14023 14024Code and Data Size: Current and previous core subsystem library sizes are 14025shown below. These are the code and data sizes for the acpica.lib 14026produced 14027by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14028any ACPI driver or OSPM code. The debug version of the code includes the 14029debug output trace mechanism and has a much larger code and data size. 14030Note 14031that these values will vary depending on the efficiency of the compiler 14032and 14033the compiler options used during generation. 14034 14035 Previous Release: 14036 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14037 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14038 Current Release: 14039 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14040 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14041 14042 140432) iASL Compiler/Disassembler: 14044 14045Fixed a problem where constants in ASL expressions at the root level (not 14046within a control method) could be inadvertently truncated during code 14047generation. This problem was introduced in the 20040715 release. 14048 14049 14050---------------------------------------- 1405115 July 2004. Summary of changes for version 20040715: 14052 140531) ACPI CA Core Subsystem: 14054 14055Restructured the internal HW GPE interfaces to pass/track the current 14056state 14057of interrupts (enabled/disabled) in order to avoid possible deadlock and 14058increase flexibility of the interfaces. 14059 14060Implemented a "lexicographical compare" for String and Buffer objects 14061within 14062the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 14063- 14064as per further clarification to the ACPI specification. Behavior is 14065similar 14066to C library "strcmp". 14067 14068Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 14069external function. In the 32-bit non-debug case, the stack use has been 14070reduced from 168 bytes to 32 bytes. 14071 14072Deployed a new run-time configuration flag, 14073AcpiGbl_EnableInterpreterSlack, 14074whose purpose is to allow the AML interpreter to forgive certain bad AML 14075constructs. Default setting is FALSE. 14076 14077Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 14078IO 14079support code. If enabled, it allows field access to go beyond the end of 14080a 14081region definition if the field is within the region length rounded up to 14082the 14083next access width boundary (a common coding error.) 14084 14085Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 14086ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 14087these 14088symbols are lowercase by the latest version of the AcpiSrc tool. 14089 14090The prototypes for the PCI interfaces in acpiosxf.h have been updated to 14091rename "Register" to simply "Reg" to prevent certain compilers from 14092complaining. 14093 14094Code and Data Size: Current and previous core subsystem library sizes are 14095shown below. These are the code and data sizes for the acpica.lib 14096produced 14097by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14098any ACPI driver or OSPM code. The debug version of the code includes the 14099debug output trace mechanism and has a much larger code and data size. 14100Note 14101that these values will vary depending on the efficiency of the compiler 14102and 14103the compiler options used during generation. 14104 14105 Previous Release: 14106 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14107 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14108 Current Release: 14109 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14110 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14111 14112 141132) iASL Compiler/Disassembler: 14114 14115Implemented full support for Package objects within the Case() operator. 14116Note: The Break() operator is currently not supported within Case blocks 14117(TermLists) as there is some question about backward compatibility with 14118ACPI 141191.0 interpreters. 14120 14121 14122Fixed a problem where complex terms were not supported properly within 14123the 14124Switch() operator. 14125 14126Eliminated extraneous warning for compiler-emitted reserved names of the 14127form "_T_x". (Used in Switch/Case operators.) 14128 14129Eliminated optimization messages for "_T_x" objects and small constants 14130within the DefinitionBlock operator. 14131 14132 14133---------------------------------------- 1413415 June 2004. Summary of changes for version 20040615: 14135 141361) ACPI CA Core Subsystem: 14137 14138Implemented support for Buffer and String objects (as per ACPI 2.0) for 14139the 14140following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14141LLessEqual. 14142 14143All directory names in the entire source package are lower case, as they 14144were in earlier releases. 14145 14146Implemented "Disassemble" command in the AML debugger that will 14147disassemble 14148a single control method. 14149 14150Code and Data Size: Current and previous core subsystem library sizes are 14151shown below. These are the code and data sizes for the acpica.lib 14152produced 14153by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14154any ACPI driver or OSPM code. The debug version of the code includes the 14155debug output trace mechanism and has a much larger code and data size. 14156Note 14157that these values will vary depending on the efficiency of the compiler 14158and 14159the compiler options used during generation. 14160 14161 Previous Release: 14162 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14163 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14164 14165 Current Release: 14166 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14167 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14168 14169 141702) iASL Compiler/Disassembler: 14171 14172Implemented support for Buffer and String objects (as per ACPI 2.0) for 14173the 14174following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14175LLessEqual. 14176 14177All directory names in the entire source package are lower case, as they 14178were in earlier releases. 14179 14180Fixed a fault when using the -g or -d<nofilename> options if the FADT was 14181not found. 14182 14183Fixed an issue with the Windows version of the compiler where later 14184versions 14185of Windows place the FADT in the registry under the name "FADT" and not 14186"FACP" as earlier versions did. This applies when using the -g or - 14187d<nofilename> options. The compiler now looks for both strings as 14188necessary. 14189 14190Fixed a problem with compiler namepath optimization where a namepath 14191within 14192the Scope() operator could not be optimized if the namepath was a subpath 14193of 14194the current scope path. 14195 14196---------------------------------------- 1419727 May 2004. Summary of changes for version 20040527: 14198 141991) ACPI CA Core Subsystem: 14200 14201Completed a new design and implementation for EBDA (Extended BIOS Data 14202Area) 14203support in the RSDP scan code. The original code improperly scanned for 14204the 14205EBDA by simply scanning from memory location 0 to 0x400. The correct 14206method 14207is to first obtain the EBDA pointer from within the BIOS data area, then 14208scan 1K of memory starting at the EBDA pointer. There appear to be few 14209if 14210any machines that place the RSDP in the EBDA, however. 14211 14212Integrated a fix for a possible fault during evaluation of BufferField 14213arguments. Obsolete code that was causing the problem was removed. 14214 14215Found and fixed a problem in the Field Support Code where data could be 14216corrupted on a bit field read that starts on an aligned boundary but does 14217not end on an aligned boundary. Merged the read/write "datum length" 14218calculation code into a common procedure. 14219 14220Rolled in a couple of changes to the FreeBSD-specific header. 14221 14222 14223Code and Data Size: Current and previous core subsystem library sizes are 14224shown below. These are the code and data sizes for the acpica.lib 14225produced 14226by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14227any ACPI driver or OSPM code. The debug version of the code includes the 14228debug output trace mechanism and has a much larger code and data size. 14229Note 14230that these values will vary depending on the efficiency of the compiler 14231and 14232the compiler options used during generation. 14233 14234 Previous Release: 14235 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14236 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14237 Current Release: 14238 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14239 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14240 14241 142422) iASL Compiler/Disassembler: 14243 14244Fixed a generation warning produced by some overly-verbose compilers for 14245a 1424664-bit constant. 14247 14248---------------------------------------- 1424914 May 2004. Summary of changes for version 20040514: 14250 142511) ACPI CA Core Subsystem: 14252 14253Fixed a problem where hardware GPE enable bits sometimes not set properly 14254during and after GPE method execution. Result of 04/27 changes. 14255 14256Removed extra "clear all GPEs" when sleeping/waking. 14257 14258Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 14259AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 14260to 14261the new AcpiEv* calls as appropriate. 14262 14263ACPI_OS_NAME was removed from the OS-specific headers. The default name 14264is 14265now "Microsoft Windows NT" for maximum compatibility. However this can 14266be 14267changed by modifying the acconfig.h file. 14268 14269Allow a single invocation of AcpiInstallNotifyHandler for a handler that 14270traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 14271 14272Run _INI methods on ThermalZone objects. This is against the ACPI 14273specification, but there is apparently ASL code in the field that has 14274these 14275_INI methods, and apparently "other" AML interpreters execute them. 14276 14277Performed a full 16/32/64 bit lint that resulted in some small changes. 14278 14279Added a sleep simulation command to the AML debugger to test sleep code. 14280 14281Code and Data Size: Current and previous core subsystem library sizes are 14282shown below. These are the code and data sizes for the acpica.lib 14283produced 14284by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14285any ACPI driver or OSPM code. The debug version of the code includes the 14286debug output trace mechanism and has a much larger code and data size. 14287Note 14288that these values will vary depending on the efficiency of the compiler 14289and 14290the compiler options used during generation. 14291 14292 Previous Release: 14293 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14294 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14295 Current Release: 14296 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14297 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14298 14299---------------------------------------- 1430027 April 2004. Summary of changes for version 20040427: 14301 143021) ACPI CA Core Subsystem: 14303 14304Completed a major overhaul of the GPE handling within ACPI CA. There are 14305now three types of GPEs: wake-only, runtime-only, and combination 14306wake/run. 14307The only GPEs allowed to be combination wake/run are for button-style 14308devices such as a control-method power button, control-method sleep 14309button, 14310or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 14311not 14312referenced by any _PRW methods are marked for "runtime" and hardware 14313enabled. Any GPE that is referenced by a _PRW method is marked for 14314"wake" 14315(and disabled at runtime). However, at sleep time, only those GPEs that 14316have been specifically enabled for wake via the AcpiEnableGpe interface 14317will 14318actually be hardware enabled. 14319 14320A new external interface has been added, AcpiSetGpeType(), that is meant 14321to 14322be used by device drivers to force a GPE to a particular type. It will 14323be 14324especially useful for the drivers for the button devices mentioned above. 14325 14326Completed restructuring of the ACPI CA initialization sequence so that 14327default operation region handlers are installed before GPEs are 14328initialized 14329and the _PRW methods are executed. This will prevent errors when the 14330_PRW 14331methods attempt to access system memory or I/O space. 14332 14333GPE enable/disable no longer reads the GPE enable register. We now keep 14334the 14335enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 14336thus no longer depend on the hardware to maintain these bits. 14337 14338Always clear the wake status and fixed/GPE status bits before sleep, even 14339for state S5. 14340 14341Improved the AML debugger output for displaying the GPE blocks and their 14342current status. 14343 14344Added new strings for the _OSI method, of the form "Windows 2001 SPx" 14345where 14346x = 0,1,2,3,4. 14347 14348Fixed a problem where the physical address was incorrectly calculated 14349when 14350the Load() operator was used to directly load from an Operation Region 14351(vs. 14352loading from a Field object.) Also added check for minimum table length 14353for 14354this case. 14355 14356Fix for multiple mutex acquisition. Restore original thread SyncLevel on 14357mutex release. 14358 14359Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 14360consistency with the other fields returned. 14361 14362Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 14363structure for each GPE in the system, so the size of this structure is 14364important. 14365 14366CPU stack requirement reduction: Cleaned up the method execution and 14367object 14368evaluation paths so that now a parameter structure is passed, instead of 14369copying the various method parameters over and over again. 14370 14371In evregion.c: Correctly exit and reenter the interpreter region if and 14372only if dispatching an operation region request to a user-installed 14373handler. 14374Do not exit/reenter when dispatching to a default handler (e.g., default 14375system memory or I/O handlers) 14376 14377 14378Notes for updating drivers for the new GPE support. The following 14379changes 14380must be made to ACPI-related device drivers that are attached to one or 14381more 14382GPEs: (This information will be added to the ACPI CA Programmer 14383Reference.) 14384 143851) AcpiInstallGpeHandler no longer automatically enables the GPE, you 14386must 14387explicitly call AcpiEnableGpe. 143882) There is a new interface called AcpiSetGpeType. This should be called 14389before enabling the GPE. Also, this interface will automatically disable 14390the GPE if it is currently enabled. 143913) AcpiEnableGpe no longer supports a GPE type flag. 14392 14393Specific drivers that must be changed: 143941) EC driver: 14395 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 14396AeGpeHandler, NULL); 14397 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 14398 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 14399 144002) Button Drivers (Power, Lid, Sleep): 14401Run _PRW method under parent device 14402If _PRW exists: /* This is a control-method button */ 14403 Extract GPE number and possibly GpeDevice 14404 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 14405 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 14406 14407For all other devices that have _PRWs, we automatically set the GPE type 14408to 14409ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 14410This 14411must be done on a selective basis, usually requiring some kind of user 14412app 14413to allow the user to pick the wake devices. 14414 14415 14416Code and Data Size: Current and previous core subsystem library sizes are 14417shown below. These are the code and data sizes for the acpica.lib 14418produced 14419by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14420any ACPI driver or OSPM code. The debug version of the code includes the 14421debug output trace mechanism and has a much larger code and data size. 14422Note 14423that these values will vary depending on the efficiency of the compiler 14424and 14425the compiler options used during generation. 14426 14427 Previous Release: 14428 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14429 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14430 Current Release: 14431 14432 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14433 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14434 14435 14436 14437---------------------------------------- 1443802 April 2004. Summary of changes for version 20040402: 14439 144401) ACPI CA Core Subsystem: 14441 14442Fixed an interpreter problem where an indirect store through an ArgX 14443parameter was incorrectly applying the "implicit conversion rules" during 14444the store. From the ACPI specification: "If the target is a method local 14445or 14446argument (LocalX or ArgX), no conversion is performed and the result is 14447stored directly to the target". The new behavior is to disable implicit 14448conversion during ALL stores to an ArgX. 14449 14450Changed the behavior of the _PRW method scan to ignore any and all errors 14451returned by a given _PRW. This prevents the scan from aborting from the 14452failure of any single _PRW. 14453 14454Moved the runtime configuration parameters from the global init procedure 14455to 14456static variables in acglobal.h. This will allow the host to override the 14457default values easily. 14458 14459Code and Data Size: Current and previous core subsystem library sizes are 14460shown below. These are the code and data sizes for the acpica.lib 14461produced 14462by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14463any ACPI driver or OSPM code. The debug version of the code includes the 14464debug output trace mechanism and has a much larger code and data size. 14465Note 14466that these values will vary depending on the efficiency of the compiler 14467and 14468the compiler options used during generation. 14469 14470 Previous Release: 14471 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14472 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14473 Current Release: 14474 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14475 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14476 14477 144782) iASL Compiler/Disassembler: 14479 14480iASL now fully disassembles SSDTs. However, External() statements are 14481not 14482generated automatically for unresolved symbols at this time. This is a 14483planned feature for future implementation. 14484 14485Fixed a scoping problem in the disassembler that occurs when the type of 14486the 14487target of a Scope() operator is overridden. This problem caused an 14488incorrectly nested internal namespace to be constructed. 14489 14490Any warnings or errors that are emitted during disassembly are now 14491commented 14492out automatically so that the resulting file can be recompiled without 14493any 14494hand editing. 14495 14496---------------------------------------- 1449726 March 2004. Summary of changes for version 20040326: 14498 144991) ACPI CA Core Subsystem: 14500 14501Implemented support for "wake" GPEs via interaction between GPEs and the 14502_PRW methods. Every GPE that is pointed to by one or more _PRWs is 14503identified as a WAKE GPE and by default will no longer be enabled at 14504runtime. Previously, we were blindly enabling all GPEs with a 14505corresponding 14506_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 14507We 14508believe this has been the cause of thousands of "spurious" GPEs on some 14509systems. 14510 14511This new GPE behavior is can be reverted to the original behavior (enable 14512ALL GPEs at runtime) via a runtime flag. 14513 14514Fixed a problem where aliased control methods could not access objects 14515properly. The proper scope within the namespace was not initialized 14516(transferred to the target of the aliased method) before executing the 14517target method. 14518 14519Fixed a potential race condition on internal object deletion on the 14520return 14521object in AcpiEvaluateObject. 14522 14523Integrated a fix for resource descriptors where both _MEM and _MTP were 14524being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 14525wide, 0x0F instead of 0x03.) 14526 14527Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 14528preventing 14529a 14530fault in some cases. 14531 14532Updated Notify() values for debug statements in evmisc.c 14533 14534Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 14535 14536Code and Data Size: Current and previous core subsystem library sizes are 14537shown below. These are the code and data sizes for the acpica.lib 14538produced 14539by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14540any ACPI driver or OSPM code. The debug version of the code includes the 14541debug output trace mechanism and has a much larger code and data size. 14542Note 14543that these values will vary depending on the efficiency of the compiler 14544and 14545the compiler options used during generation. 14546 14547 Previous Release: 14548 14549 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14550 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14551 Current Release: 14552 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14553 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14554 14555---------------------------------------- 1455611 March 2004. Summary of changes for version 20040311: 14557 145581) ACPI CA Core Subsystem: 14559 14560Fixed a problem where errors occurring during the parse phase of control 14561method execution did not abort cleanly. For example, objects created and 14562installed in the namespace were not deleted. This caused all subsequent 14563invocations of the method to return the AE_ALREADY_EXISTS exception. 14564 14565Implemented a mechanism to force a control method to "Serialized" 14566execution 14567if the method attempts to create namespace objects. (The root of the 14568AE_ALREADY_EXISTS problem.) 14569 14570Implemented support for the predefined _OSI "internal" control method. 14571Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 14572and 14573"Windows 2001.1", and can be easily upgraded for new strings as 14574necessary. 14575This feature will allow "other" operating systems to execute the fully 14576tested, "Windows" code path through the ASL code 14577 14578Global Lock Support: Now allows multiple acquires and releases with any 14579internal thread. Removed concept of "owning thread" for this special 14580mutex. 14581 14582Fixed two functions that were inappropriately declaring large objects on 14583the 14584CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 14585during 14586method execution considerably. 14587 14588Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 14589S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 14590 14591Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 14592defined on the machine. 14593 14594Implemented two runtime options: One to force all control method 14595execution 14596to "Serialized" to mimic Windows behavior, another to disable _OSI 14597support 14598if it causes problems on a given machine. 14599 14600Code and Data Size: Current and previous core subsystem library sizes are 14601shown below. These are the code and data sizes for the acpica.lib 14602produced 14603by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14604any ACPI driver or OSPM code. The debug version of the code includes the 14605debug output trace mechanism and has a much larger code and data size. 14606Note 14607that these values will vary depending on the efficiency of the compiler 14608and 14609the compiler options used during generation. 14610 14611 Previous Release: 14612 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14613 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14614 Current Release: 14615 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14616 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14617 146182) iASL Compiler/Disassembler: 14619 14620Fixed an array size problem for FreeBSD that would cause the compiler to 14621fault. 14622 14623---------------------------------------- 1462420 February 2004. Summary of changes for version 20040220: 14625 14626 146271) ACPI CA Core Subsystem: 14628 14629Implemented execution of _SxD methods for Device objects in the 14630GetObjectInfo interface. 14631 14632Fixed calls to _SST method to pass the correct arguments. 14633 14634Added a call to _SST on wake to restore to "working" state. 14635 14636Check for End-Of-Buffer failure case in the WalkResources interface. 14637 14638Integrated fix for 64-bit alignment issue in acglobal.h by moving two 14639structures to the beginning of the file. 14640 14641After wake, clear GPE status register(s) before enabling GPEs. 14642 14643After wake, clear/enable power button. (Perhaps we should clear/enable 14644all 14645fixed events upon wake.) 14646 14647Fixed a couple of possible memory leaks in the Namespace manager. 14648 14649Integrated latest acnetbsd.h file. 14650 14651---------------------------------------- 1465211 February 2004. Summary of changes for version 20040211: 14653 14654 146551) ACPI CA Core Subsystem: 14656 14657Completed investigation and implementation of the call-by-reference 14658mechanism for control method arguments. 14659 14660Fixed a problem where a store of an object into an indexed package could 14661fail if the store occurs within a different method than the method that 14662created the package. 14663 14664Fixed a problem where the ToDecimal operator could return incorrect 14665results. 14666 14667Fixed a problem where the CopyObject operator could fail on some of the 14668more 14669obscure objects (e.g., Reference objects.) 14670 14671Improved the output of the Debug object to display buffer, package, and 14672index objects. 14673 14674Fixed a problem where constructs of the form "RefOf (ArgX)" did not 14675return 14676the expected result. 14677 14678Added permanent ACPI_REPORT_ERROR macros for all instances of the 14679ACPI_AML_INTERNAL exception. 14680 14681Integrated latest version of acfreebsd.h 14682 14683---------------------------------------- 1468416 January 2004. Summary of changes for version 20040116: 14685 14686The purpose of this release is primarily to update the copyright years in 14687each module, thus causing a huge number of diffs. There are a few small 14688functional changes, however. 14689 146901) ACPI CA Core Subsystem: 14691 14692Improved error messages when there is a problem finding one or more of 14693the 14694required base ACPI tables 14695 14696Reintroduced the definition of APIC_HEADER in actbl.h 14697 14698Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 14699 14700Removed extraneous reference to NewObj in dsmthdat.c 14701 147022) iASL compiler 14703 14704Fixed a problem introduced in December that disabled the correct 14705disassembly 14706of Resource Templates 14707 14708 14709---------------------------------------- 1471003 December 2003. Summary of changes for version 20031203: 14711 147121) ACPI CA Core Subsystem: 14713 14714Changed the initialization of Operation Regions during subsystem 14715init to perform two entire walks of the ACPI namespace; The first 14716to initialize the regions themselves, the second to execute the 14717_REG methods. This fixed some interdependencies across _REG 14718methods found on some machines. 14719 14720Fixed a problem where a Store(Local0, Local1) could simply update 14721the object reference count, and not create a new copy of the 14722object if the Local1 is uninitialized. 14723 14724Implemented support for the _SST reserved method during sleep 14725transitions. 14726 14727Implemented support to clear the SLP_TYP and SLP_EN bits when 14728waking up, this is apparently required by some machines. 14729 14730When sleeping, clear the wake status only if SleepState is not S5. 14731 14732Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 14733pointer arithmetic advanced a string pointer too far. 14734 14735Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 14736could be returned if the requested table has not been loaded. 14737 14738Within the support for IRQ resources, restructured the handling of 14739the active and edge/level bits. 14740 14741Fixed a few problems in AcpiPsxExecute() where memory could be 14742leaked under certain error conditions. 14743 14744Improved error messages for the cases where the ACPI mode could 14745not be entered. 14746 14747Code and Data Size: Current and previous core subsystem library 14748sizes are shown below. These are the code and data sizes for the 14749acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14750these values do not include any ACPI driver or OSPM code. The 14751debug version of the code includes the debug output trace 14752mechanism and has a much larger code and data size. Note that 14753these values will vary depending on the efficiency of the compiler 14754and the compiler options used during generation. 14755 14756 Previous Release (20031029): 14757 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14758 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14759 Current Release: 14760 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14761 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14762 147632) iASL Compiler/Disassembler: 14764 14765Implemented a fix for the iASL disassembler where a bad index was 14766generated. This was most noticeable on 64-bit platforms 14767 14768 14769---------------------------------------- 1477029 October 2003. Summary of changes for version 20031029: 14771 147721) ACPI CA Core Subsystem: 14773 14774 14775Fixed a problem where a level-triggered GPE with an associated 14776_Lxx control method was incorrectly cleared twice. 14777 14778Fixed a problem with the Field support code where an access can 14779occur beyond the end-of-region if the field is non-aligned but 14780extends to the very end of the parent region (resulted in an 14781AE_AML_REGION_LIMIT exception.) 14782 14783Fixed a problem with ACPI Fixed Events where an RT Clock handler 14784would not get invoked on an RTC event. The RTC event bitmasks for 14785the PM1 registers were not being initialized properly. 14786 14787Implemented support for executing _STA and _INI methods for 14788Processor objects. Although this is currently not part of the 14789ACPI specification, there is existing ASL code that depends on the 14790init-time execution of these methods. 14791 14792Implemented and deployed a GetDescriptorName function to decode 14793the various types of internal descriptors. Guards against null 14794descriptors during debug output also. 14795 14796Implemented and deployed a GetNodeName function to extract the 4- 14797character namespace node name. This function simplifies the debug 14798and error output, as well as guarding against null pointers during 14799output. 14800 14801Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 14802simplify the debug and error output of 64-bit integers. This 14803macro replaces the HIDWORD and LODWORD macros for dumping these 14804integers. 14805 14806Updated the implementation of the Stall() operator to only call 14807AcpiOsStall(), and also return an error if the operand is larger 14808than 255. This preserves the required behavior of not 14809relinquishing the processor, as would happen if AcpiOsSleep() was 14810called for "long stalls". 14811 14812Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 14813initialized are now treated as NOOPs. 14814 14815Cleaned up a handful of warnings during 64-bit generation. 14816 14817Fixed a reported error where and incorrect GPE number was passed 14818to the GPE dispatch handler. This value is only used for error 14819output, however. Used this opportunity to clean up and streamline 14820the GPE dispatch code. 14821 14822Code and Data Size: Current and previous core subsystem library 14823sizes are shown below. These are the code and data sizes for the 14824acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14825these values do not include any ACPI driver or OSPM code. The 14826 14827debug version of the code includes the debug output trace 14828mechanism and has a much larger code and data size. Note that 14829these values will vary depending on the efficiency of the compiler 14830and the compiler options used during generation. 14831 14832 Previous Release (20031002): 14833 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14834 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14835 Current Release: 14836 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14837 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14838 14839 148402) iASL Compiler/Disassembler: 14841 14842Updated the iASL compiler to return an error if the operand to the 14843Stall() operator is larger than 255. 14844 14845 14846---------------------------------------- 1484702 October 2003. Summary of changes for version 20031002: 14848 14849 148501) ACPI CA Core Subsystem: 14851 14852Fixed a problem with Index Fields where the index was not 14853incremented for fields that require multiple writes to the 14854index/data registers (Fields that are wider than the data 14855register.) 14856 14857Fixed a problem with all Field objects where a write could go 14858beyond the end-of-field if the field was larger than the access 14859granularity and therefore required multiple writes to complete the 14860request. An extra write beyond the end of the field could happen 14861inadvertently. 14862 14863Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 14864would incorrectly be returned if the width of the Data Register 14865was larger than the specified field access width. 14866 14867Completed fixes for LoadTable() and Unload() and verified their 14868operation. Implemented full support for the "DdbHandle" object 14869throughout the ACPI CA subsystem. 14870 14871Implemented full support for the MADT and ECDT tables in the ACPI 14872CA header files. Even though these tables are not directly 14873consumed by ACPI CA, the header definitions are useful for ACPI 14874device drivers. 14875 14876Integrated resource descriptor fixes posted to the Linux ACPI 14877list. This included checks for minimum descriptor length, and 14878support for trailing NULL strings within descriptors that have 14879optional string elements. 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 (20030918): 14891 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14892 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14893 Current Release: 14894 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14895 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14896 14897 148982) iASL Compiler: 14899 14900Implemented detection of non-ASCII characters within the input 14901source ASL file. This catches attempts to compile binary (AML) 14902files early in the compile, with an informative error message. 14903 14904Fixed a problem where the disassembler would fault if the output 14905filename could not be generated or if the output file could not be 14906opened. 14907 14908---------------------------------------- 1490918 September 2003. Summary of changes for version 20030918: 14910 14911 149121) ACPI CA Core Subsystem: 14913 14914Found and fixed a longstanding problem with the late execution of 14915the various deferred AML opcodes (such as Operation Regions, 14916Buffer Fields, Buffers, and Packages). If the name string 14917specified for the name of the new object placed the object in a 14918scope other than the current scope, the initialization/execution 14919of the opcode failed. The solution to this problem was to 14920implement a mechanism where the late execution of such opcodes 14921does not attempt to lookup/create the name a second time in an 14922incorrect scope. This fixes the "region size computed 14923incorrectly" problem. 14924 14925Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 14926Global Lock AE_BAD_PARAMETER error. 14927 14928Fixed several 64-bit issues with prototypes, casting and data 14929types. 14930 14931Removed duplicate prototype from acdisasm.h 14932 14933Fixed an issue involving EC Operation Region Detach (Shaohua Li) 14934 14935Code and Data Size: Current and previous core subsystem library 14936sizes are shown below. These are the code and data sizes for the 14937acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14938these values do not include any ACPI driver or OSPM code. The 14939debug version of the code includes the debug output trace 14940mechanism and has a much larger code and data size. Note that 14941these values will vary depending on the efficiency of the compiler 14942and the compiler options used during generation. 14943 14944 Previous Release: 14945 14946 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14947 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14948 Current Release: 14949 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14950 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14951 14952 149532) Linux: 14954 14955Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 14956correct sleep time in seconds. 14957 14958---------------------------------------- 1495914 July 2003. Summary of changes for version 20030619: 14960 149611) ACPI CA Core Subsystem: 14962 14963Parse SSDTs in order discovered, as opposed to reverse order 14964(Hrvoje Habjanic) 14965 14966Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 14967Klausner, 14968 Nate Lawson) 14969 14970 149712) Linux: 14972 14973Dynamically allocate SDT list (suggested by Andi Kleen) 14974 14975proc function return value cleanups (Andi Kleen) 14976 14977Correctly handle NMI watchdog during long stalls (Andrew Morton) 14978 14979Make it so acpismp=force works (reported by Andrew Morton) 14980 14981 14982---------------------------------------- 1498319 June 2003. Summary of changes for version 20030619: 14984 149851) ACPI CA Core Subsystem: 14986 14987Fix To/FromBCD, eliminating the need for an arch-specific #define. 14988 14989Do not acquire a semaphore in the S5 shutdown path. 14990 14991Fix ex_digits_needed for 0. (Takayoshi Kochi) 14992 14993Fix sleep/stall code reversal. (Andi Kleen) 14994 14995Revert a change having to do with control method calling 14996semantics. 14997 149982) Linux: 14999 15000acpiphp update (Takayoshi Kochi) 15001 15002Export acpi_disabled for sonypi (Stelian Pop) 15003 15004Mention acpismp=force in config help 15005 15006Re-add acpitable.c and acpismp=force. This improves backwards 15007 15008compatibility and also cleans up the code to a significant degree. 15009 15010Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 15011 15012---------------------------------------- 1501322 May 2003. Summary of changes for version 20030522: 15014 150151) ACPI CA Core Subsystem: 15016 15017Found and fixed a reported problem where an AE_NOT_FOUND error 15018occurred occasionally during _BST evaluation. This turned out to 15019be an Owner ID allocation issue where a called method did not get 15020a new ID assigned to it. Eventually, (after 64k calls), the Owner 15021ID UINT16 would wraparound so that the ID would be the same as the 15022caller's and the called method would delete the caller's 15023namespace. 15024 15025Implemented extended error reporting for control methods that are 15026aborted due to a run-time exception. Output includes the exact 15027AML instruction that caused the method abort, a dump of the method 15028locals and arguments at the time of the abort, and a trace of all 15029nested control method calls. 15030 15031Modified the interpreter to allow the creation of buffers of zero 15032length from the AML code. Implemented new code to ensure that no 15033attempt is made to actually allocate a memory buffer (of length 15034zero) - instead, a simple buffer object with a NULL buffer pointer 15035and length zero is created. A warning is no longer issued when 15036the AML attempts to create a zero-length buffer. 15037 15038Implemented a workaround for the "leading asterisk issue" in 15039_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 15040asterisk is automatically removed if present in any HID, UID, or 15041CID strings. The iASL compiler will still flag this asterisk as 15042an error, however. 15043 15044Implemented full support for _CID methods that return a package of 15045multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 15046now additionally returns a device _CID list if present. This 15047required a change to the external interface in order to pass an 15048ACPI_BUFFER object as a parameter since the _CID list is of 15049variable length. 15050 15051Fixed a problem with the new AE_SAME_HANDLER exception where 15052handler initialization code did not know about this exception. 15053 15054Code and Data Size: Current and previous core subsystem library 15055sizes are shown below. These are the code and data sizes for the 15056acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15057these values do not include any ACPI driver or OSPM code. The 15058debug version of the code includes the debug output trace 15059mechanism and has a much larger code and data size. Note that 15060these values will vary depending on the efficiency of the compiler 15061and the compiler options used during generation. 15062 15063 Previous Release (20030509): 15064 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15065 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15066 Current Release: 15067 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15068 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15069 15070 150712) Linux: 15072 15073Fixed a bug in which we would reinitialize the ACPI interrupt 15074after it was already working, thus disabling all ACPI and the IRQs 15075for any other device sharing the interrupt. (Thanks to Stian 15076Jordet) 15077 15078Toshiba driver update (John Belmonte) 15079 15080Return only 0 or 1 for our interrupt handler status (Andrew 15081Morton) 15082 15083 150843) iASL Compiler: 15085 15086Fixed a reported problem where multiple (nested) ElseIf() 15087statements were not handled correctly by the compiler, resulting 15088in incorrect warnings and incorrect AML code. This was a problem 15089in both the ASL parser and the code generator. 15090 15091 150924) Documentation: 15093 15094Added changes to existing interfaces, new exception codes, and new 15095text concerning reference count object management versus garbage 15096collection. 15097 15098---------------------------------------- 1509909 May 2003. Summary of changes for version 20030509. 15100 15101 151021) ACPI CA Core Subsystem: 15103 15104Changed the subsystem initialization sequence to hold off 15105installation of address space handlers until the hardware has been 15106initialized and the system has entered ACPI mode. This is because 15107the installation of space handlers can cause _REG methods to be 15108run. Previously, the _REG methods could potentially be run before 15109ACPI mode was enabled. 15110 15111Fixed some memory leak issues related to address space handler and 15112notify handler installation. There were some problems with the 15113reference count mechanism caused by the fact that the handler 15114objects are shared across several namespace objects. 15115 15116Fixed a reported problem where reference counts within the 15117namespace were not properly updated when named objects created by 15118method execution were deleted. 15119 15120Fixed a reported problem where multiple SSDTs caused a deletion 15121issue during subsystem termination. Restructured the table data 15122structures to simplify the linked lists and the related code. 15123 15124Fixed a problem where the table ID associated with secondary 15125tables (SSDTs) was not being propagated into the namespace objects 15126created by those tables. This would only present a problem for 15127tables that are unloaded at run-time, however. 15128 15129Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 15130type as the length parameter (instead of UINT32). 15131 15132Solved a long-standing problem where an ALREADY_EXISTS error 15133appears on various systems. This problem could happen when there 15134are multiple PCI_Config operation regions under a single PCI root 15135bus. This doesn't happen very frequently, but there are some 15136systems that do this in the ASL. 15137 15138Fixed a reported problem where the internal DeleteNode function 15139was incorrectly handling the case where a namespace node was the 15140first in the parent's child list, and had additional peers (not 15141the only child, but first in the list of children.) 15142 15143Code and Data Size: Current core subsystem library sizes are shown 15144below. These are the code and data sizes for the acpica.lib 15145produced by the Microsoft Visual C++ 6.0 compiler, and these 15146values do not include any ACPI driver or OSPM code. The debug 15147version of the code includes the debug output trace mechanism and 15148has a much larger code and data size. Note that these values will 15149vary depending on the efficiency of the compiler and the compiler 15150options used during generation. 15151 15152 Previous Release 15153 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15154 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15155 Current Release: 15156 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15157 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15158 15159 151602) Linux: 15161 15162Allow ":" in OS override string (Ducrot Bruno) 15163 15164Kobject fix (Greg KH) 15165 15166 151673 iASL Compiler/Disassembler: 15168 15169Fixed a problem in the generation of the C source code files (AML 15170is emitted in C source statements for BIOS inclusion) where the 15171Ascii dump that appears within a C comment at the end of each line 15172could cause a compile time error if the AML sequence happens to 15173have an open comment or close comment sequence embedded. 15174 15175 15176---------------------------------------- 1517724 April 2003. Summary of changes for version 20030424. 15178 15179 151801) ACPI CA Core Subsystem: 15181 15182Support for big-endian systems has been implemented. Most of the 15183support has been invisibly added behind big-endian versions of the 15184ACPI_MOVE_* macros. 15185 15186Fixed a problem in AcpiHwDisableGpeBlock() and 15187AcpiHwClearGpeBlock() where an incorrect offset was passed to the 15188low level hardware write routine. The offset parameter was 15189actually eliminated from the low level read/write routines because 15190they had become obsolete. 15191 15192Fixed a problem where a handler object was deleted twice during 15193the removal of a fixed event handler. 15194 15195 151962) Linux: 15197 15198A fix for SMP systems with link devices was contributed by 15199 15200Compaq's Dan Zink. 15201 15202(2.5) Return whether we handled the interrupt in our IRQ handler. 15203(Linux ISRs no longer return void, so we can propagate the handler 15204return value from the ACPI CA core back to the OS.) 15205 15206 15207 152083) Documentation: 15209 15210The ACPI CA Programmer Reference has been updated to reflect new 15211interfaces and changes to existing interfaces. 15212 15213---------------------------------------- 1521428 March 2003. Summary of changes for version 20030328. 15215 152161) ACPI CA Core Subsystem: 15217 15218The GPE Block Device support has been completed. New interfaces 15219are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 15220interfaces (enable, disable, clear, getstatus) have been split 15221into separate interfaces for Fixed Events and General Purpose 15222Events (GPEs) in order to support GPE Block Devices properly. 15223 15224Fixed a problem where the error message "Failed to acquire 15225semaphore" would appear during operations on the embedded 15226controller (EC). 15227 15228Code and Data Size: Current core subsystem library sizes are shown 15229below. These are the code and data sizes for the acpica.lib 15230produced by the Microsoft Visual C++ 6.0 compiler, and these 15231values do not include any ACPI driver or OSPM code. The debug 15232version of the code includes the debug output trace mechanism and 15233has a much larger code and data size. Note that these values will 15234vary depending on the efficiency of the compiler and the compiler 15235options used during generation. 15236 15237 Previous Release 15238 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15239 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15240 Current Release: 15241 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15242 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15243 15244 15245---------------------------------------- 1524628 February 2003. Summary of changes for version 20030228. 15247 15248 152491) ACPI CA Core Subsystem: 15250 15251The GPE handling and dispatch code has been completely overhauled 15252in preparation for support of GPE Block Devices (ID ACPI0006). 15253This affects internal data structures and code only; there should 15254be no differences visible externally. One new file has been 15255added, evgpeblk.c 15256 15257The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 15258fields that are used to determine the GPE block lengths. The 15259REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15260structures are ignored. This is per the ACPI specification but it 15261isn't very clear. The full 256 Block 0/1 GPEs are now supported 15262(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 15263 15264In the SCI interrupt handler, removed the read of the PM1_CONTROL 15265register to look at the SCI_EN bit. On some machines, this read 15266causes an SMI event and greatly slows down SCI events. (This may 15267in fact be the cause of slow battery status response on some 15268systems.) 15269 15270Fixed a problem where a store of a NULL string to a package object 15271could cause the premature deletion of the object. This was seen 15272during execution of the battery _BIF method on some systems, 15273resulting in no battery data being returned. 15274 15275Added AcpiWalkResources interface to simplify parsing of resource 15276lists. 15277 15278Code and Data Size: Current core subsystem library sizes are shown 15279below. These are the code and data sizes for the acpica.lib 15280produced by the Microsoft Visual C++ 6.0 compiler, and these 15281values do not include any ACPI driver or OSPM code. The debug 15282version of the code includes the debug output trace mechanism and 15283has a much larger code and data size. Note that these values will 15284vary depending on the efficiency of the compiler and the compiler 15285options used during generation. 15286 15287 Previous Release 15288 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15289 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15290 Current Release: 15291 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15292 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15293 15294 152952) Linux 15296 15297S3 fixes (Ole Rohne) 15298 15299Update ACPI PHP driver with to use new acpi_walk_resource API 15300(Bjorn Helgaas) 15301 15302Add S4BIOS support (Pavel Machek) 15303 15304Map in entire table before performing checksum (John Stultz) 15305 15306Expand the mem= cmdline to allow the specification of reserved and 15307ACPI DATA blocks (Pavel Machek) 15308 15309Never use ACPI on VISWS 15310 15311Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 15312 15313Revert a change that allowed P_BLK lengths to be 4 or 5. This is 15314causing us to think that some systems support C2 when they really 15315don't. 15316 15317Do not count processor objects for non-present CPUs (Thanks to 15318Dominik Brodowski) 15319 15320 153213) iASL Compiler: 15322 15323Fixed a problem where ASL include files could not be found and 15324opened. 15325 15326Added support for the _PDC reserved name. 15327 15328 15329---------------------------------------- 1533022 January 2003. Summary of changes for version 20030122. 15331 15332 153331) ACPI CA Core Subsystem: 15334 15335Added a check for constructs of the form: Store (Local0, Local0) 15336where Local0 is not initialized. Apparently, some BIOS 15337programmers believe that this is a NOOP. Since this store doesn't 15338do anything anyway, the new prototype behavior will ignore this 15339error. This is a case where we can relax the strict checking in 15340the interpreter in the name of compatibility. 15341 15342 153432) Linux 15344 15345The AcpiSrc Source Conversion Utility has been released with the 15346Linux package for the first time. This is the utility that is 15347used to convert the ACPI CA base source code to the Linux version. 15348 15349(Both) Handle P_BLK lengths shorter than 6 more gracefully 15350 15351(Both) Move more headers to include/acpi, and delete an unused 15352header. 15353 15354(Both) Move drivers/acpi/include directory to include/acpi 15355 15356(Both) Boot functions don't use cmdline, so don't pass it around 15357 15358(Both) Remove include of unused header (Adrian Bunk) 15359 15360(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 15361the 15362former now also includes the latter, acpiphp.h only needs the one, 15363now. 15364 15365(2.5) Make it possible to select method of bios restoring after S3 15366resume. [=> no more ugly ifdefs] (Pavel Machek) 15367 15368(2.5) Make proc write interfaces work (Pavel Machek) 15369 15370(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 15371 15372(2.5) Break out ACPI Perf code into its own module, under cpufreq 15373(Dominik Brodowski) 15374 15375(2.4) S4BIOS support (Ducrot Bruno) 15376 15377(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 15378Visinoni) 15379 15380 153813) iASL Compiler: 15382 15383Added support to disassemble SSDT and PSDTs. 15384 15385Implemented support to obtain SSDTs from the Windows registry if 15386available. 15387 15388 15389---------------------------------------- 1539009 January 2003. Summary of changes for version 20030109. 15391 153921) ACPI CA Core Subsystem: 15393 15394Changed the behavior of the internal Buffer-to-String conversion 15395function. The current ACPI specification states that the contents 15396of the buffer are "converted to a string of two-character 15397hexadecimal numbers, each separated by a space". Unfortunately, 15398this definition is not backwards compatible with existing ACPI 1.0 15399implementations (although the behavior was not defined in the ACPI 154001.0 specification). The new behavior simply copies data from the 15401buffer to the string until a null character is found or the end of 15402the buffer is reached. The new String object is always null 15403terminated. This problem was seen during the generation of _BIF 15404battery data where incorrect strings were returned for battery 15405type, etc. This will also require an errata to the ACPI 15406specification. 15407 15408Renamed all instances of NATIVE_UINT and NATIVE_INT to 15409ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 15410 15411Copyright in all module headers (both Linux and non-Linux) has be 15412updated to 2003. 15413 15414Code and Data Size: Current core subsystem library sizes are shown 15415below. These are the code and data sizes for the acpica.lib 15416produced by the Microsoft Visual C++ 6.0 compiler, and these 15417values do not include any ACPI driver or OSPM code. The debug 15418version of the code includes the debug output trace mechanism and 15419has a much larger code and data size. Note that these values will 15420vary depending on the efficiency of the compiler and the compiler 15421options used during generation. 15422 15423 Previous Release 15424 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15425 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15426 Current Release: 15427 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15428 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15429 15430 154312) Linux 15432 15433Fixed an oops on module insertion/removal (Matthew Tippett) 15434 15435(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 15436 15437(2.5) Replace pr_debug (Randy Dunlap) 15438 15439(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 15440 15441(Both) Eliminate spawning of thread from timer callback, in favor 15442of schedule_work() 15443 15444(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 15445 15446(Both) Added define for Fixed Function HW region (Matthew Wilcox) 15447 15448(Both) Add missing statics to button.c (Pavel Machek) 15449 15450Several changes have been made to the source code translation 15451utility that generates the Linux Code in order to make the code 15452more "Linux-like": 15453 15454All typedefs on structs and unions have been removed in keeping 15455with the Linux coding style. 15456 15457Removed the non-Linux SourceSafe module revision number from each 15458module header. 15459 15460Completed major overhaul of symbols to be lowercase for linux. 15461Doubled the number of symbols that are lowercase. 15462 15463Fixed a problem where identifiers within procedure headers and 15464within quotes were not fully lower cased (they were left with a 15465starting capital.) 15466 15467Some C macros whose only purpose is to allow the generation of 16- 15468bit code are now completely removed in the Linux code, increasing 15469readability and maintainability. 15470 15471---------------------------------------- 15472 1547312 December 2002. Summary of changes for version 20021212. 15474 15475 154761) ACPI CA Core Subsystem: 15477 15478Fixed a problem where the creation of a zero-length AML Buffer 15479would cause a fault. 15480 15481Fixed a problem where a Buffer object that pointed to a static AML 15482buffer (in an ACPI table) could inadvertently be deleted, causing 15483memory corruption. 15484 15485Fixed a problem where a user buffer (passed in to the external 15486ACPI CA interfaces) could be overwritten if the buffer was too 15487small to complete the operation, causing memory corruption. 15488 15489Fixed a problem in the Buffer-to-String conversion code where a 15490string of length one was always returned, regardless of the size 15491of the input Buffer object. 15492 15493Removed the NATIVE_CHAR data type across the entire source due to 15494lack of need and lack of consistent use. 15495 15496Code and Data Size: Current core subsystem library sizes are shown 15497below. These are the code and data sizes for the acpica.lib 15498produced by the Microsoft Visual C++ 6.0 compiler, and these 15499values do not include any ACPI driver or OSPM code. The debug 15500version of the code includes the debug output trace mechanism and 15501has a much larger code and data size. Note that these values will 15502vary depending on the efficiency of the compiler and the compiler 15503options used during generation. 15504 15505 Previous Release 15506 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15507 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15508 Current Release: 15509 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15510 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15511 15512 15513---------------------------------------- 1551405 December 2002. Summary of changes for version 20021205. 15515 155161) ACPI CA Core Subsystem: 15517 15518Fixed a problem where a store to a String or Buffer object could 15519cause corruption of the DSDT if the object type being stored was 15520the same as the target object type and the length of the object 15521being stored was equal to or smaller than the original (existing) 15522target object. This was seen to cause corruption of battery _BIF 15523buffers if the _BIF method modified the buffer on the fly. 15524 15525Fixed a problem where an internal error was generated if a control 15526method invocation was used in an OperationRegion, Buffer, or 15527Package declaration. This was caused by the deferred parsing of 15528the control method and thus the deferred creation of the internal 15529method object. The solution to this problem was to create the 15530internal method object at the moment the method is encountered in 15531the first pass - so that subsequent references to the method will 15532able to obtain the required parameter count and thus properly 15533parse the method invocation. This problem presented itself as an 15534AE_AML_INTERNAL during the pass 1 parse phase during table load. 15535 15536Fixed a problem where the internal String object copy routine did 15537not always allocate sufficient memory for the target String object 15538and caused memory corruption. This problem was seen to cause 15539"Allocation already present in list!" errors as memory allocation 15540became corrupted. 15541 15542Implemented a new function for the evaluation of namespace objects 15543that allows the specification of the allowable return object 15544types. This simplifies a lot of code that checks for a return 15545object of one or more specific objects returned from the 15546evaluation (such as _STA, etc.) This may become and external 15547function if it would be useful to ACPI-related drivers. 15548 15549Completed another round of prefixing #defines with "ACPI_" for 15550clarity. 15551 15552Completed additional code restructuring to allow more modular 15553linking for iASL compiler and AcpiExec. Several files were split 15554creating new files. New files: nsparse.c dsinit.c evgpe.c 15555 15556Implemented an abort mechanism to terminate an executing control 15557method via the AML debugger. This feature is useful for debugging 15558control methods that depend (wait) for specific hardware 15559responses. 15560 15561Code and Data Size: Current core subsystem library sizes are shown 15562below. These are the code and data sizes for the acpica.lib 15563produced by the Microsoft Visual C++ 6.0 compiler, and these 15564values do not include any ACPI driver or OSPM code. The debug 15565version of the code includes the debug output trace mechanism and 15566has a much larger code and data size. Note that these values will 15567vary depending on the efficiency of the compiler and the compiler 15568options used during generation. 15569 15570 Previous Release 15571 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15572 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15573 Current Release: 15574 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15575 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15576 15577 155782) iASL Compiler/Disassembler 15579 15580Fixed a compiler code generation problem for "Interrupt" Resource 15581Descriptors. If specified in the ASL, the optional "Resource 15582Source Index" and "Resource Source" fields were not inserted into 15583the correct location within the AML resource descriptor, creating 15584an invalid descriptor. 15585 15586Fixed a disassembler problem for "Interrupt" resource descriptors. 15587The optional "Resource Source Index" and "Resource Source" fields 15588were ignored. 15589 15590 15591---------------------------------------- 1559222 November 2002. Summary of changes for version 20021122. 15593 15594 155951) ACPI CA Core Subsystem: 15596 15597Fixed a reported problem where an object stored to a Method Local 15598or Arg was not copied to a new object during the store - the 15599object pointer was simply copied to the Local/Arg. This caused 15600all subsequent operations on the Local/Arg to also affect the 15601original source of the store operation. 15602 15603Fixed a problem where a store operation to a Method Local or Arg 15604was not completed properly if the Local/Arg contained a reference 15605(from RefOf) to a named field. The general-purpose store-to- 15606namespace-node code is now used so that this case is handled 15607automatically. 15608 15609Fixed a problem where the internal object copy routine would cause 15610a protection fault if the object being copied was a Package and 15611contained either 1) a NULL package element or 2) a nested sub- 15612package. 15613 15614Fixed a problem with the GPE initialization that resulted from an 15615ambiguity in the ACPI specification. One section of the 15616specification states that both the address and length of the GPE 15617block must be zero if the block is not supported. Another section 15618implies that only the address need be zero if the block is not 15619supported. The code has been changed so that both the address and 15620the length must be non-zero to indicate a valid GPE block (i.e., 15621if either the address or the length is zero, the GPE block is 15622invalid.) 15623 15624Code and Data Size: Current core subsystem library sizes are shown 15625below. These are the code and data sizes for the acpica.lib 15626produced by the Microsoft Visual C++ 6.0 compiler, and these 15627values do not include any ACPI driver or OSPM code. The debug 15628version of the code includes the debug output trace mechanism and 15629has a much larger code and data size. Note that these values will 15630vary depending on the efficiency of the compiler and the compiler 15631options used during generation. 15632 15633 Previous Release 15634 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15635 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15636 Current Release: 15637 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15638 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15639 15640 156412) Linux 15642 15643Cleaned up EC driver. Exported an external EC read/write 15644interface. By going through this, other drivers (most notably 15645sonypi) will be able to serialize access to the EC. 15646 15647 156483) iASL Compiler/Disassembler 15649 15650Implemented support to optionally generate include files for both 15651ASM and C (the -i switch). This simplifies BIOS development by 15652automatically creating include files that contain external 15653declarations for the symbols that are created within the 15654 15655(optionally generated) ASM and C AML source files. 15656 15657 15658---------------------------------------- 1565915 November 2002. Summary of changes for version 20021115. 15660 156611) ACPI CA Core Subsystem: 15662 15663Fixed a memory leak problem where an error during resolution of 15664 15665method arguments during a method invocation from another method 15666failed to cleanup properly by deleting all successfully resolved 15667argument objects. 15668 15669Fixed a problem where the target of the Index() operator was not 15670correctly constructed if the source object was a package. This 15671problem has not been detected because the use of a target operand 15672with Index() is very rare. 15673 15674Fixed a problem with the Index() operator where an attempt was 15675made to delete the operand objects twice. 15676 15677Fixed a problem where an attempt was made to delete an operand 15678twice during execution of the CondRefOf() operator if the target 15679did not exist. 15680 15681Implemented the first of perhaps several internal create object 15682functions that create and initialize a specific object type. This 15683consolidates duplicated code wherever the object is created, thus 15684shrinking the size of the subsystem. 15685 15686Implemented improved debug/error messages for errors that occur 15687during nested method invocations. All executing method pathnames 15688are displayed (with the error) as the call stack is unwound - thus 15689simplifying debug. 15690 15691Fixed a problem introduced in the 10/02 release that caused 15692premature deletion of a buffer object if a buffer was used as an 15693ASL operand where an integer operand is required (Thus causing an 15694implicit object conversion from Buffer to Integer.) The change in 15695the 10/02 release was attempting to fix a memory leak (albeit 15696incorrectly.) 15697 15698Code and Data Size: Current core subsystem library sizes are shown 15699below. These are the code and data sizes for the acpica.lib 15700produced by the Microsoft Visual C++ 6.0 compiler, and these 15701values do not include any ACPI driver or OSPM code. The debug 15702version of the code includes the debug output trace mechanism and 15703has a much larger code and data size. Note that these values will 15704vary depending on the efficiency of the compiler and the compiler 15705options used during generation. 15706 15707 Previous Release 15708 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15709 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15710 Current Release: 15711 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15712 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15713 15714 157152) Linux 15716 15717Changed the implementation of the ACPI semaphores to use down() 15718instead of down_interruptable(). It is important that the 15719execution of ACPI control methods not be interrupted by signals. 15720Methods must run to completion, or the system may be left in an 15721unknown/unstable state. 15722 15723Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 15724(Shawn Starr) 15725 15726 157273) iASL Compiler/Disassembler 15728 15729 15730Changed the default location of output files. All output files 15731are now placed in the current directory by default instead of in 15732the directory of the source file. This change may affect some 15733existing makefiles, but it brings the behavior of the compiler in 15734line with other similar tools. The location of the output files 15735can be overridden with the -p command line switch. 15736 15737 15738---------------------------------------- 1573911 November 2002. Summary of changes for version 20021111. 15740 15741 157420) ACPI Specification 2.0B is released and is now available at: 15743http://www.acpi.info/index.html 15744 15745 157461) ACPI CA Core Subsystem: 15747 15748Implemented support for the ACPI 2.0 SMBus Operation Regions. 15749This includes the early detection and handoff of the request to 15750the SMBus region handler (avoiding all of the complex field 15751support code), and support for the bidirectional return packet 15752from an SMBus write operation. This paves the way for the 15753development of SMBus drivers in each host operating system. 15754 15755Fixed a problem where the semaphore WAIT_FOREVER constant was 15756defined as 32 bits, but must be 16 bits according to the ACPI 15757specification. This had the side effect of causing ASL 15758Mutex/Event timeouts even though the ASL code requested a wait 15759forever. Changed all internal references to the ACPI timeout 15760parameter to 16 bits to prevent future problems. Changed the name 15761of WAIT_FOREVER to ACPI_WAIT_FOREVER. 15762 15763Code and Data Size: Current core subsystem library sizes are shown 15764below. These are the code and data sizes for the acpica.lib 15765produced by the Microsoft Visual C++ 6.0 compiler, and these 15766values do not include any ACPI driver or OSPM code. The debug 15767version of the code includes the debug output trace mechanism and 15768has a much larger code and data size. Note that these values will 15769vary depending on the efficiency of the compiler and the compiler 15770options used during generation. 15771 15772 Previous Release 15773 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15774 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15775 Current Release: 15776 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15777 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15778 15779 157802) Linux 15781 15782Module loading/unloading fixes (John Cagle) 15783 15784 157853) iASL Compiler/Disassembler 15786 15787Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 15788 15789Implemented support for the disassembly of all SMBus protocol 15790keywords (SMBQuick, SMBWord, etc.) 15791 15792---------------------------------------- 1579301 November 2002. Summary of changes for version 20021101. 15794 15795 157961) ACPI CA Core Subsystem: 15797 15798Fixed a problem where platforms that have a GPE1 block but no GPE0 15799block were not handled correctly. This resulted in a "GPE 15800overlap" error message. GPE0 is no longer required. 15801 15802Removed code added in the previous release that inserted nodes 15803into the namespace in alphabetical order. This caused some side- 15804effects on various machines. The root cause of the problem is 15805still under investigation since in theory, the internal ordering 15806of the namespace nodes should not matter. 15807 15808 15809Enhanced error reporting for the case where a named object is not 15810found during control method execution. The full ACPI namepath 15811(name reference) of the object that was not found is displayed in 15812this case. 15813 15814Note: as a result of the overhaul of the namespace object types in 15815the previous release, the namespace nodes for the predefined 15816scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 15817instead of ACPI_TYPE_ANY. This simplifies the namespace 15818management code but may affect code that walks the namespace tree 15819looking for specific object types. 15820 15821Code and Data Size: Current core subsystem library sizes are shown 15822below. These are the code and data sizes for the acpica.lib 15823produced by the Microsoft Visual C++ 6.0 compiler, and these 15824values do not include any ACPI driver or OSPM code. The debug 15825version of the code includes the debug output trace mechanism and 15826has a much larger code and data size. Note that these values will 15827vary depending on the efficiency of the compiler and the compiler 15828options used during generation. 15829 15830 Previous Release 15831 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15832 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15833 Current Release: 15834 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15835 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15836 15837 158382) Linux 15839 15840Fixed a problem introduced in the previous release where the 15841Processor and Thermal objects were not recognized and installed in 15842/proc. This was related to the scope type change described above. 15843 15844 158453) iASL Compiler/Disassembler 15846 15847Implemented the -g option to get all of the required ACPI tables 15848from the registry and save them to files (Windows version of the 15849compiler only.) The required tables are the FADT, FACS, and DSDT. 15850 15851Added ACPI table checksum validation during table disassembly in 15852order to catch corrupted tables. 15853 15854 15855---------------------------------------- 1585622 October 2002. Summary of changes for version 20021022. 15857 158581) ACPI CA Core Subsystem: 15859 15860Implemented a restriction on the Scope operator that the target 15861must already exist in the namespace at the time the operator is 15862encountered (during table load or method execution). In other 15863words, forward references are not allowed and Scope() cannot 15864create a new object. This changes the previous behavior where the 15865interpreter would create the name if not found. This new behavior 15866correctly enables the search-to-root algorithm during namespace 15867lookup of the target name. Because of this upsearch, this fixes 15868the known Compaq _SB_.OKEC problem and makes both the AML 15869interpreter and iASL compiler compatible with other ACPI 15870implementations. 15871 15872Completed a major overhaul of the internal ACPI object types for 15873the ACPI Namespace and the associated operand objects. Many of 15874these types had become obsolete with the introduction of the two- 15875pass namespace load. This cleanup simplifies the code and makes 15876the entire namespace load mechanism much clearer and easier to 15877understand. 15878 15879Improved debug output for tracking scope opening/closing to help 15880diagnose scoping issues. The old scope name as well as the new 15881scope name are displayed. Also improved error messages for 15882problems with ASL Mutex objects and error messages for GPE 15883problems. 15884 15885Cleaned up the namespace dump code, removed obsolete code. 15886 15887All string output (for all namespace/object dumps) now uses the 15888common ACPI string output procedure which handles escapes properly 15889and does not emit non-printable characters. 15890 15891Fixed some issues with constants in the 64-bit version of the 15892local C library (utclib.c) 15893 15894 158952) Linux 15896 15897EC Driver: No longer attempts to acquire the Global Lock at 15898interrupt level. 15899 15900 159013) iASL Compiler/Disassembler 15902 15903Implemented ACPI 2.0B grammar change that disallows all Type 1 and 159042 opcodes outside of a control method. This means that the 15905"executable" operators (versus the "namespace" operators) cannot 15906be used at the table level; they can only be used within a control 15907method. 15908 15909Implemented the restriction on the Scope() operator where the 15910target must already exist in the namespace at the time the 15911operator is encountered (during ASL compilation). In other words, 15912forward references are not allowed and Scope() cannot create a new 15913object. This makes the iASL compiler compatible with other ACPI 15914implementations and makes the Scope() implementation adhere to the 15915ACPI specification. 15916 15917Fixed a problem where namepath optimization for the Alias operator 15918was optimizing the wrong path (of the two namepaths.) This caused 15919a "Missing alias link" error message. 15920 15921Fixed a problem where an "unknown reserved name" warning could be 15922incorrectly generated for names like "_SB" when the trailing 15923underscore is not used in the original ASL. 15924 15925Fixed a problem where the reserved name check did not handle 15926NamePaths with multiple NameSegs correctly. The first nameseg of 15927the NamePath was examined instead of the last NameSeg. 15928 15929 15930---------------------------------------- 15931 1593202 October 2002. Summary of changes for this release. 15933 15934 159351) ACPI CA Core Subsystem version 20021002: 15936 15937Fixed a problem where a store/copy of a string to an existing 15938string did not always set the string length properly in the String 15939object. 15940 15941Fixed a reported problem with the ToString operator where the 15942behavior was identical to the ToHexString operator instead of just 15943simply converting a raw buffer to a string data type. 15944 15945Fixed a problem where CopyObject and the other "explicit" 15946conversion operators were not updating the internal namespace node 15947type as part of the store operation. 15948 15949Fixed a memory leak during implicit source operand conversion 15950where the original object was not deleted if it was converted to a 15951new object of a different type. 15952 15953Enhanced error messages for all problems associated with namespace 15954lookups. Common procedure generates and prints the lookup name as 15955well as the formatted status. 15956 15957Completed implementation of a new design for the Alias support 15958within the namespace. The existing design did not handle the case 15959where a new object was assigned to one of the two names due to the 15960use of an explicit conversion operator, resulting in the two names 15961pointing to two different objects. The new design simply points 15962the Alias name to the original name node - not to the object. 15963This results in a level of indirection that must be handled in the 15964name resolution mechanism. 15965 15966Code and Data Size: Current core subsystem library sizes are shown 15967below. These are the code and data sizes for the acpica.lib 15968produced by the Microsoft Visual C++ 6.0 compiler, and these 15969values do not include any ACPI driver or OSPM code. The debug 15970version of the code includes the debug output trace mechanism and 15971has a larger code and data size. Note that these values will vary 15972depending on the efficiency of the compiler and the compiler 15973options used during generation. 15974 15975 Previous Release 15976 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15977 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15978 Current Release: 15979 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15980 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15981 15982 159832) Linux 15984 15985Initialize thermal driver's timer before it is used. (Knut 15986Neumann) 15987 15988Allow handling negative celsius values. (Kochi Takayoshi) 15989 15990Fix thermal management and make trip points. R/W (Pavel Machek) 15991 15992Fix /proc/acpi/sleep. (P. Christeas) 15993 15994IA64 fixes. (David Mosberger) 15995 15996Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 15997 15998Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 15999Brodowski) 16000 16001 160023) iASL Compiler/Disassembler 16003 16004Clarified some warning/error messages. 16005 16006 16007---------------------------------------- 1600818 September 2002. Summary of changes for this release. 16009 16010 160111) ACPI CA Core Subsystem version 20020918: 16012 16013Fixed a reported problem with reference chaining (via the Index() 16014and RefOf() operators) in the ObjectType() and SizeOf() operators. 16015The definition of these operators includes the dereferencing of 16016all chained references to return information on the base object. 16017 16018Fixed a problem with stores to indexed package elements - the 16019existing code would not complete the store if an "implicit 16020conversion" was not performed. In other words, if the existing 16021object (package element) was to be replaced completely, the code 16022didn't handle this case. 16023 16024Relaxed typechecking on the ASL "Scope" operator to allow the 16025target name to refer to an object of type Integer, String, or 16026Buffer, in addition to the scoping object types (Device, 16027predefined Scopes, Processor, PowerResource, and ThermalZone.) 16028This allows existing AML code that has workarounds for a bug in 16029Windows to function properly. A warning is issued, however. This 16030affects both the AML interpreter and the iASL compiler. Below is 16031an example of this type of ASL code: 16032 16033 Name(DEB,0x00) 16034 Scope(DEB) 16035 { 16036 16037Fixed some reported problems with 64-bit integer support in the 16038local implementation of C library functions (clib.c) 16039 16040 160412) Linux 16042 16043Use ACPI fix map region instead of IOAPIC region, since it is 16044undefined in non-SMP. 16045 16046Ensure that the SCI has the proper polarity and trigger, even on 16047systems that do not have an interrupt override entry in the MADT. 16048 160492.5 big driver reorganization (Pat Mochel) 16050 16051Use early table mapping code from acpitable.c (Andi Kleen) 16052 16053New blacklist entries (Andi Kleen) 16054 16055Blacklist improvements. Split blacklist code out into a separate 16056file. Move checking the blacklist to very early. Previously, we 16057would use ACPI tables, and then halfway through init, check the 16058blacklist -- too late. Now, it's early enough to completely fall- 16059back to non-ACPI. 16060 16061 160623) iASL Compiler/Disassembler version 20020918: 16063 16064Fixed a problem where the typechecking code didn't know that an 16065alias could point to a method. In other words, aliases were not 16066being dereferenced during typechecking. 16067 16068 16069---------------------------------------- 1607029 August 2002. Summary of changes for this release. 16071 160721) ACPI CA Core Subsystem Version 20020829: 16073 16074If the target of a Scope() operator already exists, it must be an 16075object type that actually opens a scope -- such as a Device, 16076Method, Scope, etc. This is a fatal runtime error. Similar error 16077check has been added to the iASL compiler also. 16078 16079Tightened up the namespace load to disallow multiple names in the 16080same scope. This previously was allowed if both objects were of 16081the same type. (i.e., a lookup was the same as entering a new 16082name). 16083 16084 160852) Linux 16086 16087Ensure that the ACPI interrupt has the proper trigger and 16088polarity. 16089 16090local_irq_disable is extraneous. (Matthew Wilcox) 16091 16092Make "acpi=off" actually do what it says, and not use the ACPI 16093interpreter *or* the tables. 16094 16095Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 16096Takayoshi) 16097 16098 160993) iASL Compiler/Disassembler Version 20020829: 16100 16101Implemented namepath optimization for name declarations. For 16102example, a declaration like "Method (\_SB_.ABCD)" would get 16103optimized to "Method (ABCD)" if the declaration is within the 16104\_SB_ scope. This optimization is in addition to the named 16105reference path optimization first released in the previous 16106version. This would seem to complete all possible optimizations 16107for namepaths within the ASL/AML. 16108 16109If the target of a Scope() operator already exists, it must be an 16110object type that actually opens a scope -- such as a Device, 16111Method, Scope, etc. 16112 16113Implemented a check and warning for unreachable code in the same 16114block below a Return() statement. 16115 16116Fixed a problem where the listing file was not generated if the 16117compiler aborted if the maximum error count was exceeded (200). 16118 16119Fixed a problem where the typechecking of method return values was 16120broken. This includes the check for a return value when the 16121method is invoked as a TermArg (a return value is expected.) 16122 16123Fixed a reported problem where EOF conditions during a quoted 16124string or comment caused a fault. 16125 16126 16127---------------------------------------- 1612815 August 2002. Summary of changes for this release. 16129 161301) ACPI CA Core Subsystem Version 20020815: 16131 16132Fixed a reported problem where a Store to a method argument that 16133contains a reference did not perform the indirect store correctly. 16134This problem was created during the conversion to the new 16135reference object model - the indirect store to a method argument 16136code was not updated to reflect the new model. 16137 16138Reworked the ACPI mode change code to better conform to ACPI 2.0, 16139handle corner cases, and improve code legibility (Kochi Takayoshi) 16140 16141Fixed a problem with the pathname parsing for the carat (^) 16142prefix. The heavy use of the carat operator by the new namepath 16143optimization in the iASL compiler uncovered a problem with the AML 16144interpreter handling of this prefix. In the case where one or 16145more carats precede a single nameseg, the nameseg was treated as 16146standalone and the search rule (to root) was inadvertently 16147applied. This could cause both the iASL compiler and the 16148interpreter to find the wrong object or to miss the error that 16149should occur if the object does not exist at that exact pathname. 16150 16151Found and fixed the problem where the HP Pavilion DSDT would not 16152load. This was a relatively minor tweak to the table loading code 16153(a problem caused by the unexpected encounter with a method 16154invocation not within a control method), but it does not solve the 16155overall issue of the execution of AML code at the table level. 16156This investigation is still ongoing. 16157 16158Code and Data Size: Current core subsystem library sizes are shown 16159below. These are the code and data sizes for the acpica.lib 16160produced by the Microsoft Visual C++ 6.0 compiler, and these 16161values do not include any ACPI driver or OSPM code. The debug 16162version of the code includes the debug output trace mechanism and 16163has a larger code and data size. Note that these values will vary 16164depending on the efficiency of the compiler and the compiler 16165options used during generation. 16166 16167 Previous Release 16168 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16169 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16170 Current Release: 16171 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16172 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16173 16174 161752) Linux 16176 16177Remove redundant slab.h include (Brad Hards) 16178 16179Fix several bugs in thermal.c (Herbert Nachtnebel) 16180 16181Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 16182 16183Change acpi_system_suspend to use updated irq functions (Pavel 16184Machek) 16185 16186Export acpi_get_firmware_table (Matthew Wilcox) 16187 16188Use proper root proc entry for ACPI (Kochi Takayoshi) 16189 16190Fix early-boot table parsing (Bjorn Helgaas) 16191 16192 161933) iASL Compiler/Disassembler 16194 16195Reworked the compiler options to make them more consistent and to 16196use two-letter options where appropriate. We were running out of 16197sensible letters. This may break some makefiles, so check the 16198current options list by invoking the compiler with no parameters. 16199 16200Completed the design and implementation of the ASL namepath 16201optimization option for the compiler. This option optimizes all 16202references to named objects to the shortest possible path. The 16203first attempt tries to utilize a single nameseg (4 characters) and 16204the "search-to-root" algorithm used by the interpreter. If that 16205cannot be used (because either the name is not in the search path 16206or there is a conflict with another object with the same name), 16207the pathname is optimized using the carat prefix (usually a 16208shorter string than specifying the entire path from the root.) 16209 16210Implemented support to obtain the DSDT from the Windows registry 16211(when the disassembly option is specified with no input file). 16212Added this code as the implementation for AcpiOsTableOverride in 16213the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 16214utility) to scan memory for the DSDT to the AcpiOsTableOverride 16215function in the DOS OSL to make the disassembler truly OS 16216independent. 16217 16218Implemented a new option to disassemble and compile in one step. 16219When used without an input filename, this option will grab the 16220DSDT from the local machine, disassemble it, and compile it in one 16221step. 16222 16223Added a warning message for invalid escapes (a backslash followed 16224by any character other than the allowable escapes). This catches 16225the quoted string error "\_SB_" (which should be "\\_SB_" ). 16226 16227Also, there are numerous instances in the ACPI specification where 16228this error occurs. 16229 16230Added a compiler option to disable all optimizations. This is 16231basically the "compatibility mode" because by using this option, 16232the AML code will come out exactly the same as other ASL 16233compilers. 16234 16235Added error messages for incorrectly ordered dependent resource 16236functions. This includes: missing EndDependentFn macro at end of 16237dependent resource list, nested dependent function macros (both 16238start and end), and missing StartDependentFn macro. These are 16239common errors that should be caught at compile time. 16240 16241Implemented _OSI support for the disassembler and compiler. _OSI 16242must be included in the namespace for proper disassembly (because 16243the disassembler must know the number of arguments.) 16244 16245Added an "optimization" message type that is optional (off by 16246default). This message is used for all optimizations - including 16247constant folding, integer optimization, and namepath optimization. 16248 16249---------------------------------------- 1625025 July 2002. Summary of changes for this release. 16251 16252 162531) ACPI CA Core Subsystem Version 20020725: 16254 16255The AML Disassembler has been enhanced to produce compilable ASL 16256code and has been integrated into the iASL compiler (see below) as 16257well as the single-step disassembly for the AML debugger and the 16258disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 16259resource templates and macros are fully supported. The 16260disassembler has been tested on over 30 different AML files, 16261producing identical AML when the resulting disassembled ASL file 16262is recompiled with the same ASL compiler. 16263 16264Modified the Resource Manager to allow zero interrupts and zero 16265dma channels during the GetCurrentResources call. This was 16266causing problems on some platforms. 16267 16268Added the AcpiOsRedirectOutput interface to the OSL to simplify 16269output redirection for the AcpiOsPrintf and AcpiOsVprintf 16270interfaces. 16271 16272Code and Data Size: Current core subsystem library sizes are shown 16273below. These are the code and data sizes for the acpica.lib 16274produced by the Microsoft Visual C++ 6.0 compiler, and these 16275values do not include any ACPI driver or OSPM code. The debug 16276version of the code includes the debug output trace mechanism and 16277has a larger code and data size. Note that these values will vary 16278depending on the efficiency of the compiler and the compiler 16279options used during generation. 16280 16281 Previous Release 16282 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16283 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16284 Current Release: 16285 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16286 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16287 16288 162892) Linux 16290 16291Fixed a panic in the EC driver (Dominik Brodowski) 16292 16293Implemented checksum of the R/XSDT itself during Linux table scan 16294(Richard Schaal) 16295 16296 162973) iASL compiler 16298 16299The AML disassembler is integrated into the compiler. The "-d" 16300option invokes the disassembler to completely disassemble an 16301input AML file, producing as output a text ASL file with the 16302extension ".dsl" (to avoid name collisions with existing .asl 16303source files.) A future enhancement will allow the disassembler 16304to obtain the BIOS DSDT from the registry under Windows. 16305 16306Fixed a problem with the VendorShort and VendorLong resource 16307descriptors where an invalid AML sequence was created. 16308 16309Implemented a fix for BufferData term in the ASL parser. It was 16310inadvertently defined twice, allowing invalid syntax to pass and 16311causing reduction conflicts. 16312 16313Fixed a problem where the Ones opcode could get converted to a 16314value of zero if "Ones" was used where a byte, word or dword value 16315was expected. The 64-bit value is now truncated to the correct 16316size with the correct value. 16317 16318 16319 16320---------------------------------------- 1632102 July 2002. Summary of changes for this release. 16322 16323 163241) ACPI CA Core Subsystem Version 20020702: 16325 16326The Table Manager code has been restructured to add several new 16327features. Tables that are not required by the core subsystem 16328(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 16329validated in any way and are returned from AcpiGetFirmwareTable if 16330requested. The AcpiOsTableOverride interface is now called for 16331each table that is loaded by the subsystem in order to allow the 16332host to override any table it chooses. Previously, only the DSDT 16333could be overridden. Added one new files, tbrsdt.c and 16334tbgetall.c. 16335 16336Fixed a problem with the conversion of internal package objects to 16337external objects (when a package is returned from a control 16338method.) The return buffer length was set to zero instead of the 16339proper length of the package object. 16340 16341Fixed a reported problem with the use of the RefOf and DeRefOf 16342operators when passing reference arguments to control methods. A 16343new type of Reference object is used internally for references 16344produced by the RefOf operator. 16345 16346Added additional error messages in the Resource Manager to explain 16347AE_BAD_DATA errors when they occur during resource parsing. 16348 16349Split the AcpiEnableSubsystem into two primitives to enable a 16350finer granularity initialization sequence. These two calls should 16351be called in this order: AcpiEnableSubsystem (flags), 16352AcpiInitializeObjects (flags). The flags parameter remains the 16353same. 16354 16355 163562) Linux 16357 16358Updated the ACPI utilities module to understand the new style of 16359fully resolved package objects that are now returned from the core 16360subsystem. This eliminates errors of the form: 16361 16362 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 16363 acpi_utils-0430 [145] acpi_evaluate_reference: 16364 Invalid element in package (not a device reference) 16365 16366The method evaluation utility uses the new buffer allocation 16367scheme instead of calling AcpiEvaluate Object twice. 16368 16369Added support for ECDT. This allows the use of the Embedded 16370 16371Controller before the namespace has been fully initialized, which 16372is necessary for ACPI 2.0 support, and for some laptops to 16373initialize properly. (Laptops using ECDT are still rare, so only 16374limited testing was performed of the added functionality.) 16375 16376Fixed memory leaks in the EC driver. 16377 16378Eliminated a brittle code structure in acpi_bus_init(). 16379 16380Eliminated the acpi_evaluate() helper function in utils.c. It is 16381no longer needed since acpi_evaluate_object can optionally 16382allocate memory for the return object. 16383 16384Implemented fix for keyboard hang when getting battery readings on 16385some systems (Stephen White) 16386 16387PCI IRQ routing update (Dominik Brodowski) 16388 16389Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 16390support 16391 16392---------------------------------------- 1639311 June 2002. Summary of changes for this release. 16394 16395 163961) ACPI CA Core Subsystem Version 20020611: 16397 16398Fixed a reported problem where constants such as Zero and One 16399appearing within _PRT packages were not handled correctly within 16400the resource manager code. Originally reported against the ASL 16401compiler because the code generator now optimizes integers to 16402their minimal AML representation (i.e. AML constants if possible.) 16403The _PRT code now handles all AML constant opcodes correctly 16404(Zero, One, Ones, Revision). 16405 16406Fixed a problem with the Concatenate operator in the AML 16407interpreter where a buffer result object was incorrectly marked as 16408not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 16409 16410All package sub-objects are now fully resolved before they are 16411returned from the external ACPI interfaces. This means that name 16412strings are resolved to object handles, and constant operators 16413(Zero, One, Ones, Revision) are resolved to Integers. 16414 16415Implemented immediate resolution of the AML Constant opcodes 16416(Zero, One, Ones, Revision) to Integer objects upon detection 16417within the AML stream. This has simplified and reduced the 16418generated code size of the subsystem by eliminating about 10 16419switch statements for these constants (which previously were 16420contained in Reference objects.) The complicating issues are that 16421the Zero opcode is used as a "placeholder" for unspecified 16422optional target operands and stores to constants are defined to be 16423no-ops. 16424 16425Code and Data Size: Current core subsystem library sizes are shown 16426below. These are the code and data sizes for the acpica.lib 16427produced by the Microsoft Visual C++ 6.0 compiler, and these 16428values do not include any ACPI driver or OSPM code. The debug 16429version of the code includes the debug output trace mechanism and 16430has a larger code and data size. Note that these values will vary 16431depending on the efficiency of the compiler and the compiler 16432options used during generation. 16433 16434 Previous Release 16435 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16436 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16437 Current Release: 16438 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16439 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16440 16441 164422) Linux 16443 16444 16445Added preliminary support for obtaining _TRA data for PCI root 16446bridges (Bjorn Helgaas). 16447 16448 164493) iASL Compiler Version X2046: 16450 16451Fixed a problem where the "_DDN" reserved name was defined to be a 16452control method with one argument. There are no arguments, and 16453_DDN does not have to be a control method. 16454 16455Fixed a problem with the Linux version of the compiler where the 16456source lines printed with error messages were the wrong lines. 16457This turned out to be the "LF versus CR/LF" difference between 16458Windows and Unix. This appears to be the longstanding issue 16459concerning listing output and error messages. 16460 16461Fixed a problem with the Linux version of compiler where opcode 16462names within error messages were wrong. This was caused by a 16463slight difference in the output of the Flex tool on Linux versus 16464Windows. 16465 16466Fixed a problem with the Linux compiler where the hex output files 16467contained some garbage data caused by an internal buffer overrun. 16468 16469 16470---------------------------------------- 1647117 May 2002. Summary of changes for this release. 16472 16473 164741) ACPI CA Core Subsystem Version 20020517: 16475 16476Implemented a workaround to an BIOS bug discovered on the HP 16477OmniBook where the FADT revision number and the table size are 16478inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 16479behavior is to fallback to using only the ACPI 1.0 fields of the 16480FADT if the table is too small to be a ACPI 2.0 table as claimed 16481by the revision number. Although this is a BIOS bug, this is a 16482case where the workaround is simple enough and with no side 16483effects, so it seemed prudent to add it. A warning message is 16484issued, however. 16485 16486Implemented minimum size checks for the fixed-length ACPI tables - 16487- the FADT and FACS, as well as consistency checks between the 16488revision number and the table size. 16489 16490Fixed a reported problem in the table override support where the 16491new table pointer was incorrectly treated as a physical address 16492instead of a logical address. 16493 16494Eliminated the use of the AE_AML_ERROR exception and replaced it 16495with more descriptive codes. 16496 16497Fixed a problem where an exception would occur if an ASL Field was 16498defined with no named Field Units underneath it (used by some 16499index fields). 16500 16501Code and Data Size: Current core subsystem library sizes are shown 16502below. These are the code and data sizes for the acpica.lib 16503produced by the Microsoft Visual C++ 6.0 compiler, and these 16504values do not include any ACPI driver or OSPM code. The debug 16505version of the code includes the debug output trace mechanism and 16506has a larger code and data size. Note that these values will vary 16507depending on the efficiency of the compiler and the compiler 16508options used during generation. 16509 16510 Previous Release 16511 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16512 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16513 Current Release: 16514 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16515 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16516 16517 16518 165192) Linux 16520 16521Much work done on ACPI init (MADT and PCI IRQ routing support). 16522(Paul D. and Dominik Brodowski) 16523 16524Fix PCI IRQ-related panic on boot (Sam Revitch) 16525 16526Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 16527 16528Fix "MHz" typo (Dominik Brodowski) 16529 16530Fix RTC year 2000 issue (Dominik Brodowski) 16531 16532Preclude multiple button proc entries (Eric Brunet) 16533 16534Moved arch-specific code out of include/platform/aclinux.h 16535 165363) iASL Compiler Version X2044: 16537 16538Implemented error checking for the string used in the EISAID macro 16539(Usually used in the definition of the _HID object.) The code now 16540strictly enforces the PnP format - exactly 7 characters, 3 16541uppercase letters and 4 hex digits. 16542 16543If a raw string is used in the definition of the _HID object 16544(instead of the EISAID macro), the string must contain all 16545alphanumeric characters (e.g., "*PNP0011" is not allowed because 16546of the asterisk.) 16547 16548Implemented checking for invalid use of ACPI reserved names for 16549most of the name creation operators (Name, Device, Event, Mutex, 16550OperationRegion, PowerResource, Processor, and ThermalZone.) 16551Previously, this check was only performed for control methods. 16552 16553Implemented an additional check on the Name operator to emit an 16554error if a reserved name that must be implemented in ASL as a 16555control method is used. We know that a reserved name must be a 16556method if it is defined with input arguments. 16557 16558The warning emitted when a namespace object reference is not found 16559during the cross reference phase has been changed into an error. 16560The "External" directive should be used for names defined in other 16561modules. 16562 16563 165644) Tools and Utilities 16565 16566The 16-bit tools (adump16 and aexec16) have been regenerated and 16567tested. 16568 16569Fixed a problem with the output of both acpidump and adump16 where 16570the indentation of closing parentheses and brackets was not 16571 16572aligned properly with the parent block. 16573 16574 16575---------------------------------------- 1657603 May 2002. Summary of changes for this release. 16577 16578 165791) ACPI CA Core Subsystem Version 20020503: 16580 16581Added support a new OSL interface that allows the host operating 16582 16583system software to override the DSDT found in the firmware - 16584AcpiOsTableOverride. With this interface, the OSL can examine the 16585version of the firmware DSDT and replace it with a different one 16586if desired. 16587 16588Added new external interfaces for accessing ACPI registers from 16589device drivers and other system software - AcpiGetRegister and 16590AcpiSetRegister. This was simply an externalization of the 16591existing AcpiHwBitRegister interfaces. 16592 16593Fixed a regression introduced in the previous build where the 16594ASL/AML CreateField operator always returned an error, 16595"destination must be a NS Node". 16596 16597Extended the maximum time (before failure) to successfully enable 16598ACPI mode to 3 seconds. 16599 16600Code and Data Size: Current core subsystem library sizes are shown 16601below. These are the code and data sizes for the acpica.lib 16602produced by the Microsoft Visual C++ 6.0 compiler, and these 16603values do not include any ACPI driver or OSPM code. The debug 16604version of the code includes the debug output trace mechanism and 16605has a larger code and data size. Note that these values will vary 16606depending on the efficiency of the compiler and the compiler 16607options used during generation. 16608 16609 Previous Release 16610 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16611 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16612 Current Release: 16613 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16614 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16615 16616 166172) Linux 16618 16619Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 16620free. While 3 out of 4 of our in-house systems work fine, the last 16621one still hangs when testing the LAPIC timer. 16622 16623Renamed many files in 2.5 kernel release to omit "acpi_" from the 16624name. 16625 16626Added warning on boot for Presario 711FR. 16627 16628Sleep improvements (Pavel Machek) 16629 16630ACPI can now be built without CONFIG_PCI enabled. 16631 16632IA64: Fixed memory map functions (JI Lee) 16633 16634 166353) iASL Compiler Version X2043: 16636 16637Added support to allow the compiler to be integrated into the MS 16638VC++ development environment for one-button compilation of single 16639files or entire projects -- with error-to-source-line mapping. 16640 16641Implemented support for compile-time constant folding for the 16642Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 16643specification. This allows the ASL writer to use expressions 16644instead of Integer/Buffer/String constants in terms that must 16645evaluate to constants at compile time and will also simplify the 16646emitted AML in any such sub-expressions that can be folded 16647(evaluated at compile-time.) This increases the size of the 16648compiler significantly because a portion of the ACPI CA AML 16649interpreter is included within the compiler in order to pre- 16650evaluate constant expressions. 16651 16652 16653Fixed a problem with the "Unicode" ASL macro that caused the 16654compiler to fault. (This macro is used in conjunction with the 16655_STR reserved name.) 16656 16657Implemented an AML opcode optimization to use the Zero, One, and 16658Ones opcodes where possible to further reduce the size of integer 16659constants and thus reduce the overall size of the generated AML 16660code. 16661 16662Implemented error checking for new reserved terms for ACPI version 166632.0A. 16664 16665Implemented the -qr option to display the current list of ACPI 16666reserved names known to the compiler. 16667 16668Implemented the -qc option to display the current list of ASL 16669operators that are allowed within constant expressions and can 16670therefore be folded at compile time if the operands are constants. 16671 16672 166734) Documentation 16674 16675Updated the Programmer's Reference for new interfaces, data types, 16676and memory allocation model options. 16677 16678Updated the iASL Compiler User Reference to apply new format and 16679add information about new features and options. 16680 16681---------------------------------------- 1668219 April 2002. Summary of changes for this release. 16683 166841) ACPI CA Core Subsystem Version 20020419: 16685 16686The source code base for the Core Subsystem has been completely 16687cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 16688versions. The Lint option files used are included in the 16689/acpi/generate/lint directory. 16690 16691Implemented enhanced status/error checking across the entire 16692Hardware manager subsystem. Any hardware errors (reported from 16693the OSL) are now bubbled up and will abort a running control 16694method. 16695 16696 16697Fixed a problem where the per-ACPI-table integer width (32 or 64) 16698was stored only with control method nodes, causing a fault when 16699non-control method code was executed during table loading. The 16700solution implemented uses a global variable to indicate table 16701width across the entire ACPI subsystem. Therefore, ACPI CA does 16702not support mixed integer widths across different ACPI tables 16703(DSDT, SSDT). 16704 16705Fixed a problem where NULL extended fields (X fields) in an ACPI 167062.0 ACPI FADT caused the table load to fail. Although the 16707existing ACPI specification is a bit fuzzy on this topic, the new 16708behavior is to fall back on a ACPI 1.0 field if the corresponding 16709ACPI 2.0 X field is zero (even though the table revision indicates 16710a full ACPI 2.0 table.) The ACPI specification will be updated to 16711clarify this issue. 16712 16713Fixed a problem with the SystemMemory operation region handler 16714where memory was always accessed byte-wise even if the AML- 16715specified access width was larger than a byte. This caused 16716problems on systems with memory-mapped I/O. Memory is now 16717accessed with the width specified. On systems that do not support 16718non-aligned transfers, a check is made to guarantee proper address 16719alignment before proceeding in order to avoid an AML-caused 16720alignment fault within the kernel. 16721 16722 16723Fixed a problem with the ExtendedIrq resource where only one byte 16724of the 4-byte Irq field was extracted. 16725 16726Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 16727function was out of date and required a rewrite. 16728 16729Code and Data Size: Current core subsystem library sizes are shown 16730below. These are the code and data sizes for the acpica.lib 16731produced by the Microsoft Visual C++ 6.0 compiler, and these 16732values do not include any ACPI driver or OSPM code. The debug 16733version of the code includes the debug output trace mechanism and 16734has a larger code and data size. Note that these values will vary 16735depending on the efficiency of the compiler and the compiler 16736options used during generation. 16737 16738 Previous Release 16739 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16740 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16741 Current Release: 16742 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16743 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16744 16745 167462) Linux 16747 16748PCI IRQ routing fixes (Dominik Brodowski) 16749 16750 167513) iASL Compiler Version X2042: 16752 16753Implemented an additional compile-time error check for a field 16754unit whose size + minimum access width would cause a run-time 16755access beyond the end-of-region. Previously, only the field size 16756itself was checked. 16757 16758The Core subsystem and iASL compiler now share a common parse 16759object in preparation for compile-time evaluation of the type 167603/4/5 ASL operators. 16761 16762 16763---------------------------------------- 16764Summary of changes for this release: 03_29_02 16765 167661) ACPI CA Core Subsystem Version 20020329: 16767 16768Implemented support for late evaluation of TermArg operands to 16769Buffer and Package objects. This allows complex expressions to be 16770used in the declarations of these object types. 16771 16772Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 167731.0, if the field was larger than 32 bits, it was returned as a 16774buffer - otherwise it was returned as an integer. In ACPI 2.0, 16775the field is returned as a buffer only if the field is larger than 1677664 bits. The TableRevision is now considered when making this 16777conversion to avoid incompatibility with existing ASL code. 16778 16779Implemented logical addressing for AcpiOsGetRootPointer. This 16780allows an RSDP with either a logical or physical address. With 16781this support, the host OS can now override all ACPI tables with 16782one logical RSDP. Includes implementation of "typed" pointer 16783support to allow a common data type for both physical and logical 16784pointers internally. This required a change to the 16785AcpiOsGetRootPointer interface. 16786 16787Implemented the use of ACPI 2.0 Generic Address Structures for all 16788GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 16789mapped I/O for these ACPI features. 16790 16791Initialization now ignores not only non-required tables (All 16792tables other than the FADT, FACS, DSDT, and SSDTs), but also does 16793not validate the table headers of unrecognized tables. 16794 16795Fixed a problem where a notify handler could only be 16796installed/removed on an object of type Device. All "notify" 16797 16798objects are now supported -- Devices, Processor, Power, and 16799Thermal. 16800 16801Removed most verbosity from the ACPI_DB_INFO debug level. Only 16802critical information is returned when this debug level is enabled. 16803 16804Code and Data Size: Current core subsystem library sizes are shown 16805below. These are the code and data sizes for the acpica.lib 16806produced by the Microsoft Visual C++ 6.0 compiler, and these 16807values do not include any ACPI driver or OSPM code. The debug 16808version of the code includes the debug output trace mechanism and 16809has a larger code and data size. Note that these values will vary 16810depending on the efficiency of the compiler and the compiler 16811options used during generation. 16812 16813 Previous Release 16814 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16815 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16816 Current Release: 16817 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16818 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16819 16820 168212) Linux: 16822 16823The processor driver (acpi_processor.c) now fully supports ACPI 168242.0-based processor performance control (e.g. Intel(R) 16825SpeedStep(TM) technology) Note that older laptops that only have 16826the Intel "applet" interface are not supported through this. The 16827'limit' and 'performance' interface (/proc) are fully functional. 16828[Note that basic policy for controlling performance state 16829transitions will be included in the next version of ospmd.] The 16830idle handler was modified to more aggressively use C2, and PIIX4 16831errata handling underwent a complete overhaul (big thanks to 16832Dominik Brodowski). 16833 16834Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 16835based devices in the ACPI namespace are now dynamically bound 16836(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 16837This allows, among other things, ACPI to resolve bus numbers for 16838subordinate PCI bridges. 16839 16840Enhanced PCI IRQ routing to get the proper bus number for _PRT 16841entries defined underneath PCI bridges. 16842 16843Added IBM 600E to bad bios list due to invalid _ADR value for 16844PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 16845 16846In the process of adding full MADT support (e.g. IOAPIC) for IA32 16847(acpi.c, mpparse.c) -- stay tuned. 16848 16849Added back visual differentiation between fixed-feature and 16850control-method buttons in dmesg. Buttons are also subtyped (e.g. 16851button/power/PWRF) to simplify button identification. 16852 16853We no longer use -Wno-unused when compiling debug. Please ignore 16854any "_THIS_MODULE defined but not used" messages. 16855 16856Can now shut down the system using "magic sysrq" key. 16857 16858 168593) iASL Compiler version 2041: 16860 16861Fixed a problem where conversion errors for hex/octal/decimal 16862constants were not reported. 16863 16864Implemented a fix for the General Register template Address field. 16865This field was 8 bits when it should be 64. 16866 16867Fixed a problem where errors/warnings were no longer being emitted 16868within the listing output file. 16869 16870Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 16871exactly 4 characters, alphanumeric only. 16872 16873 16874 16875 16876---------------------------------------- 16877Summary of changes for this release: 03_08_02 16878 16879 168801) ACPI CA Core Subsystem Version 20020308: 16881 16882Fixed a problem with AML Fields where the use of the "AccessAny" 16883keyword could cause an interpreter error due to attempting to read 16884or write beyond the end of the parent Operation Region. 16885 16886Fixed a problem in the SystemMemory Operation Region handler where 16887an attempt was made to map memory beyond the end of the region. 16888This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 16889errors on some Linux systems. 16890 16891Fixed a problem where the interpreter/namespace "search to root" 16892algorithm was not functioning for some object types. Relaxed the 16893internal restriction on the search to allow upsearches for all 16894external object types as well as most internal types. 16895 16896 168972) Linux: 16898 16899We now use safe_halt() macro versus individual calls to sti | hlt. 16900 16901Writing to the processor limit interface should now work. "echo 1" 16902will increase the limit, 2 will decrease, and 0 will reset to the 16903 16904default. 16905 16906 169073) ASL compiler: 16908 16909Fixed segfault on Linux version. 16910 16911 16912---------------------------------------- 16913Summary of changes for this release: 02_25_02 16914 169151) ACPI CA Core Subsystem: 16916 16917 16918Fixed a problem where the GPE bit masks were not initialized 16919properly, causing erratic GPE behavior. 16920 16921Implemented limited support for multiple calling conventions. The 16922code can be generated with either the VPL (variable parameter 16923list, or "C") convention, or the FPL (fixed parameter list, or 16924"Pascal") convention. The core subsystem is about 3.4% smaller 16925when generated with FPL. 16926 16927 169282) Linux 16929 16930Re-add some /proc/acpi/event functionality that was lost during 16931the rewrite 16932 16933Resolved issue with /proc events for fixed-feature buttons showing 16934up as the system device. 16935 16936Fixed checks on C2/C3 latencies to be inclusive of maximum values. 16937 16938Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 16939 16940Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 16941 16942Fixed limit interface & usage to fix bugs with passive cooling 16943hysterisis. 16944 16945Restructured PRT support. 16946 16947 16948---------------------------------------- 16949Summary of changes for this label: 02_14_02 16950 16951 169521) ACPI CA Core Subsystem: 16953 16954Implemented support in AcpiLoadTable to allow loading of FACS and 16955FADT tables. 16956 16957Support for the now-obsolete interim 0.71 64-bit ACPI tables has 16958been removed. All 64-bit platforms should be migrated to the ACPI 169592.0 tables. The actbl71.h header has been removed from the source 16960tree. 16961 16962All C macros defined within the subsystem have been prefixed with 16963"ACPI_" to avoid collision with other system include files. 16964 16965Removed the return value for the two AcpiOsPrint interfaces, since 16966it is never used and causes lint warnings for ignoring the return 16967value. 16968 16969Added error checking to all internal mutex acquire and release 16970calls. Although a failure from one of these interfaces is 16971probably a fatal system error, these checks will cause the 16972immediate abort of the currently executing method or interface. 16973 16974Fixed a problem where the AcpiSetCurrentResources interface could 16975fault. This was a side effect of the deployment of the new memory 16976allocation model. 16977 16978Fixed a couple of problems with the Global Lock support introduced 16979in the last major build. The "common" (1.0/2.0) internal FACS was 16980being overwritten with the FACS signature and clobbering the 16981Global Lock pointer. Also, the actual firmware FACS was being 16982unmapped after construction of the "common" FACS, preventing 16983access to the actual Global Lock field within it. The "common" 16984internal FACS is no longer installed as an actual ACPI table; it 16985is used simply as a global. 16986 16987Code and Data Size: Current core subsystem library sizes are shown 16988below. These are the code and data sizes for the acpica.lib 16989produced by the Microsoft Visual C++ 6.0 compiler, and these 16990values do not include any ACPI driver or OSPM code. The debug 16991version of the code includes the debug output trace mechanism and 16992has a larger code and data size. Note that these values will vary 16993depending on the efficiency of the compiler and the compiler 16994options used during generation. 16995 16996 Previous Release (02_07_01) 16997 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16998 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16999 Current Release: 17000 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17001 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17002 17003 170042) Linux 17005 17006Updated Linux-specific code for core macro and OSL interface 17007changes described above. 17008 17009Improved /proc/acpi/event. It now can be opened only once and has 17010proper poll functionality. 17011 17012Fixed and restructured power management (acpi_bus). 17013 17014Only create /proc "view by type" when devices of that class exist. 17015 17016Fixed "charging/discharging" bug (and others) in acpi_battery. 17017 17018Improved thermal zone code. 17019 17020 170213) ASL Compiler, version X2039: 17022 17023 17024Implemented the new compiler restriction on ASL String hex/octal 17025escapes to non-null, ASCII values. An error results if an invalid 17026value is used. (This will require an ACPI 2.0 specification 17027change.) 17028 17029AML object labels that are output to the optional C and ASM source 17030are now prefixed with both the ACPI table signature and table ID 17031to help guarantee uniqueness within a large BIOS project. 17032 17033 17034---------------------------------------- 17035Summary of changes for this label: 02_01_02 17036 170371) ACPI CA Core Subsystem: 17038 17039ACPI 2.0 support is complete in the entire Core Subsystem and the 17040ASL compiler. All new ACPI 2.0 operators are implemented and all 17041other changes for ACPI 2.0 support are complete. With 17042simultaneous code and data optimizations throughout the subsystem, 17043ACPI 2.0 support has been implemented with almost no additional 17044cost in terms of code and data size. 17045 17046Implemented a new mechanism for allocation of return buffers. If 17047the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 17048be allocated on behalf of the caller. Consolidated all return 17049buffer validation and allocation to a common procedure. Return 17050buffers will be allocated via the primary OSL allocation interface 17051since it appears that a separate pool is not needed by most users. 17052If a separate pool is required for these buffers, the caller can 17053still use the original mechanism and pre-allocate the buffer(s). 17054 17055Implemented support for string operands within the DerefOf 17056operator. 17057 17058Restructured the Hardware and Event managers to be table driven, 17059simplifying the source code and reducing the amount of generated 17060code. 17061 17062Split the common read/write low-level ACPI register bitfield 17063procedure into a separate read and write, simplifying the code 17064considerably. 17065 17066Obsoleted the AcpiOsCallocate OSL interface. This interface was 17067used only a handful of times and didn't have enough critical mass 17068for a separate interface. Replaced with a common calloc procedure 17069in the core. 17070 17071Fixed a reported problem with the GPE number mapping mechanism 17072that allows GPE1 numbers to be non-contiguous with GPE0. 17073Reorganized the GPE information and shrunk a large array that was 17074originally large enough to hold info for all possible GPEs (256) 17075to simply large enough to hold all GPEs up to the largest GPE 17076number on the machine. 17077 17078Fixed a reported problem with resource structure alignment on 64- 17079bit platforms. 17080 17081Changed the AcpiEnableEvent and AcpiDisableEvent external 17082interfaces to not require any flags for the common case of 17083enabling/disabling a GPE. 17084 17085Implemented support to allow a "Notify" on a Processor object. 17086 17087Most TBDs in comments within the source code have been resolved 17088and eliminated. 17089 17090 17091Fixed a problem in the interpreter where a standalone parent 17092prefix (^) was not handled correctly in the interpreter and 17093debugger. 17094 17095Removed obsolete and unnecessary GPE save/restore code. 17096 17097Implemented Field support in the ASL Load operator. This allows a 17098table to be loaded from a named field, in addition to loading a 17099table directly from an Operation Region. 17100 17101Implemented timeout and handle support in the external Global Lock 17102interfaces. 17103 17104Fixed a problem in the AcpiDump utility where pathnames were no 17105longer being generated correctly during the dump of named objects. 17106 17107Modified the AML debugger to give a full display of if/while 17108predicates instead of just one AML opcode at a time. (The 17109predicate can have several nested ASL statements.) The old method 17110was confusing during single stepping. 17111 17112Code and Data Size: Current core subsystem library sizes are shown 17113below. These are the code and data sizes for the acpica.lib 17114produced by the Microsoft Visual C++ 6.0 compiler, and these 17115values do not include any ACPI driver or OSPM code. The debug 17116version of the code includes the debug output trace mechanism and 17117has a larger code and data size. Note that these values will vary 17118depending on the efficiency of the compiler and the compiler 17119options used during generation. 17120 17121 Previous Release (12_18_01) 17122 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17123 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17124 Current Release: 17125 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17126 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17127 171282) Linux 17129 17130 Implemented fix for PIIX reverse throttling errata (Processor 17131driver) 17132 17133Added new Limit interface (Processor and Thermal drivers) 17134 17135New thermal policy (Thermal driver) 17136 17137Many updates to /proc 17138 17139Battery "low" event support (Battery driver) 17140 17141Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 17142 17143IA32 - IA64 initialization unification, no longer experimental 17144 17145Menuconfig options redesigned 17146 171473) ASL Compiler, version X2037: 17148 17149Implemented several new output features to simplify integration of 17150AML code into firmware: 1) Output the AML in C source code with 17151labels for each named ASL object. The original ASL source code 17152is interleaved as C comments. 2) Output the AML in ASM source code 17153with labels and interleaved ASL source. 3) Output the AML in 17154raw hex table form, in either C or ASM. 17155 17156Implemented support for optional string parameters to the 17157LoadTable operator. 17158 17159Completed support for embedded escape sequences within string 17160literals. The compiler now supports all single character escapes 17161as well as the Octal and Hex escapes. Note: the insertion of a 17162null byte into a string literal (via the hex/octal escape) causes 17163the string to be immediately terminated. A warning is issued. 17164 17165Fixed a problem where incorrect AML was generated for the case 17166where an ASL namepath consists of a single parent prefix ( 17167 17168) with no trailing name segments. 17169 17170The compiler has been successfully generated with a 64-bit C 17171compiler. 17172 17173 17174 17175 17176---------------------------------------- 17177Summary of changes for this label: 12_18_01 17178 171791) Linux 17180 17181Enhanced blacklist with reason and severity fields. Any table's 17182signature may now be used to identify a blacklisted system. 17183 17184Call _PIC control method to inform the firmware which interrupt 17185model the OS is using. Turn on any disabled link devices. 17186 17187Cleaned up busmgr /proc error handling (Andreas Dilger) 17188 17189 2) ACPI CA Core Subsystem: 17190 17191Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 17192while loop) 17193 17194Completed implementation of the ACPI 2.0 "Continue", 17195"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 17196operators. All new ACPI 2.0 operators are now implemented in both 17197the ASL compiler and the AML interpreter. The only remaining ACPI 171982.0 task is support for the String data type in the DerefOf 17199operator. Fixed a problem with AcquireMutex where the status code 17200was lost if the caller had to actually wait for the mutex. 17201 17202Increased the maximum ASL Field size from 64K bits to 4G bits. 17203 17204Completed implementation of the external Global Lock interfaces -- 17205AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 17206Handler parameters were added. 17207 17208Completed another pass at removing warnings and issues when 17209compiling with 64-bit compilers. The code now compiles cleanly 17210with the Intel 64-bit C/C++ compiler. Most notably, the pointer 17211add and subtract (diff) macros have changed considerably. 17212 17213 17214Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1721564-bit platforms, 32-bits on all others. This type is used 17216wherever memory allocation and/or the C sizeof() operator is used, 17217and affects the OSL memory allocation interfaces AcpiOsAllocate 17218and AcpiOsCallocate. 17219 17220Implemented sticky user breakpoints in the AML debugger. 17221 17222Code and Data Size: Current core subsystem library sizes are shown 17223below. These are the code and data sizes for the acpica.lib 17224produced by the Microsoft Visual C++ 6.0 compiler, and these 17225values do not include any ACPI driver or OSPM code. The debug 17226version of the code includes the debug output trace mechanism and 17227has a larger code and data size. Note that these values will vary 17228depending on the efficiency of the compiler and the compiler 17229options used during generation. 17230 17231 Previous Release (12_05_01) 17232 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17233 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17234 Current Release: 17235 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17236 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17237 17238 3) ASL Compiler, version X2034: 17239 17240Now checks for (and generates an error if detected) the use of a 17241Break or Continue statement without an enclosing While statement. 17242 17243 17244Successfully generated the compiler with the Intel 64-bit C 17245compiler. 17246 17247 ---------------------------------------- 17248Summary of changes for this label: 12_05_01 17249 17250 1) ACPI CA Core Subsystem: 17251 17252The ACPI 2.0 CopyObject operator is fully implemented. This 17253operator creates a new copy of an object (and is also used to 17254bypass the "implicit conversion" mechanism of the Store operator.) 17255 17256The ACPI 2.0 semantics for the SizeOf operator are fully 17257implemented. The change is that performing a SizeOf on a 17258reference object causes an automatic dereference of the object to 17259tha actual value before the size is evaluated. This behavior was 17260undefined in ACPI 1.0. 17261 17262The ACPI 2.0 semantics for the Extended IRQ resource descriptor 17263have been implemented. The interrupt polarity and mode are now 17264independently set. 17265 17266Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 17267appearing in Package objects were not properly converted to 17268integers when the internal Package was converted to an external 17269object (via the AcpiEvaluateObject interface.) 17270 17271Fixed a problem with the namespace object deletion mechanism for 17272objects created by control methods. There were two parts to this 17273problem: 1) Objects created during the initialization phase method 17274parse were not being deleted, and 2) The object owner ID mechanism 17275to track objects was broken. 17276 17277Fixed a problem where the use of the ASL Scope operator within a 17278control method would result in an invalid opcode exception. 17279 17280Fixed a problem introduced in the previous label where the buffer 17281length required for the _PRT structure was not being returned 17282correctly. 17283 17284Code and Data Size: Current core subsystem library sizes are shown 17285below. These are the code and data sizes for the acpica.lib 17286produced by the Microsoft Visual C++ 6.0 compiler, and these 17287values do not include any ACPI driver or OSPM code. The debug 17288version of the code includes the debug output trace mechanism and 17289has a larger code and data size. Note that these values will vary 17290depending on the efficiency of the compiler and the compiler 17291options used during generation. 17292 17293 Previous Release (11_20_01) 17294 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17295 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17296 17297 Current Release: 17298 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17299 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17300 17301 2) Linux: 17302 17303Updated all files to apply cleanly against 2.4.16. 17304 17305Added basic PCI Interrupt Routing Table (PRT) support for IA32 17306(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 17307version supports both static and dynamic PRT entries, but dynamic 17308entries are treated as if they were static (not yet 17309reconfigurable). Architecture- specific code to use this data is 17310absent on IA32 but should be available shortly. 17311 17312Changed the initialization sequence to start the ACPI interpreter 17313(acpi_init) prior to initialization of the PCI driver (pci_init) 17314in init/main.c. This ordering is required to support PRT and 17315facilitate other (future) enhancement. A side effect is that the 17316ACPI bus driver and certain device drivers can no longer be loaded 17317as modules. 17318 17319Modified the 'make menuconfig' options to allow PCI Interrupt 17320Routing support to be included without the ACPI Bus and other 17321device drivers. 17322 17323 3) ASL Compiler, version X2033: 17324 17325Fixed some issues with the use of the new CopyObject and 17326DataTableRegion operators. Both are fully functional. 17327 17328 ---------------------------------------- 17329Summary of changes for this label: 11_20_01 17330 17331 20 November 2001. Summary of changes for this release. 17332 17333 1) ACPI CA Core Subsystem: 17334 17335Updated Index support to match ACPI 2.0 semantics. Storing a 17336Integer, String, or Buffer to an Index of a Buffer will store only 17337the least-significant byte of the source to the Indexed buffer 17338byte. Multiple writes are not performed. 17339 17340Fixed a problem where the access type used in an AccessAs ASL 17341operator was not recorded correctly into the field object. 17342 17343Fixed a problem where ASL Event objects were created in a 17344signalled state. Events are now created in an unsignalled state. 17345 17346The internal object cache is now purged after table loading and 17347initialization to reduce the use of dynamic kernel memory -- on 17348the assumption that object use is greatest during the parse phase 17349of the entire table (versus the run-time use of individual control 17350methods.) 17351 17352ACPI 2.0 variable-length packages are now fully operational. 17353 17354Code and Data Size: Code and Data optimizations have permitted new 17355feature development with an actual reduction in the library size. 17356Current core subsystem library sizes are shown below. These are 17357the code and data sizes for the acpica.lib produced by the 17358Microsoft Visual C++ 6.0 compiler, and these values do not include 17359any ACPI driver or OSPM code. The debug version of the code 17360includes the debug output trace mechanism and has a larger code 17361and data size. Note that these values will vary depending on the 17362efficiency of the compiler and the compiler options used during 17363generation. 17364 17365 Previous Release (11_09_01): 17366 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17367 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17368 17369 Current Release: 17370 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17371 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17372 17373 2) Linux: 17374 17375Enhanced the ACPI boot-time initialization code to allow the use 17376of Local APIC tables for processor enumeration on IA-32, and to 17377pave the way for a fully MPS-free boot (on SMP systems) in the 17378near future. This functionality replaces 17379arch/i386/kernel/acpitables.c, which was introduced in an earlier 173802.4.15-preX release. To enable this feature you must add 17381"acpi_boot=on" to the kernel command line -- see the help entry 17382for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 17383the works... 17384 17385Restructured the configuration options to allow boot-time table 17386parsing support without inclusion of the ACPI Interpreter (and 17387other) code. 17388 17389NOTE: This release does not include fixes for the reported events, 17390power-down, and thermal passive cooling issues (coming soon). 17391 17392 3) ASL Compiler: 17393 17394Added additional typechecking for Fields within restricted access 17395Operation Regions. All fields within EC and CMOS regions must be 17396declared with ByteAcc. All fields within SMBus regions must be 17397declared with the BufferAcc access type. 17398 17399Fixed a problem where the listing file output of control methods 17400no longer interleaved the actual AML code with the ASL source 17401code. 17402 17403 17404 17405 17406---------------------------------------- 17407Summary of changes for this label: 11_09_01 17408 174091) ACPI CA Core Subsystem: 17410 17411Implemented ACPI 2.0-defined support for writes to fields with a 17412Buffer, String, or Integer source operand that is smaller than the 17413target field. In these cases, the source operand is zero-extended 17414to fill the target field. 17415 17416Fixed a problem where a Field starting bit offset (within the 17417parent operation region) was calculated incorrectly if the 17418 17419alignment of the field differed from the access width. This 17420affected CreateWordField, CreateDwordField, CreateQwordField, and 17421possibly other fields that use the "AccessAny" keyword. 17422 17423Fixed a problem introduced in the 11_02_01 release where indirect 17424stores through method arguments did not operate correctly. 17425 174262) Linux: 17427 17428Implemented boot-time ACPI table parsing support 17429(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 17430facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 17431legacy BIOS interfaces (e.g. MPS) for the configuration of system 17432processors, memory, and interrupts during setup_arch(). Note that 17433this patch does not include the required architecture-specific 17434changes required to apply this information -- subsequent patches 17435will be posted for both IA32 and IA64 to achieve this. 17436 17437Added low-level sleep support for IA32 platforms, courtesy of Pat 17438Mochel. This allows IA32 systems to transition to/from various 17439sleeping states (e.g. S1, S3), although the lack of a centralized 17440driver model and power-manageable drivers will prevent its 17441(successful) use on most systems. 17442 17443Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 17444submenu, unified IA32 and IA64 options, added new "Boot using ACPI 17445tables" option, etc. 17446 17447Increased the default timeout for the EC driver from 1ms to 10ms 17448(1000 cycles of 10us) to try to address AE_TIME errors during EC 17449transactions. 17450 17451 ---------------------------------------- 17452Summary of changes for this label: 11_02_01 17453 174541) ACPI CA Core Subsystem: 17455 17456ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 17457(QWordAcc keyword). All ACPI 2.0 64-bit support is now 17458implemented. 17459 17460OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 17461changes to support ACPI 2.0 Qword field access. Read/Write 17462PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 17463accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 17464the value parameter for the address space handler interface is now 17465an ACPI_INTEGER. OSL implementations of these interfaces must now 17466handle the case where the Width parameter is 64. 17467 17468Index Fields: Fixed a problem where unaligned bit assembly and 17469disassembly for IndexFields was not supported correctly. 17470 17471Index and Bank Fields: Nested Index and Bank Fields are now 17472supported. During field access, a check is performed to ensure 17473that the value written to an Index or Bank register is not out of 17474the range of the register. The Index (or Bank) register is 17475written before each access to the field data. Future support will 17476include allowing individual IndexFields to be wider than the 17477DataRegister width. 17478 17479Fields: Fixed a problem where the AML interpreter was incorrectly 17480attempting to write beyond the end of a Field/OpRegion. This was 17481a boundary case that occurred when a DWORD field was written to a 17482BYTE access OpRegion, forcing multiple writes and causing the 17483interpreter to write one datum too many. 17484 17485Fields: Fixed a problem with Field/OpRegion access where the 17486starting bit address of a field was incorrectly calculated if the 17487current access type was wider than a byte (WordAcc, DwordAcc, or 17488QwordAcc). 17489 17490Fields: Fixed a problem where forward references to individual 17491FieldUnits (individual Field names within a Field definition) were 17492not resolved during the AML table load. 17493 17494Fields: Fixed a problem where forward references from a Field 17495definition to the parent Operation Region definition were not 17496resolved during the AML table load. 17497 17498Fields: Duplicate FieldUnit names within a scope are now detected 17499during AML table load. 17500 17501Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 17502returned an incorrect name for the root node. 17503 17504Code and Data Size: Code and Data optimizations have permitted new 17505feature development with an actual reduction in the library size. 17506Current core subsystem library sizes are shown below. These are 17507the code and data sizes for the acpica.lib produced by the 17508Microsoft Visual C++ 6.0 compiler, and these values do not include 17509any ACPI driver or OSPM code. The debug version of the code 17510includes the debug output trace mechanism and has a larger code 17511and data size. Note that these values will vary depending on the 17512efficiency of the compiler and the compiler options used during 17513generation. 17514 17515 Previous Release (10_18_01): 17516 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17517 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17518 17519 Current Release: 17520 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17521 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17522 17523 2) Linux: 17524 17525Improved /proc processor output (Pavel Machek) Re-added 17526MODULE_LICENSE("GPL") to all modules. 17527 17528 3) ASL Compiler version X2030: 17529 17530Duplicate FieldUnit names within a scope are now detected and 17531flagged as errors. 17532 17533 4) Documentation: 17534 17535Programmer Reference updated to reflect OSL and address space 17536handler interface changes described above. 17537 17538---------------------------------------- 17539Summary of changes for this label: 10_18_01 17540 17541ACPI CA Core Subsystem: 17542 17543Fixed a problem with the internal object reference count mechanism 17544that occasionally caused premature object deletion. This resolves 17545all of the outstanding problem reports where an object is deleted 17546in the middle of an interpreter evaluation. Although this problem 17547only showed up in rather obscure cases, the solution to the 17548problem involved an adjustment of all reference counts involving 17549objects attached to namespace nodes. 17550 17551Fixed a problem with Field support in the interpreter where 17552writing to an aligned field whose length is an exact multiple (2 17553or greater) of the field access granularity would cause an attempt 17554to write beyond the end of the field. 17555 17556The top level AML opcode execution functions within the 17557interpreter have been renamed with a more meaningful and 17558consistent naming convention. The modules exmonad.c and 17559exdyadic.c were eliminated. New modules are exoparg1.c, 17560exoparg2.c, exoparg3.c, and exoparg6.c. 17561 17562Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 17563 17564Fixed a problem where the AML debugger was causing some internal 17565objects to not be deleted during subsystem termination. 17566 17567Fixed a problem with the external AcpiEvaluateObject interface 17568where the subsystem would fault if the named object to be 17569evaluated referred to a constant such as Zero, Ones, etc. 17570 17571Fixed a problem with IndexFields and BankFields where the 17572subsystem would fault if the index, data, or bank registers were 17573not defined in the same scope as the field itself. 17574 17575Added printf format string checking for compilers that support 17576this feature. Corrected more than 50 instances of issues with 17577format specifiers within invocations of ACPI_DEBUG_PRINT 17578throughout the core subsystem code. 17579 17580The ASL "Revision" operator now returns the ACPI support level 17581implemented in the core - the value "2" since the ACPI 2.0 support 17582is more than 50% implemented. 17583 17584Enhanced the output of the AML debugger "dump namespace" command 17585to output in a more human-readable form. 17586 17587Current core subsystem library code sizes are shown below. These 17588 17589are the code and data sizes for the acpica.lib produced by the 17590Microsoft Visual C++ 6.0 compiler, and these values do not include 17591any ACPI driver or OSPM code. The debug version of the code 17592includes the full debug trace mechanism -- leading to a much 17593 17594larger code and data size. Note that these values will vary 17595depending on the efficiency of the compiler and the compiler 17596options used during generation. 17597 17598 Previous Label (09_20_01): 17599 Non-Debug Version: 65K Code, 5K Data, 70K Total 17600 Debug Version: 138K Code, 58K Data, 196K Total 17601 17602 This Label: 17603 17604 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17605 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17606 17607Linux: 17608 17609Implemented a "Bad BIOS Blacklist" to track machines that have 17610known ASL/AML problems. 17611 17612Enhanced the /proc interface for the thermal zone driver and added 17613support for _HOT (the critical suspend trip point). The 'info' 17614file now includes threshold/policy information, and allows setting 17615of _SCP (cooling preference) and _TZP (polling frequency) values 17616to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 17617frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 17618preference to the passive/quiet mode (if supported by the ASL). 17619 17620Implemented a workaround for a gcc bug that resuted in an OOPs 17621when loading the control method battery driver. 17622 17623 ---------------------------------------- 17624Summary of changes for this label: 09_20_01 17625 17626 ACPI CA Core Subsystem: 17627 17628The AcpiEnableEvent and AcpiDisableEvent interfaces have been 17629modified to allow individual GPE levels to be flagged as wake- 17630enabled (i.e., these GPEs are to remain enabled when the platform 17631sleeps.) 17632 17633The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 17634support wake-enabled GPEs. This means that upon entering the 17635sleep state, all GPEs that are not wake-enabled are disabled. 17636When leaving the sleep state, these GPEs are re-enabled. 17637 17638A local double-precision divide/modulo module has been added to 17639enhance portability to OS kernels where a 64-bit math library is 17640not available. The new module is "utmath.c". 17641 17642Several optimizations have been made to reduce the use of CPU 17643stack. Originally over 2K, the maximum stack usage is now below 176442K at 1860 bytes (1.82k) 17645 17646Fixed a problem with the AcpiGetFirmwareTable interface where the 17647root table pointer was not mapped into a logical address properly. 17648 17649Fixed a problem where a NULL pointer was being dereferenced in the 17650interpreter code for the ASL Notify operator. 17651 17652Fixed a problem where the use of the ASL Revision operator 17653returned an error. This operator now returns the current version 17654of the ACPI CA core subsystem. 17655 17656Fixed a problem where objects passed as control method parameters 17657to AcpiEvaluateObject were always deleted at method termination. 17658However, these objects may end up being stored into the namespace 17659by the called method. The object reference count mechanism was 17660applied to these objects instead of a force delete. 17661 17662Fixed a problem where static strings or buffers (contained in the 17663AML code) that are declared as package elements within the ASL 17664code could cause a fault because the interpreter would attempt to 17665delete them. These objects are now marked with the "static 17666object" flag to prevent any attempt to delete them. 17667 17668Implemented an interpreter optimization to use operands directly 17669from the state object instead of extracting the operands to local 17670variables. This reduces stack use and code size, and improves 17671performance. 17672 17673The module exxface.c was eliminated as it was an unnecessary extra 17674layer of code. 17675 17676Current core subsystem library code sizes are shown below. These 17677are the code and data sizes for the acpica.lib produced by the 17678Microsoft Visual C++ 6.0 compiler, and these values do not include 17679any ACPI driver or OSPM code. The debug version of the code 17680includes the full debug trace mechanism -- leading to a much 17681larger code and data size. Note that these values will vary 17682depending on the efficiency of the compiler and the compiler 17683options used during generation. 17684 17685 Non-Debug Version: 65K Code, 5K Data, 70K Total 17686(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 17687Total (Previously 195K) 17688 17689Linux: 17690 17691Support for ACPI 2.0 64-bit integers has been added. All ACPI 17692Integer objects are now 64 bits wide 17693 17694All Acpi data types and structures are now in lower case. Only 17695Acpi macros are upper case for differentiation. 17696 17697 Documentation: 17698 17699Changes to the external interfaces as described above. 17700 17701 ---------------------------------------- 17702Summary of changes for this label: 08_31_01 17703 17704 ACPI CA Core Subsystem: 17705 17706A bug with interpreter implementation of the ASL Divide operator 17707was found and fixed. The implicit function return value (not the 17708explicit store operands) was returning the remainder instead of 17709the quotient. This was a longstanding bug and it fixes several 17710known outstanding issues on various platforms. 17711 17712The ACPI_DEBUG_PRINT and function trace entry/exit macros have 17713been further optimized for size. There are 700 invocations of the 17714DEBUG_PRINT macro alone, so each optimization reduces the size of 17715the debug version of the subsystem significantly. 17716 17717A stack trace mechanism has been implemented. The maximum stack 17718usage is about 2K on 32-bit platforms. The debugger command "stat 17719stack" will display the current maximum stack usage. 17720 17721All public symbols and global variables within the subsystem are 17722now prefixed with the string "Acpi". This keeps all of the 17723symbols grouped together in a kernel map, and avoids conflicts 17724with other kernel subsystems. 17725 17726Most of the internal fixed lookup tables have been moved into the 17727code segment via the const operator. 17728 17729Several enhancements have been made to the interpreter to both 17730reduce the code size and improve performance. 17731 17732Current core subsystem library code sizes are shown below. These 17733are the code and data sizes for the acpica.lib produced by the 17734Microsoft Visual C++ 6.0 compiler, and these values do not include 17735any ACPI driver or OSPM code. The debug version of the code 17736includes the full debug trace mechanism which contains over 700 17737invocations of the DEBUG_PRINT macro, 500 function entry macro 17738invocations, and over 900 function exit macro invocations -- 17739leading to a much larger code and data size. Note that these 17740values will vary depending on the efficiency of the compiler and 17741the compiler options used during generation. 17742 17743 Non-Debug Version: 64K Code, 5K Data, 69K Total 17744Debug Version: 137K Code, 58K Data, 195K Total 17745 17746 Linux: 17747 17748Implemented wbinvd() macro, pending a kernel-wide definition. 17749 17750Fixed /proc/acpi/event to handle poll() and short reads. 17751 17752 ASL Compiler, version X2026: 17753 17754Fixed a problem introduced in the previous label where the AML 17755 17756code emitted for package objects produced packages with zero 17757length. 17758 17759 ---------------------------------------- 17760Summary of changes for this label: 08_16_01 17761 17762ACPI CA Core Subsystem: 17763 17764The following ACPI 2.0 ASL operators have been implemented in the 17765AML interpreter (These are already supported by the Intel ASL 17766compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 17767ToBuffer. Support for 64-bit AML constants is implemented in the 17768AML parser, debugger, and disassembler. 17769 17770The internal memory tracking mechanism (leak detection code) has 17771been upgraded to reduce the memory overhead (a separate tracking 17772block is no longer allocated for each memory allocation), and now 17773supports all of the internal object caches. 17774 17775The data structures and code for the internal object caches have 17776been coelesced and optimized so that there is a single cache and 17777memory list data structure and a single group of functions that 17778implement generic cache management. This has reduced the code 17779size in both the debug and release versions of the subsystem. 17780 17781The DEBUG_PRINT macro(s) have been optimized for size and replaced 17782by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 17783different, because it generates a single call to an internal 17784function. This results in a savings of about 90 bytes per 17785invocation, resulting in an overall code and data savings of about 1778616% in the debug version of the subsystem. 17787 17788 Linux: 17789 17790Fixed C3 disk corruption problems and re-enabled C3 on supporting 17791machines. 17792 17793Integrated low-level sleep code by Patrick Mochel. 17794 17795Further tweaked source code Linuxization. 17796 17797Other minor fixes. 17798 17799 ASL Compiler: 17800 17801Support for ACPI 2.0 variable length packages is fixed/completed. 17802 17803Fixed a problem where the optional length parameter for the ACPI 178042.0 ToString operator. 17805 17806Fixed multiple extraneous error messages when a syntax error is 17807detected within the declaration line of a control method. 17808 17809 ---------------------------------------- 17810Summary of changes for this label: 07_17_01 17811 17812ACPI CA Core Subsystem: 17813 17814Added a new interface named AcpiGetFirmwareTable to obtain any 17815ACPI table via the ACPI signature. The interface can be called at 17816any time during kernel initialization, even before the kernel 17817virtual memory manager is initialized and paging is enabled. This 17818allows kernel subsystems to obtain ACPI tables very early, even 17819before the ACPI CA subsystem is initialized. 17820 17821Fixed a problem where Fields defined with the AnyAcc attribute 17822could be resolved to the incorrect address under the following 17823conditions: 1) the field width is larger than 8 bits and 2) the 17824parent operation region is not defined on a DWORD boundary. 17825 17826Fixed a problem where the interpreter is not being locked during 17827namespace initialization (during execution of the _INI control 17828methods), causing an error when an attempt is made to release it 17829later. 17830 17831ACPI 2.0 support in the AML Interpreter has begun and will be 17832ongoing throughout the rest of this year. In this label, The Mod 17833operator is implemented. 17834 17835Added a new data type to contain full PCI addresses named 17836ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 17837and Function values. 17838 17839 Linux: 17840 17841Enhanced the Linux version of the source code to change most 17842capitalized ACPI type names to lowercase. For example, all 17843instances of ACPI_STATUS are changed to acpi_status. This will 17844result in a large diff, but the change is strictly cosmetic and 17845aligns the CA code closer to the Linux coding standard. 17846 17847OSL Interfaces: 17848 17849The interfaces to the PCI configuration space have been changed to 17850add the PCI Segment number and to split the single 32-bit combined 17851DeviceFunction field into two 16-bit fields. This was 17852accomplished by moving the four values that define an address in 17853PCI configuration space (segment, bus, device, and function) to 17854the new ACPI_PCI_ID structure. 17855 17856The changes to the PCI configuration space interfaces led to a 17857reexamination of the complete set of address space access 17858interfaces for PCI, I/O, and Memory. The previously existing 18 17859interfaces have proven difficult to maintain (any small change 17860must be propagated across at least 6 interfaces) and do not easily 17861allow for future expansion to 64 bits if necessary. Also, on some 17862systems, it would not be appropriate to demultiplex the access 17863width (8, 16, 32,or 64) before calling the OSL if the 17864corresponding native OS interfaces contain a similar access width 17865parameter. For these reasons, the 18 address space interfaces 17866have been replaced by these 6 new ones: 17867 17868AcpiOsReadPciConfiguration 17869AcpiOsWritePciConfiguration 17870AcpiOsReadMemory 17871AcpiOsWriteMemory 17872AcpiOsReadPort 17873AcpiOsWritePort 17874 17875Added a new interface named AcpiOsGetRootPointer to allow the OSL 17876to perform the platform and/or OS-specific actions necessary to 17877obtain the ACPI RSDP table pointer. On IA-32 platforms, this 17878interface will simply call down to the CA core to perform the low- 17879memory search for the table. On IA-64, the RSDP is obtained from 17880EFI. Migrating this interface to the OSL allows the CA core to 17881 17882remain OS and platform independent. 17883 17884Added a new interface named AcpiOsSignal to provide a generic 17885"function code and pointer" interface for various miscellaneous 17886signals and notifications that must be made to the host OS. The 17887first such signals are intended to support the ASL Fatal and 17888Breakpoint operators. In the latter case, the AcpiOsBreakpoint 17889interface has been obsoleted. 17890 17891The definition of the AcpiFormatException interface has been 17892changed to simplify its use. The caller no longer must supply a 17893buffer to the call; A pointer to a const string is now returned 17894directly. This allows the call to be easily used in printf 17895statements, etc. since the caller does not have to manage a local 17896buffer. 17897 17898 17899 ASL Compiler, Version X2025: 17900 17901The ACPI 2.0 Switch/Case/Default operators have been implemented 17902and are fully functional. They will work with all ACPI 1.0 17903interpreters, since the operators are simply translated to If/Else 17904pairs. 17905 17906The ACPI 2.0 ElseIf operator is implemented and will also work 17907with 1.0 interpreters, for the same reason. 17908 17909Implemented support for ACPI 2.0 variable-length packages. These 17910packages have a separate opcode, and their size is determined by 17911the interpreter at run-time. 17912 17913Documentation The ACPI CA Programmer Reference has been updated to 17914reflect the new interfaces and changes to existing interfaces. 17915 17916 ------------------------------------------ 17917Summary of changes for this label: 06_15_01 17918 17919 ACPI CA Core Subsystem: 17920 17921Fixed a problem where a DWORD-accessed field within a Buffer 17922object would get its byte address inadvertently rounded down to 17923the nearest DWORD. Buffers are always Byte-accessible. 17924 17925 ASL Compiler, version X2024: 17926 17927Fixed a problem where the Switch() operator would either fault or 17928hang the compiler. Note however, that the AML code for this ACPI 179292.0 operator is not yet implemented. 17930 17931Compiler uses the new AcpiOsGetTimer interface to obtain compile 17932timings. 17933 17934Implementation of the CreateField operator automatically converts 17935a reference to a named field within a resource descriptor from a 17936byte offset to a bit offset if required. 17937 17938Added some missing named fields from the resource descriptor 17939support. These are the names that are automatically created by the 17940compiler to reference fields within a descriptor. They are only 17941valid at compile time and are not passed through to the AML 17942interpreter. 17943 17944Resource descriptor named fields are now typed as Integers and 17945subject to compile-time typechecking when used in expressions. 17946 17947 ------------------------------------------ 17948Summary of changes for this label: 05_18_01 17949 17950 ACPI CA Core Subsystem: 17951 17952Fixed a couple of problems in the Field support code where bits 17953from adjacent fields could be returned along with the proper field 17954bits. Restructured the field support code to improve performance, 17955readability and maintainability. 17956 17957New DEBUG_PRINTP macro automatically inserts the procedure name 17958into the output, saving hundreds of copies of procedure name 17959strings within the source, shrinking the memory footprint of the 17960debug version of the core subsystem. 17961 17962 Source Code Structure: 17963 17964The source code directory tree was restructured to reflect the 17965current organization of the component architecture. Some files 17966and directories have been moved and/or renamed. 17967 17968 Linux: 17969 17970Fixed leaking kacpidpc processes. 17971 17972Fixed queueing event data even when /proc/acpi/event is not 17973opened. 17974 17975 ASL Compiler, version X2020: 17976 17977Memory allocation performance enhancement - over 24X compile time 17978improvement on large ASL files. Parse nodes and namestring 17979buffers are now allocated from a large internal compiler buffer. 17980 17981The temporary .SRC file is deleted unless the "-s" option is 17982specified 17983 17984The "-d" debug output option now sends all output to the .DBG file 17985instead of the console. 17986 17987"External" second parameter is now optional 17988 17989"ElseIf" syntax now properly allows the predicate 17990 17991Last operand to "Load" now recognized as a Target operand 17992 17993Debug object can now be used anywhere as a normal object. 17994 17995ResourceTemplate now returns an object of type BUFFER 17996 17997EISAID now returns an object of type INTEGER 17998 17999"Index" now works with a STRING operand 18000 18001"LoadTable" now accepts optional parameters 18002 18003"ToString" length parameter is now optional 18004 18005"Interrupt (ResourceType," parse error fixed. 18006 18007"Register" with a user-defined region space parse error fixed 18008 18009Escaped backslash at the end of a string ("\\") scan/parse error 18010fixed 18011 18012"Revision" is now an object of type INTEGER. 18013 18014 18015 18016------------------------------------------ 18017Summary of changes for this label: 05_02_01 18018 18019Linux: 18020 18021/proc/acpi/event now blocks properly. 18022 18023Removed /proc/sys/acpi. You can still dump your DSDT from 18024/proc/acpi/dsdt. 18025 18026 ACPI CA Core Subsystem: 18027 18028Fixed a problem introduced in the previous label where some of the 18029"small" resource descriptor types were not recognized. 18030 18031Improved error messages for the case where an ASL Field is outside 18032the range of the parent operation region. 18033 18034 ASL Compiler, version X2018: 18035 18036 18037Added error detection for ASL Fields that extend beyond the length 18038of the parent operation region (only if the length of the region 18039is known at compile time.) This includes fields that have a 18040minimum access width that is smaller than the parent region, and 18041individual field units that are partially or entirely beyond the 18042extent of the parent. 18043 18044 18045 18046------------------------------------------ 18047Summary of changes for this label: 04_27_01 18048 18049 ACPI CA Core Subsystem: 18050 18051Fixed a problem where the namespace mutex could be released at the 18052wrong time during execution of AcpiRemoveAddressSpaceHandler. 18053 18054Added optional thread ID output for debug traces, to simplify 18055debugging of multiple threads. Added context switch notification 18056when the debug code realizes that a different thread is now 18057executing ACPI code. 18058 18059Some additional external data types have been prefixed with the 18060string "ACPI_" for consistency. This may effect existing code. 18061The data types affected are the external callback typedefs - e.g., 18062 18063WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 18064 18065 Linux: 18066 18067Fixed an issue with the OSL semaphore implementation where a 18068thread was waking up with an error from receiving a SIGCHLD 18069signal. 18070 18071Linux version of ACPI CA now uses the system C library for string 18072manipulation routines instead of a local implementation. 18073 18074Cleaned up comments and removed TBDs. 18075 18076 ASL Compiler, version X2017: 18077 18078Enhanced error detection and reporting for all file I/O 18079operations. 18080 18081 Documentation: 18082 18083Programmer Reference updated to version 1.06. 18084 18085 18086 18087------------------------------------------ 18088Summary of changes for this label: 04_13_01 18089 18090 ACPI CA Core Subsystem: 18091 18092Restructured support for BufferFields and RegionFields. 18093BankFields support is now fully operational. All known 32-bit 18094limitations on field sizes have been removed. Both BufferFields 18095and (Operation) RegionFields are now supported by the same field 18096management code. 18097 18098Resource support now supports QWORD address and IO resources. The 1809916/32/64 bit address structures and the Extended IRQ structure 18100have been changed to properly handle Source Resource strings. 18101 18102A ThreadId of -1 is now used to indicate a "mutex not acquired" 18103condition internally and must never be returned by AcpiOsThreadId. 18104This reserved value was changed from 0 since Unix systems allow a 18105thread ID of 0. 18106 18107Linux: 18108 18109Driver code reorganized to enhance portability 18110 18111Added a kernel configuration option to control ACPI_DEBUG 18112 18113Fixed the EC driver to honor _GLK. 18114 18115ASL Compiler, version X2016: 18116 18117Fixed support for the "FixedHw" keyword. Previously, the FixedHw 18118address space was set to 0, not 0x7f as it should be. 18119 18120 ------------------------------------------ 18121Summary of changes for this label: 03_13_01 18122 18123 ACPI CA Core Subsystem: 18124 18125During ACPI initialization, the _SB_._INI method is now run if 18126present. 18127 18128Notify handler fix - notifies are deferred until the parent method 18129completes execution. This fixes the "mutex already acquired" 18130issue seen occasionally. 18131 18132Part of the "implicit conversion" rules in ACPI 2.0 have been 18133found to cause compatibility problems with existing ASL/AML. The 18134convert "result-to-target-type" implementation has been removed 18135for stores to method Args and Locals. Source operand conversion 18136is still fully implemented. Possible changes to ACPI 2.0 18137specification pending. 18138 18139Fix to AcpiRsCalculatePciRoutingTableLength to return correct 18140length. 18141 18142Fix for compiler warnings for 64-bit compiles. 18143 18144 Linux: 18145 18146/proc output aligned for easier parsing. 18147 18148Release-version compile problem fixed. 18149 18150New kernel configuration options documented in Configure.help. 18151 18152IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 18153context" message. 18154 18155 OSPM: 18156 18157Power resource driver integrated with bus manager. 18158 18159Fixed kernel fault during active cooling for thermal zones. 18160 18161Source Code: 18162 18163The source code tree has been restructured. 18164 18165 18166 18167------------------------------------------ 18168Summary of changes for this label: 03_02_01 18169 18170 Linux OS Services Layer (OSL): 18171 18172Major revision of all Linux-specific code. 18173 18174Modularized all ACPI-specific drivers. 18175 18176Added new thermal zone and power resource drivers. 18177 18178Revamped /proc interface (new functionality is under /proc/acpi). 18179 18180New kernel configuration options. 18181 18182 Linux known issues: 18183 18184New kernel configuration options not documented in Configure.help 18185yet. 18186 18187 18188Module dependencies not currently implemented. If used, they 18189should be loaded in this order: busmgr, power, ec, system, 18190processor, battery, ac_adapter, button, thermal. 18191 18192Modules will not load if CONFIG_MODVERSION is set. 18193 18194IBM 600E - entering S5 may reboot instead of shutting down. 18195 18196IBM 600E - Sleep button may generate "Invalid <NULL> context" 18197message. 18198 18199Some systems may fail with "execution mutex already acquired" 18200message. 18201 18202 ACPI CA Core Subsystem: 18203 18204Added a new OSL Interface, AcpiOsGetThreadId. This was required 18205for the deadlock detection code. Defined to return a non-zero, 32- 18206bit thread ID for the currently executing thread. May be a non- 18207zero constant integer on single-thread systems. 18208 18209Implemented deadlock detection for internal subsystem mutexes. We 18210may add conditional compilation for this code (debug only) later. 18211 18212ASL/AML Mutex object semantics are now fully supported. This 18213includes multiple acquires/releases by owner and support for the 18214 18215Mutex SyncLevel parameter. 18216 18217A new "Force Release" mechanism automatically frees all ASL 18218Mutexes that have been acquired but not released when a thread 18219exits the interpreter. This forces conformance to the ACPI spec 18220("All mutexes must be released when an invocation exits") and 18221prevents deadlocked ASL threads. This mechanism can be expanded 18222(later) to monitor other resource acquisitions if OEM ASL code 18223continues to misbehave (which it will). 18224 18225Several new ACPI exception codes have been added for the Mutex 18226support. 18227 18228Recursive method calls are now allowed and supported (the ACPI 18229spec does in fact allow recursive method calls.) The number of 18230recursive calls is subject to the restrictions imposed by the 18231SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 18232parameter. 18233 18234Implemented support for the SyncLevel parameter for control 18235methods (ACPI 2.0 feature) 18236 18237Fixed a deadlock problem when multiple threads attempted to use 18238the interpreter. 18239 18240Fixed a problem where the string length of a String package 18241element was not always set in a package returned from 18242AcpiEvaluateObject. 18243 18244Fixed a problem where the length of a String package element was 18245not always included in the length of the overall package returned 18246from AcpiEvaluateObject. 18247 18248Added external interfaces (Acpi*) to the ACPI debug memory 18249manager. This manager keeps a list of all outstanding 18250allocations, and can therefore detect memory leaks and attempts to 18251free memory blocks more than once. Useful for code such as the 18252power manager, etc. May not be appropriate for device drivers. 18253Performance with the debug code enabled is slow. 18254 18255The ACPI Global Lock is now an optional hardware element. 18256 18257 ASL Compiler Version X2015: 18258 18259Integrated changes to allow the compiler to be generated on 18260multiple platforms. 18261 18262Linux makefile added to generate the compiler on Linux 18263 18264 Source Code: 18265 18266All platform-specific headers have been moved to their own 18267subdirectory, Include/Platform. 18268 18269New source file added, Interpreter/ammutex.c 18270 18271New header file, Include/acstruct.h 18272 18273 Documentation: 18274 18275The programmer reference has been updated for the following new 18276interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 18277 18278 ------------------------------------------ 18279Summary of changes for this label: 02_08_01 18280 18281Core ACPI CA Subsystem: Fixed a problem where an error was 18282incorrectly returned if the return resource buffer was larger than 18283the actual data (in the resource interfaces). 18284 18285References to named objects within packages are resolved to the 18286 18287full pathname string before packages are returned directly (via 18288the AcpiEvaluateObject interface) or indirectly via the resource 18289interfaces. 18290 18291Linux OS Services Layer (OSL): 18292 18293Improved /proc battery interface. 18294 18295 18296Added C-state debugging output and other miscellaneous fixes. 18297 18298ASL Compiler Version X2014: 18299 18300All defined method arguments can now be used as local variables, 18301including the ones that are not actually passed in as parameters. 18302The compiler tracks initialization of the arguments and issues an 18303exception if they are used without prior assignment (just like 18304locals). 18305 18306The -o option now specifies a filename prefix that is used for all 18307output files, including the AML output file. Otherwise, the 18308default behavior is as follows: 1) the AML goes to the file 18309specified in the DSDT. 2) all other output files use the input 18310source filename as the base. 18311 18312 ------------------------------------------ 18313Summary of changes for this label: 01_25_01 18314 18315Core ACPI CA Subsystem: Restructured the implementation of object 18316store support within the interpreter. This includes support for 18317the Store operator as well as any ASL operators that include a 18318target operand. 18319 18320Partially implemented support for Implicit Result-to-Target 18321conversion. This is when a result object is converted on the fly 18322to the type of an existing target object. Completion of this 18323support is pending further analysis of the ACPI specification 18324concerning this matter. 18325 18326CPU-specific code has been removed from the subsystem (hardware 18327directory). 18328 18329New Power Management Timer functions added 18330 18331Linux OS Services Layer (OSL): Moved system state transition code 18332to the core, fixed it, and modified Linux OSL accordingly. 18333 18334Fixed C2 and C3 latency calculations. 18335 18336 18337We no longer use the compilation date for the version message on 18338initialization, but retrieve the version from AcpiGetSystemInfo(). 18339 18340Incorporated for fix Sony VAIO machines. 18341 18342Documentation: The Programmer Reference has been updated and 18343reformatted. 18344 18345 18346ASL Compiler: Version X2013: Fixed a problem where the line 18347numbering and error reporting could get out of sync in the 18348presence of multiple include files. 18349 18350 ------------------------------------------ 18351Summary of changes for this label: 01_15_01 18352 18353Core ACPI CA Subsystem: 18354 18355Implemented support for type conversions in the execution of the 18356ASL Concatenate operator (The second operand is converted to 18357match the type of the first operand before concatenation.) 18358 18359Support for implicit source operand conversion is partially 18360implemented. The ASL source operand types Integer, Buffer, and 18361String are freely interchangeable for most ASL operators and are 18362converted by the interpreter on the fly as required. Implicit 18363Target operand conversion (where the result is converted to the 18364target type before storing) is not yet implemented. 18365 18366Support for 32-bit and 64-bit BCD integers is implemented. 18367 18368Problem fixed where a field read on an aligned field could cause a 18369read past the end of the field. 18370 18371New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 18372does not return a value, but the caller expects one. (The ASL 18373compiler flags this as a warning.) 18374 18375ASL Compiler: 18376 18377Version X2011: 183781. Static typechecking of all operands is implemented. This 18379prevents the use of invalid objects (such as using a Package where 18380an Integer is required) at compile time instead of at interpreter 18381run-time. 183822. The ASL source line is printed with ALL errors and warnings. 183833. Bug fix for source EOF without final linefeed. 183844. Debug option is split into a parse trace and a namespace trace. 183855. Namespace output option (-n) includes initial values for 18386integers and strings. 183876. Parse-only option added for quick syntax checking. 183887. Compiler checks for duplicate ACPI name declarations 18389 18390Version X2012: 183911. Relaxed typechecking to allow interchangeability between 18392strings, integers, and buffers. These types are now converted by 18393the interpreter at runtime. 183942. Compiler reports time taken by each internal subsystem in the 18395debug output file. 18396 18397 18398 ------------------------------------------ 18399Summary of changes for this label: 12_14_00 18400 18401ASL Compiler: 18402 18403This is the first official release of the compiler. Since the 18404compiler requires elements of the Core Subsystem, this label 18405synchronizes everything. 18406 18407------------------------------------------ 18408Summary of changes for this label: 12_08_00 18409 18410 18411Fixed a problem where named references within the ASL definition 18412of both OperationRegions and CreateXXXFields did not work 18413properly. The symptom was an AE_AML_OPERAND_TYPE during 18414initialization of the region/field. This is similar (but not 18415related internally) to the problem that was fixed in the last 18416label. 18417 18418Implemented both 32-bit and 64-bit support for the BCD ASL 18419functions ToBCD and FromBCD. 18420 18421Updated all legal headers to include "2000" in the copyright 18422years. 18423 18424 ------------------------------------------ 18425Summary of changes for this label: 12_01_00 18426 18427Fixed a problem where method invocations within the ASL definition 18428of both OperationRegions and CreateXXXFields did not work 18429properly. The symptom was an AE_AML_OPERAND_TYPE during 18430initialization of the region/field: 18431 18432 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 18433[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 18434(0x3005) 18435 18436Fixed a problem where operators with more than one nested 18437subexpression would fail. The symptoms were varied, by mostly 18438AE_AML_OPERAND_TYPE errors. This was actually a rather serious 18439problem that has gone unnoticed until now. 18440 18441 Subtract (Add (1,2), Multiply (3,4)) 18442 18443Fixed a problem where AcpiGetHandle didn't quite get fixed in the 18444previous build (The prefix part of a relative path was handled 18445incorrectly). 18446 18447Fixed a problem where Operation Region initialization failed if 18448the operation region name was a "namepath" instead of a simple 18449"nameseg". Symptom was an AE_NO_OPERAND error. 18450 18451Fixed a problem where an assignment to a local variable via the 18452indirect RefOf mechanism only worked for the first such 18453assignment. Subsequent assignments were ignored. 18454 18455 ------------------------------------------ 18456Summary of changes for this label: 11_15_00 18457 18458ACPI 2.0 table support with backwards support for ACPI 1.0 and the 184590.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 18460the AML interpreter does NOT have support for the new 2.0 ASL 18461grammar terms at this time. 18462 18463All ACPI hardware access is via the GAS structures in the ACPI 2.0 18464FADT. 18465 18466All physical memory addresses across all platforms are now 64 bits 18467wide. Logical address width remains dependent on the platform 18468(i.e., "void *"). 18469 18470AcpiOsMapMemory interface changed to a 64-bit physical address. 18471 18472The AML interpreter integer size is now 64 bits, as per the ACPI 184732.0 specification. 18474 18475For backwards compatibility with ACPI 1.0, ACPI tables with a 18476revision number less than 2 use 32-bit integers only. 18477 18478Fixed a problem where the evaluation of OpRegion operands did not 18479always resolve them to numbers properly. 18480 18481------------------------------------------ 18482Summary of changes for this label: 10_20_00 18483 18484Fix for CBN_._STA issue. This fix will allow correct access to 18485CBN_ OpRegions when the _STA returns 0x8. 18486 18487Support to convert ACPI constants (Ones, Zeros, One) to actual 18488values before a package object is returned 18489 18490Fix for method call as predicate to if/while construct causing 18491incorrect if/while behavior 18492 18493Fix for Else block package lengths sometimes calculated wrong (if 18494block > 63 bytes) 18495 18496Fix for Processor object length field, was always zero 18497 18498Table load abort if FACP sanity check fails 18499 18500Fix for problem with Scope(name) if name already exists 18501 18502Warning emitted if a named object referenced cannot be found 18503(resolved) during method execution. 18504 18505 18506 18507 18508 18509------------------------------------------ 18510Summary of changes for this label: 9_29_00 18511 18512New table initialization interfaces: AcpiInitializeSubsystem no 18513longer has any parameters AcpiFindRootPointer - Find the RSDP (if 18514necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 18515>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 18516AcpiLoadTables 18517 18518Note: These interface changes require changes to all existing OSDs 18519 18520The PCI_Config default address space handler is always installed 18521at the root namespace object. 18522 18523------------------------------------------- 18524Summary of changes for this label: 09_15_00 18525 18526The new initialization architecture is implemented. New 18527interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 18528AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 18529 18530(Namespace is automatically loaded when a table is loaded) 18531 18532The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1853352 bytes to 32 bytes. There is usually one of these for every 18534namespace object, so the memory savings is significant. 18535 18536Implemented just-in-time evaluation of the CreateField operators. 18537 18538Bug fixes for IA-64 support have been integrated. 18539 18540Additional code review comments have been implemented 18541 18542The so-called "third pass parse" has been replaced by a final walk 18543through the namespace to initialize all operation regions (address 18544spaces) and fields that have not yet been initialized during the 18545execution of the various _INI and REG methods. 18546 18547New file - namespace/nsinit.c 18548 18549------------------------------------------- 18550Summary of changes for this label: 09_01_00 18551 18552Namespace manager data structures have been reworked to change the 18553primary object from a table to a single object. This has 18554resulted in dynamic memory savings of 3X within the namespace and 185552X overall in the ACPI CA subsystem. 18556 18557Fixed problem where the call to AcpiEvFindPciRootBuses was 18558inadvertently left commented out. 18559 18560Reduced the warning count when generating the source with the GCC 18561compiler. 18562 18563Revision numbers added to each module header showing the 18564SourceSafe version of the file. Please refer to this version 18565number when giving us feedback or comments on individual modules. 18566 18567The main object types within the subsystem have been renamed to 18568clarify their purpose: 18569 18570ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 18571ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 18572ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 18573 18574NOTE: no changes to the initialization sequence are included in 18575this label. 18576 18577------------------------------------------- 18578Summary of changes for this label: 08_23_00 18579 18580Fixed problem where TerminateControlMethod was being called 18581multiple times per method 18582 18583Fixed debugger problem where single stepping caused a semaphore to 18584be oversignalled 18585 18586Improved performance through additional parse object caching - 18587added ACPI_EXTENDED_OP type 18588 18589------------------------------------------- 18590Summary of changes for this label: 08_10_00 18591 18592Parser/Interpreter integration: Eliminated the creation of 18593complete parse trees for ACPI tables and control methods. 18594Instead, parse subtrees are created and then deleted as soon as 18595they are processed (Either entered into the namespace or executed 18596by the interpreter). This reduces the use of dynamic kernel 18597memory significantly. (about 10X) 18598 18599Exception codes broken into classes and renumbered. Be sure to 18600recompile all code that includes acexcep.h. Hopefully we won't 18601have to renumber the codes again now that they are split into 18602classes (environment, programmer, AML code, ACPI table, and 18603internal). 18604 18605Fixed some additional alignment issues in the Resource Manager 18606subcomponent 18607 18608Implemented semaphore tracking in the AcpiExec utility, and fixed 18609several places where mutexes/semaphores were being unlocked 18610without a corresponding lock operation. There are no known 18611semaphore or mutex "leaks" at this time. 18612 18613Fixed the case where an ASL Return operator is used to return an 18614unnamed package. 18615 18616------------------------------------------- 18617Summary of changes for this label: 07_28_00 18618 18619Fixed a problem with the way addresses were calculated in 18620AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 18621manifested itself when a Field was created with WordAccess or 18622DwordAccess, but the field unit defined within the Field was less 18623 18624than a Word or Dword. 18625 18626Fixed a problem in AmlDumpOperands() module's loop to pull 18627operands off of the operand stack to display information. The 18628problem manifested itself as a TLB error on 64-bit systems when 18629accessing an operand stack with two or more operands. 18630 18631Fixed a problem with the PCI configuration space handlers where 18632context was getting confused between accesses. This required a 18633change to the generic address space handler and address space 18634setup definitions. Handlers now get both a global handler context 18635(this is the one passed in by the user when executing 18636AcpiInstallAddressSpaceHandler() and a specific region context 18637that is unique to each region (For example, the _ADR, _SEG and 18638_BBN values associated with a specific region). The generic 18639function definitions have changed to the following: 18640 18641typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 18642UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 18643*HandlerContext, // This used to be void *Context void 18644*RegionContext); // This is an additional parameter 18645 18646typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 18647RegionHandle, UINT32 Function, void *HandlerContext, void 18648**RegionContext); // This used to be **ReturnContext 18649 18650------------------------------------------- 18651Summary of changes for this label: 07_21_00 18652 18653Major file consolidation and rename. All files within the 18654interpreter have been renamed as well as most header files. This 18655was done to prevent collisions with existing files in the host 18656OSs -- filenames such as "config.h" and "global.h" seem to be 18657quite common. The VC project files have been updated. All 18658makefiles will require modification. 18659 18660The parser/interpreter integration continues in Phase 5 with the 18661implementation of a complete 2-pass parse (the AML is parsed 18662twice) for each table; This avoids the construction of a huge 18663parse tree and therefore reduces the amount of dynamic memory 18664required by the subsystem. Greater use of the parse object cache 18665means that performance is unaffected. 18666 18667Many comments from the two code reviews have been rolled in. 18668 18669The 64-bit alignment support is complete. 18670 18671------------------------------------------- 18672Summary of changes for this label: 06_30_00 18673 18674With a nod and a tip of the hat to the technology of yesteryear, 18675we've added support in the source code for 80 column output 18676devices. The code is now mostly constrained to 80 columns or 18677less to support environments and editors that 1) cannot display 18678or print more than 80 characters on a single line, and 2) cannot 18679disable line wrapping. 18680 18681A major restructuring of the namespace data structure has been 18682completed. The result is 1) cleaner and more 18683understandable/maintainable code, and 2) a significant reduction 18684in the dynamic memory requirement for each named ACPI object 18685(almost half). 18686 18687------------------------------------------- 18688Summary of changes for this label: 06_23_00 18689 18690Linux support has been added. In order to obtain approval to get 18691the ACPI CA subsystem into the Linux kernel, we've had to make 18692quite a few changes to the base subsystem that will affect all 18693users (all the changes are generic and OS- independent). The 18694effects of these global changes have been somewhat far reaching. 18695Files have been merged and/or renamed and interfaces have been 18696renamed. The major changes are described below. 18697 18698Osd* interfaces renamed to AcpiOs* to eliminate namespace 18699pollution/confusion within our target kernels. All OSD 18700interfaces must be modified to match the new naming convention. 18701 18702Files merged across the subsystem. A number of the smaller source 18703and header files have been merged to reduce the file count and 18704increase the density of the existing files. There are too many 18705to list here. In general, makefiles that call out individual 18706files will require rebuilding. 18707 18708Interpreter files renamed. All interpreter files now have the 18709prefix am* instead of ie* and is*. 18710 18711Header files renamed: The acapi.h file is now acpixf.h. The 18712acpiosd.h file is now acpiosxf.h. We are removing references to 18713the acronym "API" since it is somewhat windowsy. The new name is 18714"external interface" or xface or xf in the filenames.j 18715 18716 18717All manifest constants have been forced to upper case (some were 18718mixed case.) Also, the string "ACPI_" has been prepended to many 18719(not all) of the constants, typedefs, and structs. 18720 18721The globals "DebugLevel" and "DebugLayer" have been renamed 18722"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 18723 18724All other globals within the subsystem are now prefixed with 18725"AcpiGbl_" Internal procedures within the subsystem are now 18726prefixed with "Acpi" (with only a few exceptions). The original 18727two-letter abbreviation for the subcomponent remains after "Acpi" 18728- for example, CmCallocate became AcpiCmCallocate. 18729 18730Added a source code translation/conversion utility. Used to 18731generate the Linux source code, it can be modified to generate 18732other types of source as well. Can also be used to cleanup 18733existing source by removing extraneous spaces and blank lines. 18734Found in tools/acpisrc/* 18735 18736OsdUnMapMemory was renamed to OsdUnmapMemory and then 18737AcpiOsUnmapMemory. (UnMap became Unmap). 18738 18739A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 18740When set to one, this indicates that the caller wants to use the 18741 18742semaphore as a mutex, not a counting semaphore. ACPI CA uses 18743both types. However, implementers of this call may want to use 18744different OS primitives depending on the type of semaphore 18745requested. For example, some operating systems provide separate 18746 18747"mutex" and "semaphore" interfaces - where the mutex interface is 18748much faster because it doesn't have all the overhead of a full 18749semaphore implementation. 18750 18751Fixed a deadlock problem where a method that accesses the PCI 18752address space can block forever if it is the first access to the 18753space. 18754 18755------------------------------------------- 18756Summary of changes for this label: 06_02_00 18757 18758Support for environments that cannot handle unaligned data 18759accesses (e.g. firmware and OS environments devoid of alignment 18760handler technology namely SAL/EFI and the IA-64 Linux kernel) has 18761been added (via configurable macros) in these three areas: - 18762Transfer of data from the raw AML byte stream is done via byte 18763moves instead of word/dword/qword moves. - External objects are 18764aligned within the user buffer, including package elements (sub- 18765objects). - Conversion of name strings to UINT32 Acpi Names is now 18766done byte-wise. 18767 18768The Store operator was modified to mimic Microsoft's 18769implementation when storing to a Buffer Field. 18770 18771Added a check of the BM_STS bit before entering C3. 18772 18773The methods subdirectory has been obsoleted and removed. A new 18774file, cmeval.c subsumes the functionality. 18775 18776A 16-bit (DOS) version of AcpiExec has been developed. The 18777makefile is under the acpiexec directory. 18778