1---------------------------------------- 226 March 2020. Summary of changes for version 20200326: 3 4 51) ACPICA kernel-resident subsystem: 6 7Performed a code clean-up to prevent build errors on early versions of 8GCC-10. 9 10Added the NHLT table signature. iASL data table compiler/disassembler 11support for this table is coming soon. 12 13 142) iASL Compiler/Disassembler and ACPICA tools: 15 16AcpiExec: Fixed several problems with the namespace initialization file 17(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 18errors, several seg faults, and enhancements to line parsing within the 19init file. In addition, each object found in the init file and it's new 20value is displayed, as well as any such entries that do not have a 21corresponding name in the namespace. For reference, the syntax for the 22various supported data types are presented below: 23 PCHG 0x777788889999BBBB // Integer 24 \DEV1.STR1 "XYZ" // String 25 BUF1 (88 99 AA) // Buffer 26 PKG1 [0x1111 0x2222] // Package 27 \BF1 0x7980 // BufferField 28 RCRV 0x0123456789ABCDEF // Field Unit 29 30iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 31can be used anywhere in a given ASL file to configure iASL to expect an 32iASL compiler error code on the line where this macro was placed. If the 33error code does not exist, an error is generated. This is intended to be 34used for ACPICA's ASL test suite, but can be used by ASL developers as 35well. 36 37iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 38IVRS table parsing supported only IVHD type 10h structures. Parsing an 39IVHD type 11h caused the iasl to report unknown subtable type. Add 40necessary structure definition for IVHD type 11h and apply correct 41parsing method based on subtable type. Micha? ?ygowski. 42 43iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 44According to AMD IOMMU Specification Revision 3.05 the reserved field 45should be IOMMU Feature Reporting. Change the name of the field to the 46correct one. Micha? ?ygowski. 47 48acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 49based on suggestions by David Seifert and Benjamin Berg. 50 51iASL: table compiler: removed an unused variable (DtCompilerParserResult) 52causing linking errors. Patch based on suggestions by David Seifert and 53Benjamin Berg. 54 55iASL: table compiler: make LexBuffer static to avoid linking errors in 56newer compilers. Patch based on suggestions by David Seifert and Benjamin 57Berg. 58 59iASL: fixed type matching between External and Named objects. External 60object types can only be expressed with ACPI object type values that are 61defined in the ACPI spec. However, iASL uses ACPI object type values that 62are local to ACPICA in addition to the values defined in the ACPI spec. 63This change implements type matching to map some object type values 64specific to ACPICA to ones that are defined in the ACPI spec. 65 66iASL: Dropped the type mismatch compiler error that can arise from 67External declarations to a warning. This warning can occur when there is 68a type difference between the external declaration and the actual object 69declaration (when compiling multiple files/modules simultaneously). 70 71iASL: removed an incorrect error message regarding externals. This change 72removes an incorrect error that is emitted when a duplicate external 73declaration does not contain a type that opens a scope. This is incorrect 74because the duplicate external with conflicting types are already caught 75by iASL and it doesn't make any sense to enforce what this conflicting 76type should be. 77 78AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 79surrounded by parens. Otherwise, a logical statement that applies a 80logical not operator to this macro could result in a computation that 81applies the operator to the left side of the logical and but not the 82right. Reported-by: John Levon <john.levon@joyent.com> 83 84Fixed a problem with the local version of sprint(): On 32-bit, the 85provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 86String + Size will wrap, meaning End < Start, and 87AcpiUtBoundStringOutput() will never output anything as a result. The 88symptom seen of this was acpixtract failing to output anything -- with a 89custom build that included utprint.c. Signed-off-by: John Levon 90<john.levon@joyent.com> 91 92iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 93ACPI specification. 94 95 96---------------------------------------- 9714 February 2020. Summary of changes for version 20200214: 98 99 1001) ACPICA kernel-resident subsystem: 101 102Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 103in a guest when it receives a sleep trigger from the hypervisor. When the 104guest resumes from this power state, it does not see the SleepEnabled 105bit. In other words, the sleepHibernation (S4) is triggered in a guest 106when it receives a sleep trigger from the hypervisor. When the guest 107resumes from this power state, it does not see the SleepEnabled bit. In 108other words, the sleep button is not enabled on waking from an S4 state. 109This causes subsequent invocation of sleep state to fail since the 110guest.button is not enabled on waking from an S4 state. This causes 111subsequent invocation of sleep state to fail in the guest. Fix this 112problem by enabling the sleep button in ACPI legacy wake. From Anchal 113Agarwal <anchalag@amazon.com>. 114 115Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 116for checking the status bits of all enabled GPEs in one go. It is needed 117to distinguish spurious SCIs from genuine ones when deciding whether or 118not to wake up the system from suspend-to-idle. 119 120Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 121using HOST in their environment to represent the host name for their 122machines. Avoid this problem by renaming this variable from HOST to 123ACPI_HOST. 124 125MSVC 2017 project files: Enable multiprocessor generation to improve 126build performance. 127 128Added a macro to get the byte width of a Generic Address structure. New 129ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 130ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 131 132 1332) iASL Compiler/Disassembler and ACPICA tools: 134 135iASL: Implemented full support for the (optional, rarely used) ReturnType 136and ParameterTypesList for the Method, Function, and External operators. 137For Method declarations, the number of individual ParameterTypes must 138match the declaration of the number of arguments (NumArgs). This also 139Fixes a problem with the External operator where extra/extraneous bytes 140were emitted in the AML code if the optional ReturnType/ParameterTypes 141were specified for a MethodObj declaration. 142New error message: 1431) Method NumArgs count does not match length of ParameterTypes list 144 145iASL: Implemented detection of type mismatches between External 146declarations and named object declarations. Also, detect type mismatches 147between multiple External declarations of the same Name. 148New error messages: 1491) Type mismatch between external declaration and actual object 150declaration detected 1512) Type mismatch between multiple external declarations detected 152 153iASL: Implemented new error messages for External operators that specify 154a ReturnType and/or ParameterTypesList for any object type other than 155control methods (MethodObj). 156New error messages: 1571) Return type is only allowed for Externals declared as MethodObj 1582) Parameter type is only allowed for Externals declared as MethodObj 159 160iASL: Implemented two new remark/warning messages for ASL code that 161creates named objects from within a control method. This is very 162inefficient since the named object must be created and deleted each time 163the method is executed. 164New messages: 1651) Creation of named objects within a method is highly inefficient, use 166globals or method local variables instead (remark) 1672) Static OperationRegion should be declared outside control method 168(warning) 169 170iASL: Improved illegal forward reference detection by adding support to 171detect forward-reference method invocations. 172 173iASL: Detect and issue an error message for NameStrings that contain too 174many individual NameSegs (>255). This is an AML limitation that is 175defined in the ACPI specification. 176New message: 1771) NameString contains too many NameSegs (>255) 178 179acpidump: windows: use GetSystemFirmwareTable API for all tables except 180SSDT. By using this API, acpidump is able to get all tables in the XSDT 181 182iASL: Removed unused parser file and updated msvc2017 project files. 183Removed the obsolete AslCompiler.y from the repository. 184 185iASL: msvc2017: Fixed macros in the file dependency list to prevent 186unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 187 188Disassembler: Prevent spilling error messages to the output file. All 189errors are directed to the console instead. These error messages 190prevented re-compilation of the resulting disassembled ASL output file 191(.DSL). 192 193 194---------------------------------------- 19510 January 2020. Summary of changes for version 20200110: 196 197 1981) ACPICA kernel-resident subsystem: 199 200Updated all copyrights to 2020. This affects all ACPICA source code 201modules. 202 203 2042) iASL Compiler/Disassembler and ACPICA tools: 205 206ASL test suite (ASLTS): Updated all copyrights to 2020. 207 208Tools and utilities: Updated all signon copyrights to 2020. 209 210iASL: fix forward reference analysis for field declarations. Fixes 211forward reference analysis for field declarations by searching the 212parent scope for the named object when the object is not present in 213the current scope. 214 215iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 216full pathname of the name that already exists is printed. 217 218iASL: Enhance duplicate Case() detection for buffers. Add check for 219buffers with no initializer list (these buffers will be filled with 220zeros at runtime.) 221 222 223---------------------------------------- 22413 December 2019. Summary of changes for version 20191213: 225 226 2271) ACPICA kernel-resident subsystem: 228 229Return a Buffer object for all fields created via the CreateField 230operator. Previously, an Integer would be returned if the size of 231the field was less than or equal to the current size of an Integer. 232Although this goes against the ACPI specification, it provides 233compatibility with other ACPI implementations. Also updated the 234ASLTS test suite to reflect this new behavior. 235 2362) iASL Compiler/Disassembler and ACPICA tools: 237 238iASL: Implemented detection of (and throw an error for) duplicate 239values for Case statements within a single Switch statement. Duplicate 240Integers, Strings, and Buffers are supported. 241 242iASL: Fix error logging issue during multiple file compilation -- 243Switch to the correct input file during error node creation. 244 245iASL: For duplicate named object creation, now emit an error instead 246of a warning - since this will cause a runtime error. 247 248AcpiSrc: Add unix line-ending support for non-Windows builds. 249 250iASL: Add an error condition for an attempt to create a NameString 251with > 255 NameSegs (the max allowable via the AML definition). 252 253 254---------------------------------------- 25518 October 2019. Summary of changes for version 20191018: 256 257 2581) ACPICA kernel-resident subsystem: 259 260Debugger: added a new command: ?Fields [address space ID]?. This command 261dumps the contents of all field units that are defined within the 262namespace with a particular address space ID. 263 264Modified the external interface AcpiLoadTable() to return a table index. 265This table index can be used for unloading a table for debugging. 266 ACPI_STATUS 267 AcpiLoadTable ( 268 ACPI_TABLE_HEADER *Table, 269 UINT32 *TableIndex)) 270 271Implemented a new external interface: AcpiUnloadTable() This new function 272takes a table index as an argument and unloads the table. Useful for 273debugging only. 274 ACPI_STATUS 275 AcpiUnloadTable ( 276 UINT32 TableIndex)) 277 278Ported the AcpiNames utility to use the new table initialization 279sequence. The utility was broken before this change. Also, it was 280required to include most of the AML interpreter into the utility in order 281to process table initialization (module-level code execution.) 282 283Update for results from running Clang V8.0.1. This fixes all "dead 284assignment" warnings. There are still several "Dereference of NULL 285pointer" warnings, but these have been found to be false positive 286warnings. 287 288 2892) iASL Compiler/Disassembler and ACPICA tools: 290 291iASL: numerous table compiler changes to ensure that the usage of 292yacc/bison syntax is POSIX-compliant. 293 294iASL/disassembler: several simple bug fixes in the data table 295disassembler. 296 297Acpiexec: expanded the initialization file (the -fi option) to initialize 298strings, buffers, packages, and field units. 299 300 301---------------------------------------- 30216 August 2019. Summary of changes for version 20190816: 303 304This release is available at https://acpica.org/downloads 305 306 3071) ACPICA kernel-resident subsystem: 308 309Modified the OwnerId mechanism to allow for more Owner Ids. The previous 310limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 311exceptions on machines with a large number of initialization threads, 312many CPU cores and nested initialization control methods. 313 314Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 315checking if the given GPE (as represented by a GPE device handle and a 316GPE number) is currently active and dispatching it (if that's the case) 317outside of interrupt context. 318 319Table load: exit the interpreter before initializing objects within the 320new table This prevents re-acquiring the interpreter lock when loading 321tables 322 323Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 324uk Kim 325 326Macros: removed pointer math on a null pointer. Causes warnings on some 327compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 328instead of using arithmetic. 329 330Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 331across all "printf-like" internal functions. Also, cleanup all calls to 332such functions (both in 32-bit mode and 64-bit mode) now that they are 333analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 334 335 3362) iASL Compiler/Disassembler and ACPICA tools: 337 338iASL: implemented a new data table compiler flex/bison front-end. This 339change is internal and is not intended to result in changes to the 340compiled code. This new compiler front-end can be invoked using the -tp 341option for now, until the old mechanism is removed. 342 343ASLTS: Implemented a new data table compiler test suite. This test suite 344generates all table templates and compile/disassemble/re-compile/binary- 345compare each file. 346 347iASL: return -1 if AML files were not generated due to compiler errors 348 349iASL: added a warning on use of the now-legacy ASL Processor () keyword. 350 351iASL: added an error on _UID object declaration that returns a String 352within a Processor () declaration. A _UID for a processor must be an 353Integer. 354 355iASL: added a null terminator to name strings that consist only of 356multiple parent prefixes (^) 357 358iASL: added support to compile both ASL and data table files in a single 359command. 360 361Updated the tool generation project files that were recently migrated to 362MSVC 2017 to eliminate all new warnings. The new project files appear in 363the directory \acpica\generate\msvc2017. This change effectively 364deprecates the older project files in \acpica\generate\msvc9. 365 366 367---------------------------------------- 36803 July 2019. Summary of changes for version 20190703: 369 370 3711) ACPICA kernel-resident subsystem: 372 373Remove legacy module-level support code. There were still some remnants 374of the legacy module-level code executions. Since we no longer support 375this option, this is essentially dead code and has been removed from the 376ACPICA source. 377 378iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 379scope. If these named objects are declared outside the root scope, they 380will not be invoked by any host Operating System. 381 382Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 383one) can be enabled in two situations. First, the GPEs with existing _Lxx 384and _Exx methods are enabled implicitly by ACPICA during system 385initialization. Second, the GPEs without these methods (like GPEs listed 386by _PRW objects for wakeup devices) need to be enabled directly by the 387code that is going to use them (e.g. ACPI power management or device 388drivers). 389 390In the former case, if the status of a given GPE is set to start with, 391its handler method (either _Lxx or _Exx) needs to be invoked to take care 392of the events (possibly) signaled before the GPE was enabled. In the 393latter case, however, the first caller of AcpiEnableGpe() for a given GPE 394should not be expected to care about any events that might be signaled 395through it earlier. In that case, it is better to clear the status of 396the GPE before enabling it, to prevent stale events from triggering 397unwanted actions (like spurious system resume, for example). 398 399For this reason, modify AcpiEvAddGpeReference() to take an additional 400boolean argument indicating whether or not the GPE status needs to be 401cleared when its reference counter changes from zero to one and make 402AcpiEnableGpe() pass TRUE to it through that new argument. 403 404 4052) iASL Compiler/Disassembler and ACPICA tools: 406 407The tool generation process has been migrated to MSVC 2017, and all 408project files have been upgraded. The new project files appear in the 409directory \acpica\generate\msvc2017. This change effectively deprecates 410the older project files in \acpica\generate\msvc9. 411 412iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 413scope. If these named objects are declared outside the root scope, they 414will not be invoked by any host Operating System 415 416---------------------------------------- 41709 May 2019. Summary of changes for version 20190509: 418 419 4201) ACPICA kernel-resident subsystem: 421 422Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 423them") that causes problems with Thunderbolt controllers to occur if a 424dock device is connected at init time (the xhci_hcd and thunderbolt 425modules crash which prevents peripherals connected through them from 426working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 427Dispatch active GPEs at init time") to get undone, so the problem 428addressed by commit ecc1165b8b74 appears again as a result of it. 429 430 4312) iASL Compiler/Disassembler and ACPICA tools: 432 433Reverted iASL: Additional forward reference detection. This change 434reverts forward reference detection for field declarations. The feature 435unintentionally emitted AML bytecode with incorrect package lengths for 436some ASL code related to Fields and OperationRegions. This malformed AML 437can cause systems to crash 438during boot. The malformed AML bytecode is emitted in iASL version 43920190329 and 20190405. 440 441iASL: improve forward reference detection. This change improves forward 442reference detection for named objects inside of scopes. If a parse object 443has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 444a named object that is declared later in the AML bytecode. This is 445allowed if the reference is inside of a method and the declaration is 446outside of a method like so: 447 448DefinitionBlock(...) 449{ 450 Method (TEST) 451 { 452 Return (NUM0) 453 } 454 Name (NUM0,0) 455} 456 457However, if the declaration and reference are both in the same method or 458outside any methods, this is a forward reference and should be marked as 459an error because it would result in runtime errors. 460 461DefinitionBlock(...) 462{ 463 Name (BUFF, Buffer (NUM0) {}) // Forward reference 464 Name (NUM0, 0x0) 465 466 Method (TEST) 467 { 468 Local0 = NUM1 469 Name (NUM1, 0x1) // Forward reference 470 return (Local0) 471 } 472} 473 474iASL: Implemented additional buffer overflow analysis for BufferField 475declarations. Check if a buffer index argument to a create buffer field 476operation is beyond the end of the target buffer. 477 478This affects these AML operators: 479 480 AML_CREATE_FIELD_OP 481 AML_CREATE_BIT_FIELD_OP 482 AML_CREATE_BYTE_FIELD_OP 483 AML_CREATE_WORD_FIELD_OP 484 AML_CREATE_DWORD_FIELD_OP 485 AML_CREATE_QWORD_FIELD_OP 486 487 There are three conditions that must be satisfied in order to allow this 488validation at compile time: 489 490 1) The length of the target buffer must be an integer constant 491 2) The index specified in the create* must be an integer constant 492 3) For CreateField, the bit length argument must be non-zero. 493 494Example: 495 Name (BUF1, Buffer() {1,2}) 496 CreateField (BUF1, 7, 9, CF03) // 3: ERR 497 498dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 499Error 6165 - ^ Buffer index beyond end of 500target buffer 501 502 503---------------------------------------- 50405 April 2019. Summary of changes for version 20190405: 505 506 5071) ACPICA kernel-resident subsystem: 508 509Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 510unconditionally clearing ACPI IRQs during suspend/resume") was added 511earlier to stop clearing of event status bits unconditionally on suspend 512and resume paths. Though this change fixed an issue on suspend path, it 513introduced regressions on several resume paths. In the case of S0ix, 514events are enabled as part of device suspend path. If status bits for the 515events are set when they are enabled, it could result in premature wake 516from S0ix. If status is cleared for any event that is being enabled so 517that any stale events are cleared out. In case of S0ix, events are 518enabled as part of device suspend path. If status bits for the events are 519set when they are enabled, it could result in premature wake from S0ix. 520 521This change ensures that status is cleared for any event that is being 522enabled so that any stale events are cleared out. 523 524 5252) iASL Compiler/Disassembler and ACPICA tools: 526 527iASL: Implemented an enhanced multiple file compilation that combines 528named objects from all input files to a single namespace. With this 529feature, any unresolved external declarations as well as duplicate named 530object declarations can be detected during compilation rather than 531generating errors much later at runtime. The following commands are 532examples that utilize this feature: 533 iasl dsdt.asl ssdt.asl 534 iasl dsdt.asl ssdt1.asl ssdt2.asl 535 iasl dsdt.asl ssdt*.asl 536 537---------------------------------------- 53829 March 2019. Summary of changes for version 20190329: 539 540 5411) ACPICA kernel-resident subsystem: 542 543Namespace support: Remove the address nodes from global list after method 544termination. The global address list contains pointers to namespace nodes 545that represent Operation Regions. This change properly removes Operation 546Region namespace nodes that are declared dynamically during method 547execution. 548 549Linux: Use a different debug default than ACPICA. There was a divergence 550between Linux and the ACPICA codebases. In order to resolve this 551divergence, Linux now declares its own debug default in aclinux.h 552 553Renamed some internal macros to improve code understanding and 554maintenance. The macros below all operate on single 4-character ACPI 555NameSegs, not generic strings (old -> new): 556 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 557 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 558 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 559 560Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 561table. 562 563Test suite: Update makefiles, add PCC operation region support 564 565 5662) iASL Compiler/Disassembler and Tools: 567 568iASL: Implemented additional illegal forward reference detection. Now 569detect and emit an error upon detection of a forward reference from a 570Field to an Operation Region. This will fail at runtime if allowed to 571pass the compiler. 572 573AcpiExec: Add an address list check for dynamic Operation Regions. This 574feature performs a sanity test for each node the global address list. 575This is done in order to ensure that all dynamic operation regions are 576properly removed from the global address list and no dangling pointers 577are left behind. 578 579Disassembler: Improved generation of resource pathnames. This change 580improves the code that generates resource descriptor and resource tag 581pathnames. The original code used a bunch of str* C library functions 582that caused warnings on some compilers. 583 584iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 585function can overwrite buffers if the calling code is not very careful. 586In the case of generating a module/table header, use of memmove is a 587better implementation. 588 589 5903) Status of new features that have not been completed at this time: 591 592iASL: Implementing an enhanced multiple file compilation into a single 593namespace feature (Status): This feature will be released soon, and 594allows multiple ASL files to be compiled into the same single namespace. 595By doing so, any unresolved external declarations as well as duplicate 596named object declarations can be detected during compilation (rather than 597later during runtime). The following commands are examples that utilize 598this feature: 599 iasl dsdt.asl ssdt.asl 600 iasl dsdt.asl ssdt1.asl ssdt2.asl 601 iasl dsdt.asl ssdt*.asl 602 603ASL tutorial status: Feedback is being gathered internally and the 604current plan is to publish this tutorial on the ACPICA website after a 605final review by a tech writer. 606 607---------------------------------------- 60815 February 2019. Summary of changes for version 20190215: 609 610 6110) Support for ACPI specification version 6.3: 612 613Add PCC operation region support for the AML interpreter. This adds PCC 614operation region support in the AML interpreter and a default handler for 615acpiexec. The change also renames the PCC region address space keyword to 616PlatformCommChannel. 617 618Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 619These methods provide OSPM with health information and device boot 620status. 621 622PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 623defines if the trigger needs to be invoked by OSPM before or at the end 624of kernel crash dump processing/handling operation. 625 626SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 627is used for describing devices such as heterogeneous processors, 628accelerators, GPUs, and IO devices with integrated compute or DMA 629engines. 630 631MADT: Add support for statistical profiling in GICC. Statistical 632profiling extension (SPE) is an architecture-specific feature for ARM. 633 634MADT: Add online capable flag. If this bit is set, system hardware 635supports enabling this processor during OS runtime. 636 637New Error Disconnect Recover Notification value. There are a number of 638scenarios where system Firmware in collaboration with hardware may 639disconnect one or more devices from the rest of the system for purposes 640of error containment. Firmware can use this new notification value to 641alert OSPM of such a removal. 642 643PPTT: New additional fields in Processor Structure Flags. These flags 644provide more information about processor topology. 645 646NFIT/Disassembler: Change a field name from "Address Range" to "Region 647Type". 648 649HMAT updates: make several existing fields to be reserved as well as 650rename subtable 0 to "memory proximity domain attributes". 651 652GTDT: Add support for new GTDT Revision 3. This revision adds information 653for the EL2 timer. 654 655iASL: Update the HMAT example template for new fields. 656 657iASL: Add support for the new revision of the GTDT (Rev 3). 658 659 6601) ACPICA kernel-resident subsystem: 661 662AML Parser: fix the main AML parse loop to correctly skip erroneous 663extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 664byte extended opcodes. If an error occurs during an AML table load, the 665AML parser will continue loading the table by skipping the offending 666opcode. This implements a "load table at any cost" philosophy. 667 668 6692) iASL Compiler/Disassembler and Tools: 670 671iASL: Add checks for illegal object references, such as a reference 672outside of method to an object within a method. Such an object is only 673temporary. 674 675iASL: Emit error for creation of a zero-length operation region. Such a 676region is rather pointless. If encountered, a runtime error is also 677implemented in the interpeter. 678 679Debugger: Fix a possible fault with the "test objects" command. 680 681iASL: Makefile: support parent directory filenames containing embedded 682spaces. 683 684iASL: Update the TPM2 template to revision 4. 685 686iASL: Add the ability to report specific warnings or remarks as errors. 687 688Disassembler: Disassemble OEMx tables as actual AML byte code. 689Previously, these tables were treated as "unknown table". 690 691iASL: Add definition and disassembly for TPM2 revision 3. 692 693iASL: Add support for TPM2 rev 3 compilation. 694 695 696---------------------------------------- 69708 January 2019. Summary of changes for version 20190108: 698 699 7001) ACPICA kernel-resident subsystem: 701 702Updated all copyrights to 2019. This affects all source code modules. 703 704 7052) iASL Compiler/Disassembler and Tools: 706 707ASL test suite (ASLTS): Updated all copyrights to 2019. 708 709Tools: Updated all signon copyrights to 2019. 710 711AcpiExec: Added a new option to dump extra information concerning any 712memory leaks detected by the internal object/cache tracking mechanism. - 713va 714 715iASL: Updated the table template for the TPM2 table to the newest version 716of the table (Revision 4) 717 718 719---------------------------------------- 72013 December 2018. Summary of changes for version 20181213: 721 722 7231) ACPICA Kernel-resident Subsystem: 724 725Fixed some buffer length issues with the GenericSerialBus, related to two 726of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 727which are rarely seen in the field. For these, the LEN field of the ASL 728buffer is now ignored. Hans de Goede 729 730Implemented a new object evaluation trace mechanism for control methods 731and data objects. This includes nested control methods. It is 732particularly useful for examining the ACPI execution during system 733initialization since the output is relatively terse. The flag below 734enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 735 #define ACPI_LV_EVALUATION 0x00080000 736 737Examples: 738 Enter evaluation : _SB.PCI0._INI (Method) 739 Exit evaluation : _SB.PCI0._INI 740 Enter evaluation : _OSI (Method) 741 Exit evaluation : _OSI 742 Enter evaluation : _SB.PCI0.TEST (Method) 743 Nested method call : _SB.PCI0.NST1 744 Exit nested method : _SB.PCI0.NST1 745 Exit evaluation : _SB.PCI0.TEST 746 747Added two recently-defined _OSI strings. See 748https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 749osi. 750 "Windows 2018" 751 "Windows 2018.2" 752 753Update for buffer-to-string conversions via the ToHexString ASL operator. 754A "0x" is now prepended to each of the hex values in the output string. 755This provides compatibility with other ACPI implementations. The ACPI 756specification is somewhat vague on this issue. 757 Example output string after conversion: 758"0x01,0x02,0x03,0x04,0x05,0x06" 759 760Return a run-time error for TermArg expressions within individual package 761elements. Although this is technically supported by the ASL grammar, 762other ACPI implementations do not support this either. Also, this fixes a 763fault if this type of construct is ever encountered (it never has been). 764 765 7662) iASL Compiler/Disassembler and Tools: 767 768iASL: Implemented a new compile option (-ww) that will promote individual 769warnings and remarks to errors. This is intended to enhance the firmware 770build process. 771 772AcpiExec: Implemented a new command-line option (-eo) to support the new 773object evaluation trace mechanism described above. 774 775Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 776instead of a "unknown table" message. 777 778AcpiHelp: Improved support for the "special" predefined names such as 779_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 780used for "xx" and "x". 781 782---------------------------------------- 78331 October 2018. Summary of changes for version 20181031: 784 785 786An Operation Region regression was fixed by properly adding address 787ranges to a global list during initialization. This allows OS to 788accurately check for overlapping regions between native devices (such as 789PCI) and Operation regions as well as checking for region conflicts 790between two Operation Regions. 791 792Added support for the 2-byte extended opcodes in the code/feature that 793attempts to continue parsing during the table load phase. Skip parsing 794Device declarations (and other extended opcodes) when an error occurs 795during parsing. Previously, only single-byte opcodes were supported. 796 797Cleanup: Simplified the module-level code support by eliminating a 798useless global variable (AcpiGbl_GroupModuleLeveCode). 799 800 8012) iASL Compiler/Disassembler and Tools: 802 803iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 804could cause a fault in the preprocessor. This was an inadvertent side- 805effect from moving more allocations/frees to the local cache/memory 806mechanism. 807 808iASL: Enhanced error detection by validating that all NameSeg elements 809within a NamePatch actually exist. The previous behavior was spotty at 810best, and such errors could be improperly ignored at compiler time (never 811at runtime, however. There are two new error messages, as shown in the 812examples below: 813 814dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 815Error 6161 - ^ One or more objects within 816the Pathname do not exist (TTTT.BXXX) 817 818dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 819Error 6160 - One or more prefix Scopes do not exist ^ 820(BBBB.CBF1) 821 822iASL: Disassembler/table-compiler: Added support for the static data 823table TPM2 revision 3 (an older version of TPM2). The support has been 824added for the compiler and the disassembler. 825 826Fixed compilation of DOS format data table file on Unix/Linux systems. 827iASL now properly detects line continuations (\) for DOS format data 828table definition language files on when executing on Unix/Linux. 829 830---------------------------------------- 83103 October 2018. Summary of changes for version 20181003: 832 833 8342) iASL Compiler/Disassembler and Tools: 835 836Fixed a regression introduced in version 20180927 that could cause the 837compiler to fault, especially with NamePaths containing one or more 838carats (^). Such as: ^^_SB_PCI0 839 840Added a new remark for the Sleep() operator when the sleep time operand 841is larger than one second. This is a very long time for the ASL/BIOS code 842and may not be what was intended by the ASL writer. 843 844---------------------------------------- 84527 September 2018. Summary of changes for version 20180927: 846 847 8481) ACPICA kernel-resident subsystem: 849 850Updated the GPE support to clear the status of all ACPI events when 851entering any/all sleep states in order to avoid premature wakeups. In 852theory, this may cause some wakeup events to be missed, but the 853likelihood of this is small. This change restores the original behavior 854of the ACPICA code in order to fix a regression seen from the previous 855"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 856This regression could cause some systems to incorrectly wake immediately. 857 858Updated the execution of the _REG methods during initialization and 859namespace loading to bring the behavior into closer conformance to the 860ACPI specification and other ACPI implementations: 861 862From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 863 "Control methods must assume all operation regions are inaccessible 864until the _REG(RegionSpace, 1) method is executed" 865 866 "The exceptions to this rule are: 8671. OSPM must guarantee that the following operation regions are always 868accessible: 869 SystemIO operation regions. 870 SystemMemory operation regions when accessing memory returned by the 871System Address Map reporting interfaces." 872 873Since the state of both the SystemIO and SystemMemory address spaces are 874defined by the specification to never change, this ACPICA change ensures 875that now _REG is never called on them. This solves some problems seen in 876the field and provides compatibility with other ACPI implementations. An 877update to the upcoming new version of the ACPI specification will help 878clarify this behavior. 879 880Updated the implementation of support for the Generic Serial Bus. For the 881"bidirectional" protocols, the internal implementation now automatically 882creates a return data buffer of the maximum size (255). This handles the 883worst-case for data that is returned from the serial bus handler, and 884fixes some problems seen in the field. This new buffer is directly 885returned to the ASL. As such, there is no true "bidirectional" buffer, 886which matches the ACPI specification. This is the reason for the "double 887store" seen in the example ASL code in the specification, shown below: 888 889Word Process Call (AttribProcessCall): 890 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 891 Field(TOP1, BufferAcc, NoLock, Preserve) 892 { 893 FLD1, 8, // Virtual register at command value 1. 894 } 895 896 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 897 // as BUFF 898 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 899 900 Store(0x5416, DATA) // Save 0x5416 into the data buffer 901 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 902transaction 903 // This is the "double store". The write to 904 // FLD1 returns a new buffer, which is stored 905 // back into BUFF with the second Store. 906 907 9082) iASL Compiler/Disassembler and Tools: 909 910iASL: Implemented detection of extraneous/redundant uses of the Offset() 911operator within a Field Unit list. A remark is now issued for these. For 912example, the first two of the Offset() operators below are extraneous. 913Because both the compiler and the interpreter track the offsets 914automatically, these Offsets simply refer to the current offset and are 915unnecessary. Note, when optimization is enabled, the iASL compiler will 916in fact remove the redundant Offset operators and will not emit any AML 917code for them. 918 919 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 920 Field (OPR1) 921 { 922 Offset (0), // Never needed 923 FLD1, 32, 924 Offset (4), // Redundant, offset is already 4 (bytes) 925 FLD2, 8, 926 Offset (64), // OK use of Offset. 927 FLD3, 16, 928 } 929dsdt.asl 14: Offset (0), 930Remark 2158 - ^ Unnecessary/redundant use of Offset 931operator 932 933dsdt.asl 16: Offset (4), 934Remark 2158 - ^ Unnecessary/redundant use of Offset 935operator 936 937---------------------------------------- 93810 August 2018. Summary of changes for version 20180810: 939 940 9411) ACPICA kernel-resident subsystem: 942 943Initial ACPI table loading: Attempt to continue loading ACPI tables 944regardless of malformed AML. Since migrating table initialization to the 945new module-level code support, the AML interpreter rejected tables upon 946any ACPI error encountered during table load. This is a problem because 947non-serious ACPI errors during table load do not necessarily mean that 948the entire definition block (DSDT or SSDT) is invalid. This change 949improves the table loading by ignoring some types of errors that can be 950generated by incorrect AML. This can range from object type errors, scope 951errors, and index errors. 952 953Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 954during suspend/resume. The status of ACPI events is no longer cleared 955when entering the ACPI S5 system state (power off) which caused some 956systems to power up immediately after turning off power in certain 957situations. This was a functional regression. It was fixed by clearing 958the status of all ACPI events again when entering S5 (for system-wide 959suspend or hibernation the clearing of the status of all events is not 960desirable, as it might cause the kernel to miss wakeup events sometimes). 961Rafael Wysocki. 962 963 9642) iASL Compiler/Disassembler and Tools: 965 966AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 967elements listed in the initialization file were previously initialized 968after the table load and before executing module-level code blocks. 969Recent changes in the module-level code support means that the table load 970becomes a large control method execution. If fields are used within 971module-level code and we are executing with the -fi option, the 972initialization values were used to initialize the namespace object(s) 973only after the table was finished loading. This change Provides an early 974initialization of objects specified in the initialization file so that 975field unit values are populated during the table load (not after the 976load). 977 978AcpiExec: Fixed a small memory leak regression that could result in 979warnings during exit of the utility. These warnings were similar to 980these: 981 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 982 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 983 984---------------------------------------- 98529 June 2018. Summary of changes for version 20180629: 986 987 9881) iASL Compiler/Disassembler and Tools: 989 990iASL: Fixed a regression related to the use of the ASL External 991statement. Error checking for the use of the External() statement has 992been relaxed. Previously, a restriction on the use of External meant that 993the referenced named object was required to be defined in a different 994table (an SSDT). Thus it would be an error to declare an object as an 995external and then define the same named object in the same table. For 996example: 997 DefinitionBlock (...) 998 { 999 External (DEV1) 1000 Device (DEV1){...} // This was an error 1001 } 1002However, this behavior has caused regressions in some existing ASL code, 1003because there is code that depends on named objects and externals (with 1004the same name) being declared in the same table. This change will allow 1005the ASL code above to compile without errors or warnings. 1006 1007iASL: Implemented ASL language extensions for four operators to make some 1008of their arguments optional instead of required: 1009 1) Field (RegionName, AccessType, LockRule, UpdateRule) 1010 2) BankField (RegionName, BankName, BankValue, 1011 AccessType, LockRule, UpdateRule) 1012 3) IndexField (IndexName, DataName, 1013 AccessType, LockRule, UpdateRule) 1014For the Field operators above, the AccessType, LockRule, and UpdateRule 1015are now optional arguments. The default values are: 1016 AccessType: AnyAcc 1017 LockRule: NoLock 1018 UpdateRule: Preserve 1019 4) Mutex (MutexName, SyncLevel) 1020For this operator, the SyncLevel argument is now optional. This argument 1021is rarely used in any meaningful way by ASL code, and thus it makes sense 1022to make it optional. The default value is: 1023 SyncLevel: 0 1024 1025iASL: Attempted use of the ASL Unload() operator now results in the 1026following warning: 1027 "Unload is not supported by all operating systems" 1028This is in fact very true, and the Unload operator may be completely 1029deprecated in the near future. 1030 1031AcpiExec: Fixed a regression for the -fi option (Namespace initialization 1032file. Recent changes in the ACPICA module-level code support altered the 1033table load/initialization sequence . This means that the table load has 1034become a large method execution of the table itself. If Operation Region 1035Fields are used within any module-level code and the -fi option was 1036specified, the initialization values were populated only after the table 1037had completely finished loading (and thus the module-level code had 1038already been executed). This change moves the initialization of objects 1039listed in the initialization file to before the table is executed as a 1040method. Field unit values are now initialized before the table execution 1041is performed. 1042 1043---------------------------------------- 104431 May 2018. Summary of changes for version 20180531: 1045 1046 10471) ACPICA kernel-resident Subsystem: 1048 1049Implemented additional support to help ensure that a DSDT or SSDT is 1050fully loaded even if errors are incurred during the load. The majority of 1051the problems that are seen is the failure of individual AML operators 1052that occur during execution of any module-level code (MLC) existing in 1053the table. This support adds a mechanism to abort the current ASL 1054statement (AML opcode), emit an error message, and to simply move on to 1055the next opcode -- instead of aborting the entire table load. This is 1056different than the execution of a control method where the entire method 1057is aborted upon any error. The goal is to perform a very "best effort" to 1058load the ACPI tables. The most common MLC errors that have been seen in 1059the field are direct references to unresolved ASL/AML symbols (referenced 1060directly without the use of the CondRefOf operator to validate the 1061symbol). This new ACPICA behavior is now compatible with other ACPI 1062implementations. 1063 1064Interpreter: The Unload AML operator is no longer supported for the 1065reasons below. An AE_NOT_IMPLEMENTED exception is returned. 10661) A correct implementation on at least some hosts may not be possible. 10672) Other ACPI implementations do not correctly/fully support it. 10683) It requires host device driver support which is not known to exist. 1069 (To properly support namespace unload out from underneath.) 10704) This AML operator has never been seen in the field. 1071 1072Parser: Added a debug option to dump AML parse sub-trees as they are 1073being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 1074ACPI_DB_PARSE_TREES. 1075 1076Debugger: Reduced the verbosity for errors incurred during table load and 1077module-level code execution. 1078 1079Completed an investigation into adding a namespace node "owner list" 1080instead of the current "owner ID" associated with namespace nodes. This 1081list would link together all nodes that are owned by an individual 1082control method. The purpose would be to enhance control method execution 1083by speeding up cleanup during method exit (all namespace nodes created by 1084a method are deleted upon method termination.) Currently, the entire 1085namespace must be searched for matching owner IDs if (and only if) the 1086method creates named objects outside of the local scope. However, by far 1087the most common case is that methods create objects locally, not outside 1088the method scope. There is already an ACPICA optimization in place that 1089only searches the entire namespace in the rare case of a method creating 1090objects elsewhere in the namespace. Therefore, it is felt that the 1091overhead of adding an additional pointer to each namespace node to 1092implement the owner list makes this feature unnecessary. 1093 1094 10952) iASL Compiler/Disassembler and Tools: 1096 1097iASL, Disassembler, and Template generator: Implemented support for 1098Revision D of the IORT table. Adds a new subtable that is used to specify 1099SMMUv3 PMCGs. rmurphy-arm. 1100 1101Disassembler: Restored correct table header validation for the "special" 1102ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 1103table header and must be special-cased. This was a regression that has 1104been present for apparently a long time. 1105 1106AcpiExec: Reduced verbosity of the local exception handler implemented 1107within acpiexec. This handler is invoked by ACPICA upon any exceptions 1108generated during control method execution. A new option was added: -vh 1109restores the original verbosity level if desired. 1110 1111AcpiExec: Changed the default base from decimal to hex for the -x option 1112(set debug level). This simplifies the use of this option and matches the 1113behavior of the corresponding iASL -x option. 1114 1115AcpiExec: Restored a force-exit on multiple control-c (sigint) 1116interrupts. This allows program termination even if other issues cause 1117the control-c to fail. 1118 1119ASL test suite (ASLTS): Added tests for the recently implemented package 1120element resolution mechanism that allows forward references to named 1121objects from individual package elements (this mechanism provides 1122compatibility with other ACPI implementations.) 1123 1124 1125---------------------------------------- 11268 May 2018. Summary of changes for version 20180508: 1127 1128 11291) ACPICA kernel-resident subsystem: 1130 1131Completed the new (recently deployed) package resolution mechanism for 1132the Load and LoadTable ASL/AML operators. This fixes a regression that 1133was introduced in version 20180209 that could result in an 1134AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 1135(SSDT) that contains package objects. 1136 1137 11382) iASL Compiler/Disassembler and Tools: 1139 1140AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 11411 MB. This change allows for table offsets within the acpidump file to be 1142up to 8 characters. These changes are backwards compatible with existing 1143acpidump files. 1144 1145 1146---------------------------------------- 114727 April 2018. Summary of changes for version 20180427: 1148 1149 11501) ACPICA kernel-resident subsystem: 1151 1152Debugger: Added support for Package objects in the "Test Objects" 1153command. This command walks the entire namespace and evaluates all named 1154data objects (Integers, Strings, Buffers, and now Packages). 1155 1156Improved error messages for the namespace root node. Originally, the root 1157was referred to by the confusing string "\___". This has been replaced by 1158"Namespace Root" for clarification. 1159 1160Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 1161Ian King <colin.king@canonical.com>. 1162 1163 11642) iASL Compiler/Disassembler and Tools: 1165 1166iASL: Implemented support to detect and flag illegal forward references. 1167For compatibility with other ACPI implementations, these references are 1168now illegal at the root level of the DSDT or SSDTs. Forward references 1169have always been illegal within control methods. This change should not 1170affect existing ASL/AML code because of the fact that these references 1171have always been illegal in the other ACPI implementation. 1172 1173iASL: Added error messages for the case where a table OEM ID and OEM 1174TABLE ID strings are longer than the ACPI-defined length. Previously, 1175these strings were simply silently truncated. 1176 1177iASL: Enhanced the -tc option (which creates an AML hex file in C, 1178suitable for import into a firmware project): 1179 1) Create a unique name for the table, to simplify use of multiple 1180SSDTs. 1181 2) Add a protection #ifdef in the file, similar to a .h header file. 1182With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 1183evan.lloyd@arm.com 1184 1185AcpiExec: Added a new option, -df, to disable the local fault handler. 1186This is useful during debugging, where it may be desired to drop into a 1187debugger on a fault. 1188 1189---------------------------------------- 119013 March 2018. Summary of changes for version 20180313: 1191 1192 11931) ACPICA kernel-resident subsystem: 1194 1195Implemented various improvements to the GPE support: 1196 11971) Dispatch all active GPEs at initialization time so that no GPEs are 1198lost. 11992) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 1200before devices are enumerated. 12013) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 1202IRQs are not lost. 12034) Add parallel GPE handling to eliminate the possibility of dispatching 1204the same GPE twice. 12055) Dispatch any pending GPEs after enabling for the first time. 1206 1207AcpiGetObjectInfo - removed support for the _STA method. This was causing 1208problems on some platforms. 1209 1210Added a new _OSI string, "Windows 2017.2". 1211 1212Cleaned up and simplified the module-level code support. These changes 1213are in preparation for the eventual removal of the legacy MLC support 1214(deferred execution), replaced by the new MLC architecture which executes 1215the MLC as a table is loaded (DSDT/SSDTs). 1216 1217Changed a compile-time option to a runtime option. Changes the option to 1218ignore ACPI table load-time package resolution errors into a runtime 1219option. Used only for platforms that generate many AE_NOT_FOUND errors 1220during boot. AcpiGbl_IgnorePackageResolutionErrors. 1221 1222Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 1223ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 1224compilation errors from unused variables (seen with some compilers). 1225 1226 12272) iASL Compiler/Disassembler and Tools: 1228 1229ASLTS: parallelized execution in order to achieve an (approximately) 2X 1230performance increase. 1231 1232ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 1233error reporting. 1234 1235---------------------------------------- 123609 February 2018. Summary of changes for version 20180209: 1237 1238 12391) ACPICA kernel-resident subsystem: 1240 1241Completed the final integration of the recent changes to Package Object 1242handling and the module-level AML code support. This allows forward 1243references from individual package elements when the package object is 1244declared from within module-level code blocks. Provides compatibility 1245with other ACPI implementations. 1246 1247The new architecture for the AML module-level code has been completed and 1248is now the default for the ACPICA code. This new architecture executes 1249the module-level code in-line as the ACPI table is loaded/parsed instead 1250of the previous architecture which deferred this code until after the 1251table was fully loaded. This solves some ASL code ordering issues and 1252provides compatibility with other ACPI implementations. At this time, 1253there is an option to fallback to the earlier architecture, but this 1254support is deprecated and is planned to be completely removed later this 1255year. 1256 1257Added a compile-time option to ignore AE_NOT_FOUND exceptions during 1258resolution of named reference elements within Package objects. Although 1259this is potentially a serious problem, it can generate a lot of 1260noise/errors on platforms whose firmware carries around a bunch of unused 1261Package objects. To disable these errors, define 1262ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 1263errors are always reported for ACPICA applications such as AcpiExec. 1264 1265Fixed a regression related to the explicit type-conversion AML operators 1266(ToXXXX). The regression was introduced early in 2017 but was not seen 1267until recently because these operators are not fully supported by other 1268ACPI implementations and are thus rarely used by firmware developers. The 1269operators are defined by the ACPI specification to not implement the 1270"implicit result object conversion". The regression incorrectly 1271introduced this object conversion for the following explicit conversion 1272operators: 1273 ToInteger 1274 ToString 1275 ToBuffer 1276 ToDecimalString 1277 ToHexString 1278 ToBCD 1279 FromBCD 1280 1281 12822) iASL Compiler/Disassembler and Tools: 1283 1284iASL: Fixed a problem with the compiler constant folding feature as 1285related to the ToXXXX explicit conversion operators. These operators do 1286not support the "implicit result object conversion" by definition. Thus, 1287ASL expressions that use these operators cannot be folded to a simple 1288Store operator because Store implements the implicit conversion. This 1289change uses the CopyObject operator for the ToXXXX operator folding 1290instead. CopyObject is defined to not implement implicit result 1291conversions and is thus appropriate for folding the ToXXXX operators. 1292 1293iASL: Changed the severity of an error condition to a simple warning for 1294the case where a symbol is declared both locally and as an external 1295symbol. This accommodates existing ASL code. 1296 1297AcpiExec: The -ep option to enable the new architecture for module-level 1298code has been removed. It is replaced by the -dp option which instead has 1299the opposite effect: it disables the new architecture (the default) and 1300enables the legacy architecture. When the legacy code is removed in the 1301future, the -dp option will be removed also. 1302 1303---------------------------------------- 130405 January 2018. Summary of changes for version 20180105: 1305 1306 13071) ACPICA kernel-resident subsystem: 1308 1309Updated all copyrights to 2018. This affects all source code modules. 1310 1311Fixed a possible build error caused by an unresolved reference to the 1312AcpiUtSafeStrncpy function. 1313 1314Removed NULL pointer arithmetic in the various pointer manipulation 1315macros. All "(void *) NULL" constructs are converted to "(void *) 0". 1316This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 1317 1318Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 1319Mittal. 1320 1321 13222) iASL Compiler/Disassembler and Tools: 1323 1324ASLTS: Updated all copyrights to 2018. 1325 1326Tools: Updated all signon copyrights to 2018. 1327 1328AcpiXtract: Fixed a regression related to ACPI table signatures where the 1329signature was truncated to 3 characters (instead of 4). 1330 1331AcpiExec: Restore the original terminal mode after the use of the -v and 1332-vd options. 1333 1334ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 1335 1336---------------------------------------- 133714 December 2017. Summary of changes for version 20171214: 1338 1339 13401) ACPICA kernel-resident subsystem: 1341 1342Fixed a regression in the external (public) AcpiEvaluateObjectTyped 1343interface where the optional "pathname" argument had inadvertently become 1344a required argument returning an error if omitted (NULL pointer 1345argument). 1346 1347Fixed two possible memory leaks related to the recently developed "late 1348resolution" of reference objects within ASL Package Object definitions. 1349 1350Added two recently defined _OSI strings: "Windows 2016" and "Windows 13512017". Mario Limonciello. 1352 1353Implemented and deployed a safer version of the C library function 1354strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 1355creation of unterminated strings as a possible result of a standard 1356strncpy. 1357 1358Cleaned up and restructured the global variable file (acglobal.h). There 1359are many changes, but no functional changes. 1360 1361 13622) iASL Compiler/Disassembler and Tools: 1363 1364iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 1365optional OemData field at the end of the table was incorrectly required 1366for proper compilation. It is now correctly an optional field. 1367 1368ASLTS: The entire suite was converted from standard ASL to the ASL+ 1369language, using the ASL-to-ASL+ converter which is integrated into the 1370iASL compiler. A binary compare of all output files has verified the 1371correctness of the conversion. 1372 1373iASL: Fixed the source code build for platforms where "char" is unsigned. 1374This affected the iASL lexer only. Jung-uk Kim. 1375 1376---------------------------------------- 137710 November 2017. Summary of changes for version 20171110: 1378 1379 13801) ACPICA kernel-resident subsystem: 1381 1382This release implements full support for ACPI 6.2A: 1383 NFIT - Added a new subtable, "Platform Capabilities Structure" 1384No other changes to ACPICA were required, since ACPI 6.2A is primarily an 1385errata release of the specification. 1386 1387Other ACPI table changes: 1388 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 1389 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 1390Linton 1391 1392Utilities: Modified the string/integer conversion functions to use 1393internal 64-bit divide support instead of a native divide. On 32-bit 1394platforms, a 64-bit divide typically requires a library function which 1395may not be present in the build (kernel or otherwise). 1396 1397Implemented a targeted error message for timeouts returned from the 1398Embedded Controller device driver. This is seen frequently enough to 1399special-case an AE_TIME returned from an EC operation region access: 1400 "Timeout from EC hardware or EC device driver" 1401 1402Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 1403runtime error messages have the identical prefix. 1404 1405 14062) iASL Compiler/Disassembler and Tools: 1407 1408AcpiXtract: Fixed a problem with table header detection within the 1409acpidump file. Processing a table could be ended early if a 0x40 (@) 1410appears in the original binary table, resulting in the @ symbol appearing 1411in the decoded ASCII field at the end of the acpidump text line. The 1412symbol caused acpixtract to incorrectly think it had reached the end of 1413the current table and the beginning of a new table. 1414 1415AcpiXtract: Added an option (-f) to ignore some errors during table 1416extraction. This initial implementation ignores non-ASCII and non- 1417printable characters found in the acpidump text file. 1418 1419TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 1420for ASLTS. This feature is used to track memory allocations from 1421different memory caches within the ACPICA code. At the end of an ASLTS 1422run, these memory statistics are recorded and stored in a log file. 1423 1424Debugger (user-space version): Implemented a simple "Background" command. 1425Creates a new thread to execute a control method in the background, while 1426control returns to the debugger prompt to allow additional commands. 1427 Syntax: Background <Namepath> [Arguments] 1428 1429---------------------------------------- 143029 September 2017. Summary of changes for version 20170929: 1431 1432 14331) ACPICA kernel-resident subsystem: 1434 1435Redesigned and implemented an improved ASL While() loop timeout 1436mechanism. This mechanism is used to prevent infinite loops in the kernel 1437AML interpreter caused by either non-responsive hardware or incorrect AML 1438code. The new implementation uses AcpiOsGetTimer instead of a simple 1439maximum loop count, and is thus more accurate and constant across 1440different machines. The default timeout is currently 30 seconds, but this 1441may be adjusted later. 1442 1443Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 1444better reflect the new implementation of the loop timeout mechanism. 1445 1446Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 1447and to fix an off-by-one error. Jung-uk Kim. 1448 1449Fixed an EFI build problem by updating the makefiles to for a new file 1450that was added, utstrsuppt.c 1451 1452 14532) iASL Compiler/Disassembler and Tools: 1454 1455Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 1456includes support in the table disassembler, compiler, and template 1457generator. 1458 1459iASL: Added an exception for an illegal type of recursive method 1460invocation. If a method creates named objects, the first recursive call 1461will fail at runtime. This change adds an error detection at compile time 1462to catch the problem up front. Note: Marking such a method as 1463"serialized" will not help with this problem, because the same thread can 1464acquire the method mutex more than once. Example compiler and runtime 1465output: 1466 1467 Method (MTH1) 1468 { 1469 Name (INT1, 1) 1470 MTH1 () 1471 } 1472 1473 dsdt.asl 22: MTH1 () 1474 Error 6152 - ^ Illegal recursive call to method 1475 that creates named objects (MTH1) 1476 1477Previous runtime exception: 1478 ACPI Error: [INT1] Namespace lookup failure, 1479 AE_ALREADY_EXISTS (20170831/dswload2-465) 1480 1481iASL: Updated support for External() opcodes to improve namespace 1482management and error detection. These changes are related to issues seen 1483with multiple-segment namespace pathnames within External declarations, 1484such as below: 1485 1486 External(\_SB.PCI0.GFX0, DeviceObj) 1487 External(\_SB.PCI0.GFX0.ALSI) 1488 1489iASL: Implemented support for multi-line error/warning messages. This 1490enables more detailed and helpful error messages as below, from the 1491initial deployment for the duplicate names error: 1492 1493 DSDT.iiii 1692: Device(PEG2) { 1494 Error 6074 - ^ Name already exists in scope 1495(PEG2) 1496 1497 Original name creation/declaration below: 1498 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 1499 1500AcpiXtract: Added additional flexibility to support differing input hex 1501dump formats. Specifically, hex dumps that contain partial disassembly 1502and/or comments within the ACPI table data definition. There exist some 1503dump utilities seen in the field that create this type of hex dump (such 1504as Simics). For example: 1505 1506 DSDT @ 0xdfffd0c0 (10999 bytes) 1507 Signature DSDT 1508 Length 10999 1509 Revision 1 1510 Checksum 0xf3 (Ok) 1511 OEM_ID BXPC 1512 OEM_table_id BXDSDT 1513 OEM_revision 1 1514 Creator_id 1280593481 1515 Creator_revision 537399345 1516 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 1517 ... 1518 2af0: 5f 4c 30 46 00 a4 01 1519 1520Test suite: Miscellaneous changes/fixes: 1521 More cleanup and simplification of makefiles 1522 Continue compilation of test cases after a compile failure 1523 Do not perform binary compare unless both files actually exist 1524 1525iASL: Performed some code/module restructuring. Moved all memory 1526allocation functions to new modules. Two new files, aslallocate.c and 1527aslcache.c 1528 1529---------------------------------------- 153031 August 2017. Summary of changes for version 20170831: 1531 1532 15331) ACPICA kernel-resident subsystem: 1534 1535Implemented internal support for full 64-bit addresses that appear in all 1536Generic Address Structure (GAS) structures. Previously, only the lower 32 1537bits were used. Affects the use of GAS structures in the FADT and other 1538tables, as well as the GAS structures passed to the AcpiRead and 1539AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 1540 1541Added header support for the PDTT ACPI table (Processor Debug Trigger 1542Table). Full support in the iASL Data Table Compiler and disassembler is 1543forthcoming. 1544 1545 15462) iASL Compiler/Disassembler and Tools: 1547 1548iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 1549Properties Topology Table) where a flag bit was specified in the wrong 1550bit position ("Line Size Valid", bit 6). 1551 1552iASL: Implemented support for Octal integer constants as defined by the 1553ASL language grammar, per the ACPI specification. Any integer constant 1554that starts with a zero is an octal constant. For example, 1555 Store (037777, Local0) /* Octal constant */ 1556 Store (0x3FFF, Local0) /* Hex equivalent */ 1557 Store (16383, Local0) /* Decimal equivalent */ 1558 1559iASL: Improved overflow detection for 64-bit string conversions during 1560compilation of integer constants. "Overflow" in this case means a string 1561that represents an integer that is too large to fit into a 64-bit value. 1562Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 1563the low-order 32 bits with a warning, as previously implemented. Several 1564new exceptions are defined that indicate a 64-bit overflow, as well as 1565the base (radix) that was used during the attempted conversion. Examples: 1566 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 1567 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 1568 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 1569 1570iASL: Added a warning for the case where a ResourceTemplate is declared 1571with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 1572this case, the resulting template is created with a single END_TAG 1573descriptor, which is essentially useless. 1574 1575iASL: Expanded the -vw option (ignore specific warnings/remarks) to 1576include compilation error codes as well. 1577 1578---------------------------------------- 157928 July 2017. Summary of changes for version 20170728: 1580 1581 15821) ACPICA kernel-resident subsystem: 1583 1584Fixed a regression seen with small resource descriptors that could cause 1585an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 1586 1587AML interpreter: Implemented a new feature that allows forward references 1588from individual named references within package objects that are 1589contained within blocks of "module-level code". This provides 1590compatibility with other ACPI implementations and supports existing 1591firmware that depends on this feature. Example: 1592 1593 Name (ABCD, 1) 1594 If (ABCD) /* An If() at module-level */ 1595 { 1596 Name (PKG1, Package() 1597 { 1598 INT1 /* Forward reference to object INT1 1599*/ 1600 }) 1601 Name (INT1, 0x1234) 1602 } 1603 1604AML Interpreter: Fixed a problem with the Alias() operator where aliases 1605to some ASL objects were not handled properly. Objects affected are: 1606Mutex, Event, and OperationRegion. 1607 1608AML Debugger: Enhanced to properly handle AML Alias objects. These 1609objects have one level of indirection which was not fully supported by 1610the debugger. 1611 1612Table Manager: Added support to detect and ignore duplicate SSDTs within 1613the XSDT/RSDT. This error in the XSDT has been seen in the field. 1614 1615EFI and EDK2 support: 1616 Enabled /WX flag for MSVC builds 1617 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 1618 Added local support for 64-bit multiply and shift operations 1619 Added support to compile acpidump.efi on Windows 1620 Added OSL function stubs for interfaces not used under EFI 1621 1622Added additional support for the _DMA predefined name. _DMA returns a 1623buffer containing a resource template. This change add support within the 1624resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 1625resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 1626 1627 16282) iASL Compiler/Disassembler and Tools: 1629 1630iASL: Fixed a problem where the internal input line buffer(s) could 1631overflow if there are very long lines in the input ASL source code file. 1632Implemented buffer management that automatically increases the size of 1633the buffers as necessary. 1634 1635iASL: Added an option (-vx) to "expect" particular remarks, warnings and 1636errors. If the specified exception is not raised during compilation, the 1637compiler emits an error. This is intended to support the ASL test suite, 1638but may be useful in other contexts. 1639 1640iASL: Implemented a new predefined macro, __METHOD__, which returns a 1641string containing the name of the current control method that is being 1642compiled. 1643 1644iASL: Implemented debugger and table compiler support for the SDEI ACPI 1645table (Software Delegated Exception Interface). James Morse 1646<james.morse@arm.com> 1647 1648Unix/Linux makefiles: Added an option to disable compile optimizations. 1649The disable occurs when the NOOPT flag is set to TRUE. 1650theracermaster@gmail.com 1651 1652Acpidump: Added support for multiple DSDT and FACS tables. This can occur 1653when there are different tables for 32-bit versus 64-bit. 1654 1655Enhanced error reporting for the ASL test suite (ASLTS) by removing 1656unnecessary/verbose text, and emit the actual line number where an error 1657has occurred. These changes are intended to improve the usefulness of the 1658test suite. 1659 1660---------------------------------------- 166129 June 2017. Summary of changes for version 20170629: 1662 1663 16641) ACPICA kernel-resident subsystem: 1665 1666Tables: Implemented a deferred ACPI table verification. This is useful 1667for operating systems where the tables cannot be verified in the early 1668initialization stage due to early memory mapping limitations on some 1669architectures. Lv Zheng. 1670 1671Tables: Removed the signature validation for dynamically loaded tables. 1672Provides compatibility with other ACPI implementations. Previously, only 1673SSDT tables were allowed, as per the ACPI specification. Now, any table 1674signature can be used via the Load() operator. Lv Zheng. 1675 1676Tables: Fixed several mutex issues that could cause errors during table 1677acquisition. Lv Zheng. 1678 1679Tables: Fixed a problem where an ACPI warning could be generated if a 1680null pointer was passed to the AcpiPutTable interface. Lv Zheng. 1681 1682Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 1683AcpiPutTable interfaces. This applies to the "late stage" table loading 1684when the use of AcpiPutTable is no longer required (since the system 1685memory manager is fully running and available). Lv Zheng. 1686 1687Fixed/Reverted a regression during processing of resource descriptors 1688that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 1689exception in this case. 1690 1691Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 1692I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 1693 1694Interpreter: Fixed a possible fault if an Alias operator with an invalid 1695or duplicate target is encountered during Alias creation in 1696AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 1697 1698Added an option to use designated initializers for function pointers. 1699Kees Cook <keescook@google.com> 1700 1701 17022) iASL Compiler/Disassembler and Tools: 1703 1704iASL: Allow compilation of External declarations with target pathnames 1705that refer to existing named objects within the table. Erik Schmauss. 1706 1707iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 1708FieldUnit name also is declared via External in the same table. Erik 1709Schmauss. 1710 1711iASL: Allow existing scope names within pathnames used in External 1712statements. For example: 1713 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 1714 Device (ABCD) 1715 1716iASL: IORT ACPI table: Implemented changes required to decode the new 1717Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 1718compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 1719 1720Disassembler: Don't abort disassembly on errors from External() 1721statements. Erik Schmauss. 1722 1723Disassembler: fixed a possible fault when one of the Create*Field 1724operators references a Resource Template. ACPICA Bugzilla 1396. 1725 1726iASL: In the source code, resolved some naming inconsistences across the 1727parsing support. Fixes confusion between "Parse Op" and "Parse Node". 1728Adds a new file, aslparseop.c 1729 1730---------------------------------------- 173131 May 2017. Summary of changes for version 20170531: 1732 1733 17340) ACPI 6.2 support: 1735 1736The ACPI specification version 6.2 has been released and is available at 1737http://uefi.org/specifications 1738 1739This version of ACPICA fully supports the ACPI 6.2 specification. Changes 1740are summarized below. 1741 1742New ACPI tables (Table Compiler/Disassembler/Templates): 1743 HMAT (Heterogeneous Memory Attributes Table) 1744 WSMT (Windows SMM Security Mitigation Table) 1745 PPTT (Processor Properties Topology Table) 1746 1747New subtables for existing ACPI tables: 1748 HEST (New subtable, Arch-deferred machine check) 1749 SRAT (New subtable, Arch-specific affinity structure) 1750 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 1751 1752Simple updates for existing ACPI tables: 1753 BGRT (two new flag bits) 1754 HEST (New bit defined for several subtables, GHES_ASSIST) 1755 1756New Resource Descriptors and Resource macros (Compiler/Disassembler): 1757 PinConfig() 1758 PinFunction() 1759 PinGroup() 1760 PinGroupConfig() 1761 PinGroupFunction() 1762 New type for hardware error notification (section 18.3.2.9) 1763 1764New predefined names/methods (Compiler/Interpreter): 1765 _HMA (Heterogeneous Memory Attributes) 1766 _LSI (Label Storage Information) 1767 _LSR (Label Storage Read) 1768 _LSW (Label Storage Write) 1769 1770ASL grammar/macro changes (Compiler): 1771 For() ASL macro, implemented with the AML while operator 1772 Extensions to Concatenate operator 1773 Support for multiple definition blocks in same ASL file 1774 Clarification for Buffer operator 1775 Allow executable AML code underneath all scopes (Devices, etc.) 1776 Clarification/change for the _OSI return value 1777 ASL grammar update for reference operators 1778 Allow a zero-length string for AML filename in DefinitionBlock 1779 1780Miscellaneous: 1781 New device object notification value 1782 Remove a notify value (0x0C) for graceful shutdown 1783 New UUIDs for processor/cache properties and 1784 physical package property 1785 New _HID, ACPI0014 (Wireless Power Calibration Device) 1786 1787 17881) ACPICA kernel-resident subsystem: 1789 1790Added support to disable ACPI events on hardware-reduced platforms. 1791Eliminates error messages of the form "Could not enable fixed event". Lv 1792Zheng 1793 1794Fixed a problem using Device/Thermal objects with the ObjectType and 1795DerefOf ASL operators. This support had not been fully/properly 1796implemented. 1797 1798Fixed a problem where if a Buffer object containing a resource template 1799was longer than the actual resource template, an error was generated -- 1800even though the AML is legal. This case has been seen in the field. 1801 1802Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 1803The values for DUAL_PIC and MULTIPLE_APIC were reversed. 1804 1805Added header file changes for the TPM2 ACPI table. Update to new version 1806of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 1807 1808Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 1809These interfaces are intended to be used only in conjunction with the 1810predefined _DLM method (Device Lock Method). "This object appears in a 1811device scope when AML access to the device must be synchronized with the 1812OS environment". 1813 1814Example Code and Data Size: These are the sizes for the OS-independent 1815acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1816debug version of the code includes the debug output trace mechanism and 1817has a much larger code and data size. 1818 1819 Current Release: 1820 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 1821 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 1822 Previous Release: 1823 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1824 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1825 1826 18272) iASL Compiler/Disassembler and Tools: 1828 1829iASL: Fixed a problem where an External() declaration could not refer to 1830a Field Unit. Erik Schmauss. 1831 1832Disassembler: Improved support for the Switch/Case operators. This 1833feature will disassemble AML code back to the original Switch operators 1834when possible, instead of an If..Else sequence. David Box 1835 1836iASL and disassembler: Improved the handling of multiple extraneous 1837parentheses for both ASL input and disassembled ASL output. 1838 1839Improved the behavior of the iASL compiler and disassembler to detect 1840improper use of external declarations 1841 1842Disassembler: Now aborts immediately upon detection of an unknown AML 1843opcode. The AML parser has no real way to recover from this, and can 1844result in the creation of an ill-formed parse tree that causes errors 1845later during the disassembly. 1846 1847All tools: Fixed a problem where the Unix application OSL did not handle 1848control-c correctly. For example, a control-c could incorrectly wake the 1849debugger. 1850 1851AcpiExec: Improved the Control-C handling and added a handler for 1852segmentation faults (SIGSEGV). Supports both Windows and Unix-like 1853environments. 1854 1855Reduced the verbosity of the generic unix makefiles. Previously, each 1856compilation displayed the full set of compiler options. This has been 1857eliminated as the options are easily inspected within the makefiles. Each 1858compilation now results in a single line of output. 1859 1860---------------------------------------- 186103 March 2017. Summary of changes for version 20170303: 1862 1863 18640) ACPICA licensing: 1865 1866The licensing information at the start of each source code module has 1867been updated. In addition to the Intel license, the dual GPLv2/BSD 1868license has been added for completeness. Now, a single version of the 1869source code should be suitable for all ACPICA customers. This is the 1870major change for this release since it affects all source code modules. 1871 1872 18731) ACPICA kernel-resident subsystem: 1874 1875Fixed two issues with the common asltypes.h header that could cause 1876problems in some environments: (Kim Jung-uk) 1877 Removed typedef for YY_BUFFER_STATE ? 1878 Fixes an error with earlier versions of Flex. 1879 Removed use of FILE typedef (which is only defined in stdio.h) 1880 1881 18822) iASL Compiler/Disassembler and Tools: 1883 1884Disassembler: fixed a regression introduced in 20170224. A fix for a 1885memory leak related to resource descriptor tags (names) could fault when 1886the disassembler was generated with 64-bit compilers. 1887 1888The ASLTS test suite has been updated to implement a new testing 1889architecture. During generation of the suite from ASL source, both the 1890ASL and ASL+ compilers are now validated, as well as the disassembler 1891itself (Erik Schmauss). The architecture executes as follows: 1892 1893 For every ASL source module: 1894 Compile (legacy ASL compilation) 1895 Disassemble the resulting AML to ASL+ source code 1896 Compile the new ASL+ module 1897 Perform a binary compare on the legacy AML and the new ASL+ AML 1898 The ASLTS suite then executes normally using the AML binaries. 1899 1900---------------------------------------- 190124 February 2017. Summary of changes for version 20170224: 1902 1903 19041) ACPICA kernel-resident subsystem: 1905 1906Interpreter: Fixed two issues with the control method return value auto- 1907repair feature, where an attempt to double-delete an internal object 1908could result in an ACPICA warning (for _CID repair and others). No fault 1909occurs, however, because the attempted deletion (actually a release to an 1910internal cache) is detected and ignored via object poisoning. 1911 1912Debugger: Fixed an AML interpreter mutex issue during the single stepping 1913of control methods. If certain debugger commands are executed during 1914stepping, a mutex acquire/release error could occur. Lv Zheng. 1915 1916Fixed some issues generating ACPICA with the Intel C compiler by 1917restoring the original behavior and compiler-specific include file in 1918acenv.h. Lv Zheng. 1919 1920Example Code and Data Size: These are the sizes for the OS-independent 1921acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1922debug version of the code includes the debug output trace mechanism and 1923has a much larger code and data size. 1924 1925 Current Release: 1926 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1927 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1928 Previous Release: 1929 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1930 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1931 1932 19332) iASL Compiler/Disassembler and Tools: 1934 1935iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 1936tool has been designed, implemented, and included in this release. The 1937key feature of this utility is that the original comments within the 1938input ASL file are preserved during the conversion process, and included 1939within the converted ASL+ file -- thus creating a transparent conversion 1940of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 1941 1942 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 1943converted code 1944 1945iASL/Disassembler: Improved the detection and correct disassembly of 1946Switch/Case operators. This feature detects sequences of if/elseif/else 1947operators that originated from ASL Switch/Case/Default operators and 1948emits the original operators. David Box. 1949 1950iASL: Improved the IORT ACPI table support in the following areas. Lv 1951Zheng: 1952 Clear MappingOffset if the MappingCount is zero. 1953 Fix the disassembly of the SMMU GSU interrupt offset. 1954 Update the template file for the IORT table. 1955 1956Disassembler: Enhanced the detection and disassembly of resource 1957template/descriptor within a Buffer object. An EndTag descriptor is now 1958required to have a zero second byte, since all known ASL compilers emit 1959this. This helps eliminate incorrect decisions when a buffer is 1960disassembled (false positives on resource templates). 1961 1962---------------------------------------- 196319 January 2017. Summary of changes for version 20170119: 1964 1965 19661) General ACPICA software: 1967 1968Entire source code base: Added the 2017 copyright to all source code 1969legal/licensing module headers and utility/tool signons. This includes 1970the standard Linux dual-license header. This affects virtually every file 1971in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 1972the ACPICA test suite. 1973 1974 19752) iASL Compiler/Disassembler and Tools: 1976 1977iASL: Removed/fixed an inadvertent remark when a method argument 1978containing a reference is used as a target operand within the method (and 1979never used as a simple argument), as in the example below. Jeffrey Hugo. 1980 1981 dsdt.asl 1507: Store(0x1, Arg0) 1982 Remark 2146 - ^ Method Argument is never used (Arg0) 1983 1984All tools: Removed the bit width of the compiler that generated the tool 1985from the common signon for all user space tools. This proved to be 1986confusing and unnecessary. This includes similar removal of HARDWARE_NAME 1987from the generic makefiles (Thomas Petazzoni). Example below. 1988 1989 Old: 1990 ASL+ Optimizing Compiler version 20170119-32 1991 ASL+ Optimizing Compiler version 20170119-64 1992 1993 New: 1994 ASL+ Optimizing Compiler version 20170119 1995 1996---------------------------------------- 199722 December 2016. Summary of changes for version 20161222: 1998 1999 20001) ACPICA kernel-resident subsystem: 2001 2002AML Debugger: Implemented a new mechanism to simplify and enhance 2003debugger integration into all environments, including kernel debuggers 2004and user-space utilities, as well as remote debug services. This 2005mechanism essentially consists of new OSL interfaces to support debugger 2006initialization/termination, as well as wait/notify interfaces to perform 2007the debugger handshake with the host. Lv Zheng. 2008 2009 New OSL interfaces: 2010 AcpiOsInitializeDebugger (void) 2011 AcpiOsTerminateDebugger (void) 2012 AcpiOsWaitCommandReady (void) 2013 AcpiOsNotifyCommandComplete (void) 2014 2015 New OS services layer: 2016 osgendbg.c -- Example implementation, and used for AcpiExec 2017 2018Update for Generic Address Space (GAS) support: Although the AccessWidth 2019and/or BitOffset fields of the GAS are not often used, this change now 2020fully supports these fields. This affects the internal support for FADT 2021registers, registers in other ACPI data tables, and the AcpiRead and 2022AcpiWrite public interfaces. Lv Zheng. 2023 2024Sleep support: In order to simplify integration of ACPI sleep for the 2025various host operating systems, a new OSL interface has been introduced. 2026AcpiOsEnterSleep allows the host to perform any required operations 2027before the final write to the sleep control register(s) is performed by 2028ACPICA. Lv Zheng. 2029 2030 New OSL interface: 2031 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 2032 2033 Called from these internal interfaces: 2034 AcpiHwLegacySleep 2035 AcpiHwExtendedSleep 2036 2037EFI support: Added a very small EFI/ACPICA example application. Provides 2038a simple demo for EFI integration, as well as assisting with resolution 2039of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 2040 2041 source/tools/efihello/efihello.c 2042 2043Local C library: Implemented several new functions to enhance ACPICA 2044portability, for environments where these clib functions are not 2045available (such as EFI). Lv Zheng: 2046 putchar 2047 getchar 2048 strpbrk 2049 strtok 2050 memmove 2051 2052Fixed a regression where occasionally a valid resource descriptor was 2053incorrectly detected as invalid at runtime, and a 2054AE_AML_NO_RESOURCE_END_TAG was returned. 2055 2056Fixed a problem with the recently implemented support that enables 2057control method invocations as Target operands to many ASL operators. 2058Warnings of this form: "Needed type [Reference], found [Processor]" were 2059seen at runtime for some method invocations. 2060 2061Example Code and Data Size: These are the sizes for the OS-independent 2062acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2063debug version of the code includes the debug output trace mechanism and 2064has a much larger code and data size. 2065 2066 Current Release: 2067 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 2068 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 2069 Previous Release: 2070 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2071 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2072 2073 20742) iASL Compiler/Disassembler and Tools: 2075 2076Disassembler: Enhanced output by adding the capability to detect and 2077disassemble ASL Switch/Case statements back to the original ASL source 2078code instead of if/else blocks. David Box. 2079 2080AcpiHelp: Split a large file into separate files based upon 2081functionality/purpose. New files are: 2082 ahaml.c 2083 ahasl.c 2084 2085---------------------------------------- 208617 November 2016. Summary of changes for version 20161117: 2087 2088 20891) ACPICA kernel-resident subsystem: 2090 2091Table Manager: Fixed a regression introduced in 20160729, "FADT support 2092cleanup". This was an attempt to remove all references in the source to 2093the FADT version 2, which never was a legal version number. It was 2094skipped because it was an early version of 64-bit support that was 2095eventually abandoned for the current 64-bit support. 2096 2097Interpreter: Fixed a problem where runtime implicit conversion was 2098incorrectly disabled for the ASL operators below. This brings the 2099behavior into compliance with the ACPI specification: 2100 FromBCD 2101 ToBCD 2102 ToDecimalString 2103 ToHexString 2104 ToInteger 2105 ToBuffer 2106 2107Table Manager: Added a new public interface, AcpiPutTable, used to 2108release and free an ACPI table returned by AcpiGetTable and related 2109interfaces. Lv Zheng. 2110 2111Example Code and Data Size: These are the sizes for the OS-independent 2112acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2113debug version of the code includes the debug output trace mechanism and 2114has a much larger code and data size. 2115 2116 Current Release: 2117 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2118 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2119 Previous Release: 2120 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2121 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2122 2123 21242) iASL Compiler/Disassembler and Tools: 2125 2126Disassembler: Fixed a regression for disassembly of Resource Template. 2127Detection of templates in the AML stream missed some types of templates. 2128 2129iASL: Fixed a problem where an Access Size error was returned for the PCC 2130address space when the AccessSize of the GAS register is greater than a 2131DWORD. Hoan Tran. 2132 2133iASL: Implemented several grammar changes for the operators below. These 2134changes are slated for the next version of the ACPI specification: 2135 RefOf - Disallow method invocation as an operand 2136 CondRefOf - Disallow method invocation as an operand 2137 DerefOf - Disallow operands that use the result from operators 2138that 2139 do not return a reference (Changed TermArg to 2140SuperName). 2141 2142iASL: Control method invocations are now allowed for Target operands, as 2143per the ACPI specification. Removed error for using a control method 2144invocation as a Target operand. 2145 2146Disassembler: Improved detection of Resource Templates, Unicode, and 2147Strings within Buffer objects. These subtypes do not contain a specific 2148opcode to indicate the originating ASL code, and they must be detected by 2149other means within the disassembler. 2150 2151iASL: Implemented an optimization improvement for 32-bit ACPI tables 2152(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 2153only after 64-bit to 32-bit truncation. A truncation warning message is 2154still emitted, however. 2155 2156AcpiXtract: Implemented handling for both types of line terminators (LF 2157or CR/LF) so that it can accept AcpiDump output files from any system. 2158Peter Wu. 2159 2160AcpiBin: Added two new options for comparing AML files: 2161 -a: compare and display ALL mismatches 2162 -o: start compare at this offset into the second file 2163 2164---------------------------------------- 216530 September 2016. Summary of changes for version 20160930: 2166 2167 21681) ACPICA kernel-resident subsystem: 2169 2170Fixed a regression in the internal AcpiTbFindTable function where a non 2171AE_OK exception could inadvertently be returned even if the function did 2172not fail. This problem affects the following operators: 2173 DataTableRegion 2174 LoadTable 2175 2176Fixed a regression in the LoadTable operator where a load to any 2177namespace location other than the root no longer worked properly. 2178 2179Increased the maximum loop count value that will result in the 2180AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 2181prevent infinite loops within the AML interpreter and thus the host OS 2182kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 21831,048,575). 2184 2185Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 2186acpixf.h file. This allows hosts to easily configure the maximum loop 2187count at runtime. 2188 2189Removed an illegal character in the strtoul64.c file. This character 2190caused errors with some C compilers. 2191 2192Example Code and Data Size: These are the sizes for the OS-independent 2193acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2194debug version of the code includes the debug output trace mechanism and 2195has a much larger code and data size. 2196 2197 Current Release: 2198 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2199 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2200 Previous Release: 2201 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 2202 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2203 2204 22052) iASL Compiler/Disassembler and Tools: 2206 2207Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 2208the simpler ASL ElseIf keyword. During the conversion, a trailing If 2209block could be lost and missing from the disassembled output. 2210 2211iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 2212the missing rule caused a parse error when using the Index operator as an 2213operand to ObjectType. This construct now compiles properly. Example: 2214 ObjectType(PKG1[4]). 2215 2216iASL: Correctly handle unresolved symbols in the hardware map file (-lm 2217option). Previously, unresolved symbols could cause a protection fault. 2218Such symbols are now marked as unresolved in the map file. 2219 2220iASL: Implemented support to allow control method invocations as an 2221operand to the ASL DeRefOf operator. Example: 2222 DeRefOf(MTH1(Local0)) 2223 2224Disassembler: Improved support for the ToPLD ASL macro. Detection of a 2225possible _PLD buffer now includes examination of both the normal buffer 2226length (16 or 20) as well as the surrounding AML package length. 2227 2228Disassembler: Fixed a problem with the decoding of complex expressions 2229within the Divide operator for ASL+. For the case where both the quotient 2230and remainder targets are specified, the entire statement cannot be 2231disassembled. Previously, the output incorrectly contained a mix of ASL- 2232and ASL+ operators. This mixed statement causes a syntax error when 2233compiled. Example: 2234 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 2235disassembled to: 2236 Divide (INT1 + 6, 128, RSLT, QUOT) 2237 2238iASL/Tools: Added support to process AML and non-AML ACPI tables 2239consistently. For the disassembler and AcpiExec, allow all types of ACPI 2240tables (AML and data tables). For the iASL -e option, allow only AML 2241tables (DSDT/SSDT). 2242 2243---------------------------------------- 224431 August 2016. Summary of changes for version 20160831: 2245 2246 22471) ACPICA kernel-resident subsystem: 2248 2249Improve support for the so-called "module-level code", which is defined 2250to be math, logical and control AML opcodes that appear outside of any 2251control method. This change improves the support by adding more opcodes 2252that can be executed in the manner. Some other issues have been solved, 2253and the ASL grammar changes to support such code under all scope 2254operators (Device, etc.) are complete. Lv Zheng. 2255 2256UEFI support: these OSL functions have been implemented. This is an 2257additional step toward supporting the AcpiExec utility natively (with 2258full hardware access) under UEFI. Marcelo Ferreira. 2259 AcpiOsReadPciConfiguration 2260 AcpiOsWritePciConfiguration 2261 2262Fixed a possible mutex error during control method auto-serialization. Lv 2263Zheng. 2264 2265Updated support for the Generic Address Structure by fully implementing 2266all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 2267Zheng. 2268 2269Updated the return value for the internal _OSI method. Instead of 22700xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 2271for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 2272implementations, and will be reflected and clarified in the next version 2273of the ACPI specification. 2274 2275Implemented two new table events that can be passed to an ACPICA table 2276handler. These events are used to indicate a table installation or 2277uninstallation. These events are used in addition to existed table load 2278and unload events. Lv Zheng. 2279 2280Implemented a cleanup for all internal string-to-integer conversions. 2281Consolidate multiple versions of this functionality and limit possible 2282bases to either 10 or 16 to simplify the code. Adds a new file, 2283utstrtoul64. 2284 2285Cleanup the inclusion order of the various compiler-specific headers. 2286This simplifies build configuration management. The compiler-specific 2287headers are now split out from the host-specific headers. Lv Zheng. 2288 2289Example Code and Data Size: These are the sizes for the OS-independent 2290acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2291debug version of the code includes the debug output trace mechanism and 2292has a much larger code and data size. 2293 2294 Current Release: 2295 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 2296 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2297 2298 22992) iASL Compiler/Disassembler and Tools: 2300 2301iASL/AcpiExec: Added a command line option to display the build date/time 2302of the tool (-vd). This can be useful to verify that the correct version 2303of the tools are being used. 2304 2305AML Debugger: Implemented a new subcommand ("execute predef") to execute 2306all predefined control methods and names within the current namespace. 2307This can be useful for debugging problems with ACPI tables and the ACPI 2308namespace. 2309 2310---------------------------------------- 231129 July 2016. Summary of changes for version 20160729: 2312 2313 23141) ACPICA kernel-resident subsystem: 2315 2316Implemented basic UEFI support for the various ACPICA tools. This 2317includes: 23181) An OSL to implement the various AcpiOs* interfaces on UEFI. 23192) Support to obtain the ACPI tables on UEFI. 23203) Local implementation of required C library functions not available on 2321UEFI. 23224) A front-end (main) function for the tools for UEFI-related 2323initialization. 2324 2325The initial deployment of this support is the AcpiDump utility executing 2326as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 2327Current environments supported are Linux/Unix. MSVC generation is not 2328supported at this time. See the generate/efi/README file for build 2329instructions. Lv Zheng. 2330 2331Future plans include porting the AcpiExec utility to execute natively on 2332the platform with I/O and memory access. This will allow viewing/dump of 2333the platform namespace and native execution of ACPI control methods that 2334access the actual hardware. To fully implement this support, the OSL 2335functions below must be implemented with UEFI interfaces. Any community 2336help in the implementation of these functions would be appreciated: 2337 AcpiOsReadPort 2338 AcpiOsWritePort 2339 AcpiOsReadMemory 2340 AcpiOsWriteMemory 2341 AcpiOsReadPciConfiguration 2342 AcpiOsWritePciConfiguration 2343 2344Restructured and standardized the C library configuration for ACPICA, 2345resulting in the various configuration options below. This includes a 2346global restructuring of the compiler-dependent and platform-dependent 2347include files. These changes may affect the existing platform-dependent 2348configuration files on some hosts. Lv Zheng. 2349 2350The current C library configuration options appear below. For any issues, 2351it may be helpful to examine the existing compiler-dependent and 2352platform-dependent files as examples. Lv Zheng. 2353 23541) Linux kernel: 2355 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2356library. 2357 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 23582) Unix/Windows/BSD applications: 2359 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 2360library. 2361 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 23623) UEFI applications: 2363 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2364library. 2365 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 23664) UEFI applications (EDK2/StdLib): 2367 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 2368 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 2369 2370 2371AML interpreter: "module-level code" support. Allows for execution of so- 2372called "executable" AML code (math/logical operations, etc.) outside of 2373control methods not just at the module level (top level) but also within 2374any scope declared outside of a control method - Scope{}, Device{}, 2375Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 2376 2377Simplified the configuration of the "maximum AML loops" global option by 2378adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 2379modified at runtime. 2380 2381 2382Example Code and Data Size: These are the sizes for the OS-independent 2383acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2384debug version of the code includes the debug output trace mechanism and 2385has a much larger code and data size. 2386 2387 Current Release: 2388 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 2389 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2390 2391 23922) iASL Compiler/Disassembler and Tools: 2393 2394iASL: Add full support for the RASF ACPI table (RAS Features Table). 2395Includes disassembler, data table compiler, and header support. 2396 2397iASL Expand "module-level code" support. Allows for 2398compilation/disassembly of so-called "executable" AML code (math/logical 2399operations, etc.) outside of control methods not just at the module level 2400(top level) but also within any scope declared outside of a control 2401method - Scope{}, Device{}, Processor{}, PowerResource{}, and 2402ThermalZone{}. 2403 2404AcpiDump: Added support for dumping all SSDTs on newer versions of 2405Windows. These tables are now easily available -- SSDTs are not available 2406through the registry on older versions. 2407 2408---------------------------------------- 240927 May 2016. Summary of changes for version 20160527: 2410 2411 24121) ACPICA kernel-resident subsystem: 2413 2414Temporarily reverted the new arbitrary bit length/alignment support in 2415AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 2416a number of regressions with the new code that need to be fully resolved 2417and tested before this support can be finally integrated into ACPICA. 2418Apologies for any inconveniences these issues may have caused. 2419 2420The ACPI message macros are not configurable (ACPI_MSG_ERROR, 2421ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 2422and ACPI_MSG_BIOS_WARNING). Lv Zheng. 2423 2424Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 2425option. Adds a new return macro, return_STR. Junk-uk Kim. 2426 2427Example Code and Data Size: These are the sizes for the OS-independent 2428acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2429debug version of the code includes the debug output trace mechanism and 2430has a much larger code and data size. 2431 2432 Current Release: 2433 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 2434 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2435 Previous Release: 2436 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2437 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 2438 2439---------------------------------------- 244022 April 2016. Summary of changes for version 20160422: 2441 24421) ACPICA kernel-resident subsystem: 2443 2444Fixed a regression in the GAS (generic address structure) arbitrary bit 2445support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 2446and incorrect return values. Lv Zheng. ACPICA BZ 1270. 2447 2448ACPI 6.0: Added support for new/renamed resource macros. One new argument 2449was added to each of these macros, and the original name has been 2450deprecated. The AML disassembler will always disassemble to the new 2451names. Support for the new macros was added to iASL, disassembler, 2452resource manager, and the acpihelp utility. ACPICA BZ 1274. 2453 2454 I2cSerialBus -> I2cSerialBusV2 2455 SpiSerialBus -> SpiSerialBusV2 2456 UartSerialBus -> UartSerialBusV2 2457 2458ACPI 6.0: Added support for a new integer field that was appended to the 2459package object returned by the _BIX method. This adds iASL compile-time 2460and AML runtime error checking. ACPICA BZ 1273. 2461 2462ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 2463Subspace Type2" (Headers, Disassembler, and data table compiler). 2464 2465Example Code and Data Size: These are the sizes for the OS-independent 2466acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2467debug version of the code includes the debug output trace mechanism and 2468has a much larger code and data size. 2469 2470 Current Release: 2471 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2472 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2473 Previous Release: 2474 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2475 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2476 2477 24782) iASL Compiler/Disassembler and Tools: 2479 2480iASL: Implemented an ASL grammar extension to allow/enable executable 2481"module-level code" to be created and executed under the various 2482operators that create new scopes. This type of AML code is already 2483supported in all known AML interpreters, and the grammar change will 2484appear in the next version of the ACPI specification. Simplifies the 2485conditional runtime creation of named objects under these object types: 2486 2487 Device 2488 PowerResource 2489 Processor 2490 Scope 2491 ThermalZone 2492 2493iASL: Implemented a new ASL extension, a "For" loop macro to add greater 2494ease-of-use to the ASL language. The syntax is similar to the 2495corresponding C operator, and is implemented with the existing AML While 2496opcode -- thus requiring no changes to existing AML interpreters. 2497 2498 For (Initialize, Predicate, Update) {TermList} 2499 2500Grammar: 2501 ForTerm := 2502 For ( 2503 Initializer // Nothing | TermArg => ComputationalData 2504 Predicate // Nothing | TermArg => ComputationalData 2505 Update // Nothing | TermArg => ComputationalData 2506 ) {TermList} 2507 2508 2509iASL: The _HID/_ADR detection and validation has been enhanced to search 2510under conditionals in order to allow these objects to be conditionally 2511created at runtime. 2512 2513iASL: Fixed several issues with the constant folding feature. The 2514improvement allows better detection and resolution of statements that can 2515be folded at compile time. ACPICA BZ 1266. 2516 2517iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 2518conversion to the ASL ElseIf operator where incorrect ASL code could be 2519generated. 2520 2521iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 2522sometimes an extra (and extraneous) set of parentheses were emitted for 2523some combinations of operators. Although this did not cause any problems 2524with recompilation of the disassembled code, it made the code more 2525difficult to read. David Box. ACPICA BZ 1231. 2526 2527iASL: Changed to ignore the unreferenced detection for predefined names 2528of resource descriptor elements, when the resource descriptor is 2529created/defined within a control method. 2530 2531iASL: Disassembler: Fix a possible fault with externally declared Buffer 2532objects. 2533 2534---------------------------------------- 253518 March 2016. Summary of changes for version 20160318: 2536 25371) ACPICA kernel-resident subsystem: 2538 2539Added support for arbitrary bit lengths and bit offsets for registers 2540defined by the Generic Address Structure. Previously, only aligned bit 2541lengths of 8/16/32/64 were supported. This was sufficient for many years, 2542but recently some machines have been seen that require arbitrary bit- 2543level support. ACPICA BZ 1240. Lv Zheng. 2544 2545Fixed an issue where the \_SB._INI method sometimes must be evaluated 2546before any _REG methods are evaluated. Lv Zheng. 2547 2548Implemented several changes related to ACPI table support 2549(Headers/Disassembler/TableCompiler): 2550NFIT: For ACPI 6.1, updated to add some additional new fields and 2551constants. 2552FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 25536). 2554DMAR: Added new constants per the 10/2014 DMAR spec. 2555IORT: Added new subtable per the 10/2015 IORT spec. 2556HEST: For ACPI 6.1, added new constants and new subtable. 2557DBG2: Added new constants per the 12/2015 DBG2 spec. 2558FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 2559ACPICA BZ 1249. 2560ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 2561 2562Updated header support for the DMAR table to match the current version of 2563the related spec. 2564 2565Added extensions to the ASL Concatenate operator to allow any ACPI object 2566to be passed as an operand. Any object other than Integer/String/Buffer 2567simply returns a string containing the object type. This extends the 2568usefulness of the Printf macros. Previously, Concatenate would abort the 2569control method if a non-data object was encountered. 2570 2571ACPICA source code: Deployed the C "const" keyword across the source code 2572where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 2573 2574Example Code and Data Size: These are the sizes for the OS-independent 2575acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2576debug version of the code includes the debug output trace mechanism and 2577has a much larger code and data size. 2578 2579 Current Release: 2580 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2581 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2582 Previous Release: 2583 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2584 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2585 2586 25872) iASL Compiler/Disassembler and Tools: 2588 2589iASL/Disassembler: Improved the heuristic used to determine the number of 2590arguments for an externally defined control method (a method in another 2591table). Although this is an improvement, there is no deterministic way to 2592"guess" the number of method arguments. Only the ACPI 6.0 External opcode 2593will completely solve this problem as it is deployed (automatically) in 2594newer BIOS code. 2595 2596iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 2597statements that could cause errors when the disassembled file is 2598compiled. ACPICA BZ 1243. David Box. 2599 2600iASL: Fixed a regression caused by the merger of the two versions of the 2601local strtoul64. Because of a dependency on a global variable, strtoul64 2602could return an error for integers greater than a 32-bit value. ACPICA BZ 26031260. 2604 2605iASL: Fixed a regression where a fault could occur for an ASL Return 2606statement if it invokes a control method that is not resolved. ACPICA BZ 26071264. 2608 2609AcpiXtract: Improved input file validation: detection of binary files and 2610non-acpidump text files. 2611 2612---------------------------------------- 261312 February 2016. Summary of changes for version 20160212: 2614 26151) ACPICA kernel-resident subsystem: 2616 2617Implemented full support for the ACPI 6.1 specification (released in 2618January). This version of the specification is available at: 2619http://www.uefi.org/specifications 2620 2621Only a relatively small number of changes were required in ACPICA to 2622support ACPI 6.1, in these areas: 2623- New predefined names 2624- New _HID values 2625- A new subtable for HEST 2626- A few other header changes for new values 2627 2628Ensure \_SB_._INI is executed before any _REG methods are executed. There 2629appears to be existing BIOS code that relies on this behavior. Lv Zheng. 2630 2631Reverted a change made in version 20151218 which enabled method 2632invocations to be targets of various ASL operators (SuperName and Target 2633grammar elements). While the new behavior is supported by the ACPI 2634specification, other AML interpreters do not support this behavior and 2635never will. The ACPI specification will be updated for ACPI 6.2 to remove 2636this support. Therefore, the change was reverted to the original ACPICA 2637behavior. 2638 2639ACPICA now supports the GCC 6 compiler. 2640 2641Current Release: (Note: build changes increased sizes) 2642 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2643 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2644Previous Release: 2645 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2646 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 2647 2648 26492) iASL Compiler/Disassembler and Tools: 2650 2651Completed full support for the ACPI 6.0 External() AML opcode. The 2652compiler emits an external AML opcode for each ASL External statement. 2653This opcode is used by the disassembler to assist with the disassembly of 2654external control methods by specifying the required number of arguments 2655for the method. AML interpreters do not use this opcode. To ensure that 2656interpreters do not even see the opcode, a block of one or more external 2657opcodes is surrounded by an "If(0)" construct. As this feature becomes 2658commonly deployed in BIOS code, the ability of disassemblers to correctly 2659disassemble AML code will be greatly improved. David Box. 2660 2661iASL: Implemented support for an optional cross-reference output file. 2662The -lx option will create a the cross-reference file with the suffix 2663"xrf". Three different types of cross-reference are created in this file: 2664- List of object references made from within each control method 2665- Invocation (caller) list for each user-defined control method 2666- List of references to each non-method object in the namespace 2667 2668iASL: Method invocations as ASL Target operands are now disallowed and 2669flagged as errors in preparation for ACPI 6.2 (see the description of the 2670problem above). 2671 2672---------------------------------------- 26738 January 2016. Summary of changes for version 20160108: 2674 26751) ACPICA kernel-resident subsystem: 2676 2677Updated all ACPICA copyrights and signons to 2016: Added the 2016 2678copyright to all source code module headers and utility/tool signons. 2679This includes the standard Linux dual-license header. This affects 2680virtually every file in the ACPICA core subsystem, iASL compiler, all 2681ACPICA utilities, and the ACPICA test suite. 2682 2683Fixed a regression introduced in version 20151218 concerning the 2684execution of so-called module-level ASL/AML code. Namespace objects 2685created under a module-level If() construct were not properly/fully 2686entered into the namespace and could cause an interpreter fault when 2687accessed. 2688 2689Example Code and Data Size: These are the sizes for the OS-independent 2690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2691debug version of the code includes the debug output trace mechanism and 2692has a much larger code and data size. 2693 2694Current Release: 2695 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2696 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 2697 Previous Release: 2698 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2699 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2700 2701 27022) iASL Compiler/Disassembler and Tools: 2703 2704Fixed a problem with the compilation of the GpioIo and GpioInt resource 2705descriptors. The _PIN field name was incorrectly defined to be an array 2706of 32-bit values, but the _PIN values are in fact 16 bits each. This 2707would cause incorrect bit width warnings when using Word (16-bit) fields 2708to access the descriptors. 2709 2710 2711---------------------------------------- 271218 December 2015. Summary of changes for version 20151218: 2713 27141) ACPICA kernel-resident subsystem: 2715 2716Implemented per-AML-table execution of "module-level code" as individual 2717ACPI tables are loaded into the namespace during ACPICA initialization. 2718In other words, any module-level code within an AML table is executed 2719immediately after the table is loaded, instead of batched and executed 2720after all of the tables have been loaded. This provides compatibility 2721with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 2722David Box. 2723 2724To fully support the feature above, the default operation region handlers 2725for the SystemMemory, SystemIO, and PCI_Config address spaces are now 2726installed before any ACPI tables are loaded. This enables module-level 2727code to access these address spaces during the table load and module- 2728level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 2729Box. 2730 2731Implemented several changes to the internal _REG support in conjunction 2732with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 2733utilities for the changes above. Although these tools were changed, host 2734operating systems that simply use the default handlers for SystemMemory, 2735SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 2736 2737For example, in the code below, DEV1 is conditionally added to the 2738namespace by the DSDT via module-level code that accesses an operation 2739region. The SSDT references DEV1 via the Scope operator. DEV1 must be 2740created immediately after the DSDT is loaded in order for the SSDT to 2741successfully reference DEV1. Previously, this code would cause an 2742AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 2743fully supported by ACPICA. 2744 2745 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 2746 { 2747 OperationRegion (OPR1, SystemMemory, 0x400, 32) 2748 Field (OPR1, AnyAcc, NoLock, Preserve) 2749 { 2750 FLD1, 1 2751 } 2752 If (FLD1) 2753 { 2754 Device (\DEV1) 2755 { 2756 } 2757 } 2758 } 2759 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 2760 { 2761 External (\DEV1, DeviceObj) 2762 Scope (\DEV1) 2763 { 2764 } 2765 } 2766 2767Fixed an AML interpreter problem where control method invocations were 2768not handled correctly when the invocation was itself a SuperName argument 2769to another ASL operator. In these cases, the method was not invoked. 2770ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 2771argument: 2772 Store 2773 Acquire, Wait 2774 CondRefOf, RefOf 2775 Decrement, Increment 2776 Load, Unload 2777 Notify 2778 Signal, Release, Reset 2779 SizeOf 2780 2781Implemented automatic String-to-ObjectReference conversion support for 2782packages returned by predefined names (such as _DEP). A common BIOS error 2783is to add double quotes around an ObjectReference namepath, which turns 2784the reference into an unexpected string object. This support detects the 2785problem and corrects it before the package is returned to the caller that 2786invoked the method. Lv Zheng. 2787 2788Implemented extensions to the Concatenate operator. Concatenate now 2789accepts any type of object, it is not restricted to simply 2790Integer/String/Buffer. For objects other than these 3 basic data types, 2791the argument is treated as a string containing the name of the object 2792type. This expands the utility of Concatenate and the Printf/Fprintf 2793macros. ACPICA BZ 1222. 2794 2795Cleaned up the output of the ASL Debug object. The timer() value is now 2796optional and no longer emitted by default. Also, the basic data types of 2797Integer/String/Buffer are simply emitted as their values, without a data 2798type string -- since the data type is obvious from the output. ACPICA BZ 27991221. 2800 2801Example Code and Data Size: These are the sizes for the OS-independent 2802acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2803debug version of the code includes the debug output trace mechanism and 2804has a much larger code and data size. 2805 2806 Current Release: 2807 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2808 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2809 Previous Release: 2810 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2811 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2812 2813 28142) iASL Compiler/Disassembler and Tools: 2815 2816iASL: Fixed some issues with the ASL Include() operator. This operator 2817was incorrectly defined in the iASL parser rules, causing a new scope to 2818be opened for the code within the include file. This could lead to 2819several issues, including allowing ASL code that is technically illegal 2820and not supported by AML interpreters. Note, this does not affect the 2821related #include preprocessor operator. ACPICA BZ 1212. 2822 2823iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 2824operator is essentially an ASL macro since there is no AML opcode 2825associated with it. The code emitted by the iASL compiler for ElseIf is 2826an Else opcode followed immediately by an If opcode. The disassembler 2827will now emit an ElseIf if it finds an Else immediately followed by an 2828If. This simplifies the decoded ASL, especially for deeply nested 2829If..Else and large Switch constructs. Thus, the disassembled code more 2830closely follows the original source ASL. ACPICA BZ 1211. Example: 2831 2832 Old disassembly: 2833 Else 2834 { 2835 If (Arg0 == 0x02) 2836 { 2837 Local0 = 0x05 2838 } 2839 } 2840 2841 New disassembly: 2842 ElseIf (Arg0 == 0x02) 2843 { 2844 Local0 = 0x05 2845 } 2846 2847AcpiExec: Added support for the new module level code behavior and the 2848early region installation. This required a small change to the 2849initialization, since AcpiExec must install its own operation region 2850handlers. 2851 2852AcpiExec: Added support to make the debug object timer optional. Default 2853is timer disabled. This cleans up the debug object output -- the timer 2854data is rarely used. 2855 2856AcpiExec: Multiple ACPI tables are now loaded in the order that they 2857appear on the command line. This can be important when there are 2858interdependencies/references between the tables. 2859 2860iASL/Templates. Add support to generate template files with multiple 2861SSDTs within a single output file. Also added ommand line support to 2862specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 28631223, 1225. 2864 2865 2866---------------------------------------- 286724 November 2015. Summary of changes for version 20151124: 2868 28691) ACPICA kernel-resident subsystem: 2870 2871Fixed a possible regression for a previous update to FADT handling. The 2872FADT no longer has a fixed table ID, causing some issues with code that 2873was hardwired to a specific ID. Lv Zheng. 2874 2875Fixed a problem where the method auto-serialization could interfere with 2876the current SyncLevel. This change makes the auto-serialization support 2877transparent to the SyncLevel support and management. 2878 2879Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 2880interface is intended for early access to the namespace during the 2881initial namespace device discovery walk. The _SUB method has been seen to 2882access operation regions in some cases, causing errors because the 2883operation regions are not fully initialized. 2884 2885AML Debugger: Fixed some issues with the terminate/quit/exit commands 2886that can cause faults. Lv Zheng. 2887 2888AML Debugger: Add thread ID support so that single-step mode only applies 2889to the AML Debugger thread. This prevents runtime errors within some 2890kernels. Lv Zheng. 2891 2892Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 2893methods that are invoked by this interface are optional, removed warnings 2894emitted for the case where one or more of these methods do not exist. 2895ACPICA BZ 1208, original change by Prarit Bhargava. 2896 2897Made a major pass through the entire ACPICA source code base to 2898standardize formatting that has diverged a bit over time. There are no 2899functional changes, but this will of course cause quite a few code 2900differences from the previous ACPICA release. 2901 2902Example Code and Data Size: These are the sizes for the OS-independent 2903acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2904debug version of the code includes the debug output trace mechanism and 2905has a much larger code and data size. 2906 2907 Current Release: 2908 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2909 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2910 Previous Release: 2911 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2912 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2913 2914 29152) iASL Compiler/Disassembler and Tools: 2916 2917iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 2918definition blocks within a single ASL file and the resulting AML file. 2919Support for this type of file was also added to the various tools that 2920use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 2921example code below shows two definition blocks within the same file: 2922 2923 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 29240x12345678) 2925 { 2926 } 2927 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 2928 { 2929 } 2930 2931iASL: Enhanced typechecking for the Name() operator. All expressions for 2932the value of the named object must be reduced/folded to a single constant 2933at compile time, as per the ACPI specification (the AML definition of 2934Name()). 2935 2936iASL: Fixed some code indentation issues for the -ic and -ia options (C 2937and assembly headers). Now all emitted code correctly begins in column 1. 2938 2939iASL: Added an error message for an attempt to open a Scope() on an 2940object defined in an SSDT. The DSDT is always loaded into the namespace 2941first, so any attempt to open a Scope on an SSDT object will fail at 2942runtime. 2943 2944 2945---------------------------------------- 294630 September 2015. Summary of changes for version 20150930: 2947 29481) ACPICA kernel-resident subsystem: 2949 2950Debugger: Implemented several changes and bug fixes to assist support for 2951the in-kernel version of the AML debugger. Lv Zheng. 2952- Fix the "predefined" command for in-kernel debugger. 2953- Do not enter debug command loop for the help and version commands. 2954- Disallow "execute" command during execution/single-step of a method. 2955 2956Interpreter: Updated runtime typechecking for all operators that have 2957target operands. The operand is resolved and validated that it is legal. 2958For example, the target cannot be a non-data object such as a Device, 2959Mutex, ThermalZone, etc., as per the ACPI specification. 2960 2961Debugger: Fixed the double-mutex user I/O handshake to work when local 2962deadlock detection is enabled. 2963 2964Debugger: limited display of method locals and arguments (LocalX and 2965ArgX) to only those that have actually been initialized. This prevents 2966lines of extraneous output. 2967 2968Updated the definition of the NFIT table to correct the bit polarity of 2969one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 2970 2971Example Code and Data Size: These are the sizes for the OS-independent 2972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2973debug version of the code includes the debug output trace mechanism and 2974has a much larger code and data size. 2975 2976 Current Release: 2977 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2978 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2979 Previous Release: 2980 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2981 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2982 2983 29842) iASL Compiler/Disassembler and Tools: 2985 2986iASL: Improved the compile-time typechecking for operands of many of the 2987ASL operators: 2988 2989-- Added an option to disable compiler operand/operator typechecking (- 2990ot). 2991 2992-- For the following operators, the TermArg operands are now validated 2993when possible to be Integer data objects: BankField, OperationRegion, 2994DataTableRegion, Buffer, and Package. 2995 2996-- Store (Source, Target): Both the source and target operands are 2997resolved and checked that the operands are both legal. For example, 2998neither operand can be a non-data object such as a Device, Mutex, 2999ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 3000operator can be used to store an object to any type of target object. 3001 3002-- Store (Source, Target): If the source is a Package object, the target 3003must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 3004is a Package, the source must also be a Package. 3005 3006-- Store (Source, Target): A warning is issued if the source and target 3007resolve to the identical named object. 3008 3009-- Store (Source, <method invocation>): An error is generated for the 3010target method invocation, as this construct is not supported by the AML 3011interpreter. 3012 3013-- For all ASL math and logic operators, the target operand must be a 3014data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 3015includes the function return value also. 3016 3017-- External declarations are also included in the typechecking where 3018possible. External objects defined using the UnknownObj keyword cannot be 3019typechecked, however. 3020 3021iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 3022operator: 3023- Legacy code: Index(PKG1, 3) 3024- New ASL+ code: PKG1[3] 3025This completes the ACPI 6.0 ASL+ support as it was the only operator not 3026supported. 3027 3028iASL: Fixed the file suffix for the preprocessor output file (.i). Two 3029spaces were inadvertently appended to the filename, causing file access 3030and deletion problems on some systems. 3031 3032ASL Test Suite (ASLTS): Updated the master makefile to generate all 3033possible compiler output files when building the test suite -- thus 3034exercising these features of the compiler. These files are automatically 3035deleted when the test suite exits. 3036 3037 3038---------------------------------------- 303918 August 2015. Summary of changes for version 20150818: 3040 30411) ACPICA kernel-resident subsystem: 3042 3043Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 3044Zheng. ACPICA BZ 1186. 3045 3046Completed development to ensure that the ACPICA Disassembler and Debugger 3047are fully standalone components of ACPICA. Removed cross-component 3048dependences. Lv Zheng. 3049 3050The max-number-of-AML-loops is now runtime configurable (previously was 3051compile-time only). This is essentially a loop timeout to force-abort 3052infinite AML loops. ACPCIA BZ 1192. 3053 3054Debugger: Cleanup output to dump ACPI names and namepaths without any 3055trailing underscores. Lv Zheng. ACPICA BZ 1135. 3056 3057Removed unnecessary conditional compilations across the Debugger and 3058Disassembler components where entire modules could be left uncompiled. 3059 3060The aapits test is deprecated and has been removed from the ACPICA git 3061tree. The test has never been completed and has not been maintained, thus 3062becoming rather useless. ACPICA BZ 1015, 794. 3063 3064A batch of small changes to close bugzilla and other reports: 3065- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 3066- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 3067- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 3068- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 3069Moore. 3070- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 3071ACPICA BZ 1184. 3072- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 3073operators. 3074- Debugger: Split debugger initialization/termination interfaces. Lv 3075Zheng. 3076- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 3077identification. 3078- AcpiExec: Add debug message during _REG method phase during table 3079load/init. 3080- AcpiNames: Fix a regression where some output was missing and no longer 3081emitted. 3082- Debugger: General cleanup and simplification. Lv Zheng. 3083- Disassembler: Cleanup use of several global option variables. Lv Zheng. 3084 3085Example Code and Data Size: These are the sizes for the OS-independent 3086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3087debug version of the code includes the debug output trace mechanism and 3088has a much larger code and data size. 3089 3090 Current Release: 3091 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3092 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3093 Previous Release: 3094 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3095 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3096 3097 30982) iASL Compiler/Disassembler and Tools: 3099 3100AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 3101were not handled properly and caused load errors. Now, properly invoke 3102and use the ACPICA auto-reallocate mechanism for ACPI table data 3103structures. ACPICA BZ 1188 3104 3105AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 3106BZ 1190. 3107 3108AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 3109AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 3110executed during initialization. ACPICA BZ 1187, 1189. 3111 3112iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 3113that corresponds to each disassembled ASL statement, to simplify 3114debugging. ACPICA BZ 1191. 3115 3116Debugger: Add option to the "objects" command to display a summary of the 3117current namespace objects (Object type and count). This is displayed if 3118the command is entered with no arguments. 3119 3120AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 3121 3122 3123---------------------------------------- 312417 July 2015. Summary of changes for version 20150717: 3125 31261) ACPICA kernel-resident subsystem: 3127 3128Improved the partitioning between the Debugger and Disassembler 3129components. This allows the Debugger to be used standalone within kernel 3130code without the Disassembler (which is used for single stepping also). 3131This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 3132 3133Debugger: Implemented a new command to trace the execution of control 3134methods (Trace). This is especially useful for the in-kernel version of 3135the debugger when file I/O may not be available for method trace output. 3136See the ACPICA reference for more information. Lv Zheng. 3137 3138Moved all C library prototypes (used for the local versions of these 3139functions when requested) to a new header, acclib.h 3140Cleaned up the use of non-ANSI C library functions. These functions are 3141implemented locally in ACPICA. Moved all such functions to a common 3142source file, utnonansi.c 3143 3144Debugger: Fixed a problem with the "!!" command (get last command 3145executed) where the debugger could enter an infinite loop and eventually 3146crash. 3147 3148Removed the use of local macros that were used for some of the standard C 3149library functions to automatically cast input parameters. This mostly 3150affected the is* functions where the input parameter is defined to be an 3151int. This required a few modifications to the main ACPICA source code to 3152provide casting for these functions and eliminate possible compiler 3153warnings for these parameters. 3154 3155Across the source code, added additional status/error checking to resolve 3156issues discovered by static source code analysis tools such as Coverity. 3157 3158Example Code and Data Size: These are the sizes for the OS-independent 3159acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3160debug version of the code includes the debug output trace mechanism and 3161has a much larger code and data size. 3162 3163 Current Release: 3164 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3165 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3166 Previous Release: 3167 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3168 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3169 3170 31712) iASL Compiler/Disassembler and Tools: 3172 3173iASL: Fixed a regression where the device map file feature no longer 3174worked properly when used in conjunction with the disassembler. It only 3175worked properly with the compiler itself. 3176 3177iASL: Implemented a new warning for method LocalX variables that are set 3178but never used (similar to a C compiler such as gcc). This also applies 3179to ArgX variables that are not defined by the parent method, and are 3180instead (legally) used as local variables. 3181 3182iASL/Preprocessor: Finished the pass-through of line numbers from the 3183preprocessor to the compiler. This ensures that compiler errors/warnings 3184have the correct original line numbers and filenames, regardless of any 3185#include files. 3186 3187iASL/Preprocessor: Fixed a couple of issues with comment handling and the 3188pass-through of comments to the preprocessor output file (which becomes 3189the compiler input file). Also fixed a problem with // comments that 3190appear after a math expression. 3191 3192iASL: Added support for the TCPA server table to the table compiler and 3193template generator. (The client table was already previously supported) 3194 3195iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 3196identify the iASL compiler. 3197 3198Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 3199multiple times. The new names are ACPI_SIGN_NEGATIVE and 3200ACPI_SIGN_POSITIVE. 3201 3202AcpiHelp: Update to expand help messages for the iASL preprocessor 3203directives. 3204 3205 3206---------------------------------------- 320719 June 2015. Summary of changes for version 20150619: 3208 3209Two regressions in version 20150616 have been addressed: 3210 3211Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 3212etc.) This update changes ACPICA to only use the standard headers for 3213functions, or the prototypes for the local versions of the C library 3214functions. Across the source code, this required some additional casts 3215for some Clib invocations for portability. Moved all local prototypes to 3216a new file, acclib.h 3217 3218Fixes several problems with recent changes to the handling of the FACS 3219table that could cause some systems not to boot. 3220 3221 3222---------------------------------------- 322316 June 2015. Summary of changes for version 20150616: 3224 3225 32261) ACPICA kernel-resident subsystem: 3227 3228Across the entire ACPICA source code base, the various macros for the C 3229library functions (such as ACPI_STRLEN, etc.) have been removed and 3230replaced by the standard C library names (strlen, etc.) The original 3231purpose for these macros is no longer applicable. This simplification 3232reduces the number of macros used in the ACPICA source code 3233significantly, improving readability and maintainability. 3234 3235Implemented support for a new ACPI table, the OSDT. This table, the 3236"override" SDT, can be loaded directly by the host OS at boot time. It 3237enables the replacement of existing namespace objects that were installed 3238via the DSDT and/or SSDTs. The primary purpose for this is to replace 3239buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 3240for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 3241Moore. 3242 3243Added support for systems with (improperly) two FACS tables -- a "32-bit" 3244table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 3245X field). This change will support both automatically. There continues to 3246be systems found with this issue. This support requires a change to the 3247AcpiSetFirmwareWakingVector interface. Also, a public global variable has 3248been added to allow the host to select which FACS is desired 3249(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 3250details Lv Zheng. 3251 3252Added a new feature to allow for systems that do not contain an FACS. 3253Although this is already supported on hardware-reduced platforms, the 3254feature has been extended for all platforms. The reasoning is that we do 3255not want to abort the entire ACPICA initialization just because the 3256system is seriously buggy and has no FACS. 3257 3258Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 3259not correctly transcribed from the ACPI specification in ACPICA version 326020150515. 3261 3262Implemented support for the _CLS object in the AcpiGetObjectInfo external 3263interface. 3264 3265Updated the definitions of the TCPA and TPM2 ACPI tables to the more 3266recent TCG ACPI Specification, December 14, 2014. Table disassembler and 3267compiler also updated. Note: The TCPA "server" table is not supported by 3268the disassembler/table-compiler at this time. 3269 3270ACPI 6.0: Added definitions for the new GIC version field in the MADT. 3271 3272Example Code and Data Size: These are the sizes for the OS-independent 3273acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3274debug version of the code includes the debug output trace mechanism and 3275has a much larger code and data size. 3276 3277 Current Release: 3278 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3279 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3280 Previous Release: 3281 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3282 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3283 3284 32852) iASL Compiler/Disassembler and Tools: 3286 3287Disassembler: Fixed a problem with the new symbolic operator disassembler 3288where incorrect ASL code could be emitted in some cases for the "non- 3289commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 3290ShiftRight. The actual problem cases seem to be rather unusual in common 3291ASL code, however. David Box. 3292 3293Modified the linux version of acpidump to obtain ACPI tables from not 3294just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 3295Zheng. 3296 3297iASL: Fixed a problem where the user preprocessor output file (.i) 3298contained extra data that was not expected. The compiler was using this 3299file as a temporary file and passed through #line directives in order to 3300keep compiler error messages in sync with the input file and line number 3301across multiple include files. The (.i) is no longer a temporary file as 3302the compiler uses a new, different file for the original purpose. 3303 3304iASL: Fixed a problem where comments within the original ASL source code 3305file were not passed through to the preprocessor output file, nor any 3306listing files. 3307 3308iASL: Fixed some issues for the handling of the "#include" preprocessor 3309directive and the similar (but not the same) "Include" ASL operator. 3310 3311iASL: Add support for the new OSDT in both the disassembler and compiler. 3312 3313iASL: Fixed a problem with the constant folding support where a Buffer 3314object could be incorrectly generated (incorrectly formed) during a 3315conversion to a Store() operator. 3316 3317AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 3318description text for the _REV predefined name. _REV now permanently 3319returns 2, as per the ACPI 6.0 specification. 3320 3321Debugger: Enhanced the output of the Debug ASL object for references 3322produced by the Index operator. For Buffers and strings, only output the 3323actual byte pointed to by the index. For packages, only print the single 3324package element decoded by the index. Previously, the entire 3325buffer/string/package was emitted. 3326 3327iASL/Table-compiler: Fixed a regression where the "generic" data types 3328were no longer recognized, causing errors. 3329 3330 3331---------------------------------------- 333215 May 2015. Summary of changes for version 20150515: 3333 3334This release implements most of ACPI 6.0 as described below. 3335 33361) ACPICA kernel-resident subsystem: 3337 3338Implemented runtime argument checking and return value checking for all 3339new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 3340_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 3341 3342Example Code and Data Size: These are the sizes for the OS-independent 3343acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3344debug version of the code includes the debug output trace mechanism and 3345has a much larger code and data size. 3346 3347 Current Release: 3348 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3349 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3350 Previous Release: 3351 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3352 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3353 3354 33552) iASL Compiler/Disassembler and Tools: 3356 3357iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 3358names (argument count validation and return value typechecking.) 3359 3360iASL disassembler and table compiler: implemented support for all new 3361ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 3362 3363iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 3364tables: FADT, MADT. 3365 3366iASL preprocessor: Added a new directive to enable inclusion of binary 3367blobs into ASL code. The new directive is #includebuffer. It takes a 3368binary file as input and emits a named ascii buffer object into the ASL 3369code. 3370 3371AcpiHelp: Added support for all new ACPI 6.0 predefined names. 3372 3373AcpiHelp: Added a new option, -d, to display all iASL preprocessor 3374directives. 3375 3376AcpiHelp: Added a new option, -t, to display all known/supported ACPI 3377tables. 3378 3379 3380---------------------------------------- 338110 April 2015. Summary of changes for version 20150410: 3382 3383Reverted a change introduced in version 20150408 that caused 3384a regression in the disassembler where incorrect operator 3385symbols could be emitted. 3386 3387 3388---------------------------------------- 338908 April 2015. Summary of changes for version 20150408: 3390 3391 33921) ACPICA kernel-resident subsystem: 3393 3394Permanently set the return value for the _REV predefined name. It now 3395returns 2 (was 5). This matches other ACPI implementations. _REV will be 3396deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 3397for ACPI 2.0 and later. It should never be used to differentiate or 3398identify operating systems. 3399 3400Added the "Windows 2015" string to the _OSI support. ACPICA will now 3401return TRUE to a query with this string. 3402 3403Fixed several issues with the local version of the printf function. 3404 3405Added the C99 compiler option (-std=c99) to the Unix makefiles. 3406 3407 Current Release: 3408 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 3409 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 3410 Previous Release: 3411 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3412 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3413 3414 34152) iASL Compiler/Disassembler and Tools: 3416 3417iASL: Implemented an enhancement to the constant folding feature to 3418transform the parse tree to a simple Store operation whenever possible: 3419 Add (2, 3, X) ==> is converted to: Store (5, X) 3420 X = 2 + 3 ==> is converted to: Store (5, X) 3421 3422Updated support for the SLIC table (Software Licensing Description Table) 3423in both the Data Table compiler and the disassembler. The SLIC table 3424support now conforms to "Microsoft Software Licensing Tables (SLIC and 3425MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 3426following the ACPI header is now defined to be "Proprietary Data", and as 3427such, can only be entered or displayed as a hex data block. 3428 3429Implemented full support for the MSDM table as described in the document 3430above. Note: The format of MSDM is similar to SLIC. Any MSDM data 3431following the ACPI header is defined to be "Proprietary Data", and can 3432only be entered or displayed as a hex data block. 3433 3434Implemented the -Pn option for the iASL Table Compiler (was only 3435implemented for the ASL compiler). This option disables the iASL 3436preprocessor. 3437 3438Disassembler: For disassembly of Data Tables, added a comment field 3439around the Ascii equivalent data that is emitted as part of the "Raw 3440Table Data" block. This prevents the iASL Preprocessor from possible 3441confusion if/when the table is compiled. 3442 3443Disassembler: Added an option (-df) to force the disassembler to assume 3444that the table being disassembled contains valid AML. This feature is 3445useful for disassembling AML files that contain ACPI signatures other 3446than DSDT or SSDT (such as OEMx or other signatures). 3447 3448Changes for the EFI version of the tools: 34491) Fixed a build error/issue 34502) Fixed a cast warning 3451 3452iASL: Fixed a path issue with the __FILE__ operator by making the 3453directory prefix optional within the internal SplitInputFilename 3454function. 3455 3456Debugger: Removed some unused global variables. 3457 3458Tests: Updated the makefile for proper generation of the AAPITS suite. 3459 3460 3461---------------------------------------- 346204 February 2015. Summary of changes for version 20150204: 3463 3464ACPICA kernel-resident subsystem: 3465 3466Updated all ACPICA copyrights and signons to 2014. Added the 2014 3467copyright to all module headers and signons, including the standard Linux 3468header. This affects virtually every file in the ACPICA core subsystem, 3469iASL compiler, all ACPICA utilities, and the test suites. 3470 3471Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 3472A raw gpe handling mechanism was created to allow better handling of GPE 3473storms that aren't easily managed by the normal handler. The raw handler 3474allows disabling/renabling of the the GPE so that interrupt storms can be 3475avoided in cases where events cannot be timely serviced. In this 3476scenario, handlers should use the AcpiSetGpe() API to disable/enable the 3477GPE. This API will leave the reference counts undisturbed, thereby 3478preventing unintentional clearing of the GPE when the intent in only to 3479temporarily disable it. Raw handlers allow enabling and disabling of a 3480GPE by removing GPE register locking. As such, raw handlers much provide 3481their own locks while using GPE API's to protect access to GPE data 3482structures. 3483Lv Zheng 3484 3485Events: Always modify GPE registers under the GPE lock. 3486Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 3487values. Reported as bug by joe.liu@apple.com. 3488 3489Unix makefiles: Separate option to disable optimizations and 3490_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 3491NOOPT disable option and creates a separate flag (NOFORTIFY) for this 3492purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 3493errors when building ACPICA. This allows disabling the option without 3494also having to disable optimazations. 3495David Box 3496 3497 Current Release: 3498 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3499 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 3500 3501-- 3502-------------------------------------- 350307 November 2014. Summary of changes for version 20141107: 3504 3505This release is available at https://acpica.org/downloads 3506 3507This release introduces and implements language extensions to ASL that 3508provide support for symbolic ("C-style") operators and expressions. These 3509language extensions are known collectively as ASL+. 3510 3511 35121) iASL Compiler/Disassembler and Tools: 3513 3514Disassembler: Fixed a problem with disassembly of the UartSerialBus 3515macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 3516Box. 3517 3518Disassembler: Fixed the Unicode macro support to add escape sequences. 3519All non-printable ASCII values are emitted as escape sequences, as well 3520as the standard escapes for quote and backslash. Ensures that the 3521disassembled macro can be correctly recompiled. 3522 3523iASL: Added Printf/Fprintf macros for formatted output. These macros are 3524translated to existing AML Concatenate and Store operations. Printf 3525writes to the ASL Debug object. Fprintf allows the specification of an 3526ASL name as the target. Only a single format specifier is required, %o, 3527since the AML interpreter dynamically converts objects to the required 3528type. David E. Box. 3529 3530 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3531 (Concatenate (Concatenate (Concatenate ("", Arg0), 3532 ": Unexpected value for "), Arg1), ", "), Arg2), 3533 " at line "), Arg3), Debug) 3534 3535 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 3536 Arg0, Arg1, Arg2, Arg3) 3537 3538 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3539 ("", Arg1), ": "), Arg0), " Successful"), STR1) 3540 3541 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 3542 3543iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 3544ASL parse tree before the AML code is generated. This allows blocks of 3545ASL code to be removed in order to help locate and identify problem 3546devices and/or code. David E. Box. 3547 3548AcpiExec: Added support (-fi) for an optional namespace object 3549initialization file. This file specifies initial values for namespace 3550objects as necessary for debugging and testing different ASL code paths 3551that may be taken as a result of BIOS options. 3552 3553 35542) Overview of symbolic operator support for ASL (ASL+) 3555------------------------------------------------------- 3556 3557As an extension to the ASL language, iASL implements support for symbolic 3558(C-style) operators for math and logical expressions. This can greatly 3559simplify ASL code as well as improve both readability and 3560maintainability. These language extensions can exist concurrently with 3561all legacy ASL code and expressions. 3562 3563The symbolic extensions are 100% compatible with existing AML 3564interpreters, since no new AML opcodes are created. To implement the 3565extensions, the iASL compiler transforms the symbolic expressions into 3566the legacy ASL/AML equivalents at compile time. 3567 3568Full symbolic expressions are supported, along with the standard C 3569precedence and associativity rules. 3570 3571Full disassembler support for the symbolic expressions is provided, and 3572creates an automatic migration path for existing ASL code to ASL+ code 3573via the disassembly process. By default, the disassembler now emits ASL+ 3574code with symbolic expressions. An option (-dl) is provided to force the 3575disassembler to emit legacy ASL code if desired. 3576 3577Below is the complete list of the currently supported symbolic operators 3578with examples. See the iASL User Guide for additional information. 3579 3580 3581ASL+ Syntax Legacy ASL Equivalent 3582----------- --------------------- 3583 3584 // Math operators 3585 3586Z = X + Y Add (X, Y, Z) 3587Z = X - Y Subtract (X, Y, Z) 3588Z = X * Y Multiply (X, Y, Z) 3589Z = X / Y Divide (X, Y, , Z) 3590Z = X % Y Mod (X, Y, Z) 3591Z = X << Y ShiftLeft (X, Y, Z) 3592Z = X >> Y ShiftRight (X, Y, Z) 3593Z = X & Y And (X, Y, Z) 3594Z = X | Y Or (X, Y, Z) 3595Z = X ^ Y Xor (X, Y, Z) 3596Z = ~X Not (X, Z) 3597X++ Increment (X) 3598X-- Decrement (X) 3599 3600 // Logical operators 3601 3602(X == Y) LEqual (X, Y) 3603(X != Y) LNotEqual (X, Y) 3604(X < Y) LLess (X, Y) 3605(X > Y) LGreater (X, Y) 3606(X <= Y) LLessEqual (X, Y) 3607(X >= Y) LGreaterEqual (X, Y) 3608(X && Y) LAnd (X, Y) 3609(X || Y) LOr (X, Y) 3610(!X) LNot (X) 3611 3612 // Assignment and compound assignment operations 3613 3614X = Y Store (Y, X) 3615X += Y Add (X, Y, X) 3616X -= Y Subtract (X, Y, X) 3617X *= Y Multiply (X, Y, X) 3618X /= Y Divide (X, Y, , X) 3619X %= Y Mod (X, Y, X) 3620X <<= Y ShiftLeft (X, Y, X) 3621X >>= Y ShiftRight (X, Y, X) 3622X &= Y And (X, Y, X) 3623X |= Y Or (X, Y, X) 3624X ^= Y Xor (X, Y, X) 3625 3626 36273) ASL+ Examples: 3628----------------- 3629 3630Legacy ASL: 3631 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 3632 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 36330x03FB), 3634 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 3635 { 3636 And (MEMB, 0xFFFFFFF0, SRMB) 3637 Store (MEMB, Local2) 3638 Store (PDBM, Local1) 3639 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 3640 Store (SRMB, MEMB) 3641 Or (PDBM, 0x02, PDBM) 3642 } 3643 3644ASL+ version: 3645 If (((R510 & 0x03FB) == 0x02E0) || 3646 ((R520 & 0x03FB) == 0x02E0) || 3647 ((R530 & 0x03FB) == 0x02E0) || 3648 ((R540 & 0x03FB) == 0x02E0)) 3649 { 3650 SRMB = (MEMB & 0xFFFFFFF0) 3651 Local2 = MEMB 3652 Local1 = PDBM 3653 PDBM &= 0xFFFFFFFFFFFFFFF9 3654 MEMB = SRMB 3655 PDBM |= 0x02 3656 } 3657 3658Legacy ASL: 3659 Store (0x1234, Local1) 3660 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 3661 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 3662 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 3663 Store (Index (PKG1, 0x03), Local6) 3664 Store (Add (Local3, Local2), Debug) 3665 Add (Local1, 0x0F, Local2) 3666 Add (Local1, Multiply (Local2, Local3), Local2) 3667 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 3668 3669ASL+ version: 3670 Local1 = 0x1234 3671 Local3 = (((Local1 + TEST) + 0x20) * Local2) 3672 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 3673 Local3 = (Local1 + (TEST + (0x20 * Local2))) 3674 Local6 = Index (PKG1, 0x03) 3675 Debug = (Local3 + Local2) 3676 Local2 = (Local1 + 0x0F) 3677 Local2 = (Local1 + (Local2 * Local3)) 3678 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 3679 3680 3681---------------------------------------- 368226 September 2014. Summary of changes for version 20140926: 3683 36841) ACPICA kernel-resident subsystem: 3685 3686Updated the GPIO operation region handler interface (GeneralPurposeIo). 3687In order to support GPIO Connection objects with multiple pins, along 3688with the related Field objects, the following changes to the interface 3689have been made: The Address is now defined to be the offset in bits of 3690the field unit from the previous invocation of a Connection. It can be 3691viewed as a "Pin Number Index" into the connection resource descriptor. 3692The BitWidth is the exact bit width of the field. It is usually one bit, 3693but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 3694additional information and examples. 3695 3696GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 3697corresponding _Lxx/_Exx methods are disabled (they may have been enabled 3698by the firmware), so that they cannot fire until they are enabled via 3699AcpiUpdateAllGpes. Rafael J. Wysocki. 3700 3701Added a new return flag for the Event/GPE status interfaces -- 3702AcpiGetEventStatus and AcpiGetGpeStatus. The new 3703ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 3704GPE currently has a handler associated with it, and can thus actually 3705affect the system. Lv Zheng. 3706 3707Example Code and Data Size: These are the sizes for the OS-independent 3708acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3709debug version of the code includes the debug output trace mechanism and 3710has a much larger code and data size. 3711 3712 Current Release: 3713 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3714 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3715 Previous Release: 3716 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3717 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3718 37192) iASL Compiler/Disassembler and Tools: 3720 3721iASL: Fixed a memory allocation/free regression introduced in 20140828 3722that could cause the compiler to crash. This was introduced inadvertently 3723during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 37241113. 3725 3726iASL: Removed two error messages that have been found to create false 3727positives, until they can be fixed and fully validated (ACPICA BZ 1112): 37281) Illegal forward reference within a method 37292) Illegal reference across two methods 3730 3731iASL: Implemented a new option (-lm) to create a hardware mapping file 3732that summarizes all GPIO, I2C, SPI, and UART connections. This option 3733works for both the compiler and disassembler. See the iASL compiler user 3734guide for additional information and examples (section 6.4.6). 3735 3736AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 3737version 2. This corrects the AE_BAD_HEADER exception seen on systems with 3738a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 3739 3740AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 3741unless STDIN is actually a terminal. Assists with batch-mode processing. 3742ACPICA BZ 1114. 3743 3744Disassembler/AcpiHelp: Added another large group of recognized _HID 3745values. 3746 3747 3748---------------------------------------- 374928 August 2014. Summary of changes for version 20140828: 3750 37511) ACPICA kernel-resident subsystem: 3752 3753Fixed a problem related to the internal use of the Timer() operator where 3754a 64-bit divide could cause an attempted link to a double-precision math 3755library. This divide is not actually necessary, so the code was 3756restructured to eliminate it. Lv Zheng. 3757 3758ACPI 5.1: Added support for the runtime validation of the _DSD package 3759(similar to the iASL support). 3760 3761ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 3762SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 3763 3764Example Code and Data Size: These are the sizes for the OS-independent 3765acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3766debug version of the code includes the debug output trace mechanism and 3767has a much larger code and data size. 3768 3769 Current Release: 3770 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3771 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3772 Previous Release: 3773 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 3774 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3775 37762) iASL Compiler/Disassembler and Tools: 3777 3778AcpiExec: Fixed a problem on unix systems where the original terminal 3779state was not always properly restored upon exit. Seen when using the -v 3780option. ACPICA BZ 1104. 3781 3782iASL: Fixed a problem with the validation of the ranges/length within the 3783Memory24 resource descriptor. There was a boundary condition when the 3784range was equal to the (length -1) caused by the fact that these values 3785are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 3786 3787Disassembler: Fixed a problem with the GpioInt descriptor interrupt 3788polarity 3789flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 3790is 3791now supported properly. 3792 3793ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 3794in the disassembler, data table compiler, and table template generator. 3795 3796iASL: Added a requirement for Device() objects that one of either a _HID 3797or _ADR must exist within the scope of a Device, as per the ACPI 3798specification. Remove a similar requirement that was incorrectly in place 3799for the _DSD object. 3800 3801iASL: Added error detection for illegal named references within control 3802methods that would cause runtime failures. Now trapped as errors are: 1) 3803References to objects within a non-parent control method. 2) Forward 3804references (within a method) -- for control methods, AML interpreters use 3805a one-pass parse of control methods. ACPICA BZ 1008. 3806 3807iASL: Added error checking for dependencies related to the _PSx power 3808methods. ACPICA BZ 1029. 38091) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 3810_PS3. 38112) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 3812scope. 3813 3814iASL and table compiler: Cleanup miscellaneous memory leaks by fully 3815deploying the existing object and string caches and adding new caches for 3816the table compiler. 3817 3818iASL: Split the huge parser source file into multiple subfiles to improve 3819manageability. Generation now requires the M4 macro preprocessor, which 3820is part of the Bison distribution on both unix and windows platforms. 3821 3822AcpiSrc: Fixed and removed all extraneous warnings generated during 3823entire ACPICA source code scan and/or conversion. 3824 3825 3826---------------------------------------- 3827 382824 July 2014. Summary of changes for version 20140724: 3829 3830The ACPI 5.1 specification has been released and is available at: 3831http://uefi.org/specs/access 3832 3833 38340) ACPI 5.1 support in ACPICA: 3835 3836ACPI 5.1 is fully supported in ACPICA as of this release. 3837 3838New predefined names. Support includes iASL and runtime ACPICA 3839validation. 3840 _CCA (Cache Coherency Attribute). 3841 _DSD (Device-Specific Data). David Box. 3842 3843Modifications to existing ACPI tables. Support includes headers, iASL 3844Data Table compiler, disassembler, and the template generator. 3845 FADT - New fields and flags. Graeme Gregory. 3846 GTDT - One new subtable and new fields. Tomasz Nowicki. 3847 MADT - Two new subtables. Tomasz Nowicki. 3848 PCCT - One new subtable. 3849 3850Miscellaneous. 3851 New notification type for System Resource Affinity change events. 3852 3853 38541) ACPICA kernel-resident subsystem: 3855 3856Fixed a regression introduced in 20140627 where a fault can happen during 3857the deletion of Alias AML namespace objects. The problem affected both 3858the core ACPICA and the ACPICA tools including iASL and AcpiExec. 3859 3860Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 3861simple mechanism to enable wake GPEs that have no associated handler or 3862control method. Rafael Wysocki. 3863 3864Updated the AcpiEnableGpe interface to disallow the enable if there is no 3865handler or control method associated with the particular GPE. This will 3866help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 3867 3868Updated GPE handling and dispatch by disabling the GPE before clearing 3869the status bit for edge-triggered GPEs. Lv Zheng. 3870 3871Added Timer() support to the AML Debug object. The current timer value is 3872now displayed with each invocation of (Store to) the debug object to 3873enable simple generation of execution times for AML code (method 3874execution for example.) ACPICA BZ 1093. 3875 3876Example Code and Data Size: These are the sizes for the OS-independent 3877acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3878debug version of the code includes the debug output trace mechanism and 3879has a much larger code and data size. 3880 3881 Current Release: 3882 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 3883 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3884 Previous Release: 3885 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3886 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3887 3888 38892) iASL Compiler/Disassembler and Tools: 3890 3891Fixed an issue with the recently added local printf implementation, 3892concerning width/precision specifiers that could cause incorrect output. 3893Lv Zheng. ACPICA BZ 1094. 3894 3895Disassembler: Added support to detect buffers that contain UUIDs and 3896disassemble them to an invocation of the ToUUID operator. Also emit 3897commented descriptions of known ACPI-related UUIDs. 3898 3899AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 3900-u. Adds three new files. 3901 3902iASL: Update table compiler and disassembler for DMAR table changes that 3903were introduced in September 2013. With assistance by David Woodhouse. 3904 3905---------------------------------------- 390627 June 2014. Summary of changes for version 20140627: 3907 39081) ACPICA kernel-resident subsystem: 3909 3910Formatted Output: Implemented local versions of standard formatted output 3911utilities such as printf, etc. Over time, it has been discovered that 3912there are in fact many portability issues with printf, and the addition 3913of this feature will fix/prevent these issues once and for all. Some 3914known issues are summarized below: 3915 39161) Output of 64-bit values is not portable. For example, UINT64 is %ull 3917for the Linux kernel and is %uI64 for some MSVC versions. 39182) Invoking printf consistently in a manner that is portable across both 391932-bit and 64-bit platforms is difficult at best in many situations. 39203) The output format for pointers varies from system to system (leading 3921zeros especially), and leads to inconsistent output from ACPICA across 3922platforms. 39234) Certain platform-specific printf formats may conflict with ACPICA use. 39245) If there is no local C library available, ACPICA now has local support 3925for printf. 3926 3927-- To address these printf issues in a complete manner, ACPICA now 3928directly implements a small subset of printf format specifiers, only 3929those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 3930 3931Implemented support for ACPICA generation within the EFI environment. 3932Initially, the AcpiDump utility is supported in the UEFI shell 3933environment. Lv Zheng. 3934 3935Added a new external interface, AcpiLogError, to improve ACPICA 3936portability. This allows the host to redirect error messages from the 3937ACPICA utilities. Lv Zheng. 3938 3939Added and deployed new OSL file I/O interfaces to improve ACPICA 3940portability: 3941 AcpiOsOpenFile 3942 AcpiOsCloseFile 3943 AcpiOsReadFile 3944 AcpiOsWriteFile 3945 AcpiOsGetFileOffset 3946 AcpiOsSetFileOffset 3947There are C library implementations of these functions in the new file 3948service_layers/oslibcfs.c -- however, the functions can be implemented by 3949the local host in any way necessary. Lv Zheng. 3950 3951Implemented a mechanism to disable/enable ACPI table checksum validation 3952at runtime. This can be useful when loading tables very early during OS 3953initialization when it may not be possible to map the entire table in 3954order to compute the checksum. Lv Zheng. 3955 3956Fixed a buffer allocation issue for the Generic Serial Bus support. 3957Originally, a fixed buffer length was used. This change allows for 3958variable-length buffers based upon the protocol indicated by the field 3959access attributes. Reported by Lan Tianyu. Lv Zheng. 3960 3961Fixed a problem where an object detached from a namespace node was not 3962properly terminated/cleared and could cause a circular list problem if 3963reattached. ACPICA BZ 1063. David Box. 3964 3965Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 3966 3967Fixed a possible memory leak in an error return path within the function 3968AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 3969 3970Example Code and Data Size: These are the sizes for the OS-independent 3971acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3972debug version of the code includes the debug output trace mechanism and 3973has a much larger code and data size. 3974 3975 Current Release: 3976 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3977 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3978 Previous Release: 3979 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3980 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3981 3982 39832) iASL Compiler/Disassembler and Tools: 3984 3985Disassembler: Add dump of ASCII equivalent text within a comment at the 3986end of each line of the output for the Buffer() ASL operator. 3987 3988AcpiDump: Miscellaneous changes: 3989 Fixed repetitive table dump in -n mode. 3990 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 3991the ACPI 2.0 GUID fails. 3992 3993iASL: Fixed a problem where the compiler could fault if incorrectly given 3994an acpidump output file as input. ACPICA BZ 1088. David Box. 3995 3996AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 3997they are invoked without any arguments. 3998 3999Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 40001086. Colin Ian King. 4001 4002Disassembler: Cleaned up a block of code that extracts a parent Op 4003object. Added a comment that explains that the parent is guaranteed to be 4004valid in this case. ACPICA BZ 1069. 4005 4006 4007---------------------------------------- 400824 April 2014. Summary of changes for version 20140424: 4009 40101) ACPICA kernel-resident subsystem: 4011 4012Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 4013Some of these tables are known to contain a trailing NULL entry. Lv 4014Zheng. 4015 4016Removed an extraneous error message for the case where there are a large 4017number of system GPEs (> 124). This was the "32-bit FADT register is too 4018long to convert to GAS struct" message, which is irrelevant for GPEs 4019since the GPEx_BLK_LEN fields of the FADT are always used instead of the 4020(limited capacity) GAS bit length. Also, several changes to ensure proper 4021support for GPE numbers > 255, where some "GPE number" fields were 8-bits 4022internally. 4023 4024Implemented and deployed additional configuration support for the public 4025ACPICA external interfaces. Entire classes of interfaces can now be 4026easily modified or configured out, replaced by stubbed inline functions 4027by default. Lv Zheng. 4028 4029Moved all public ACPICA runtime configuration globals to the public 4030ACPICA external interface file for convenience. Also, removed some 4031obsolete/unused globals. See the file acpixf.h. Lv Zheng. 4032 4033Documentation: Added a new section to the ACPICA reference describing the 4034maximum number of GPEs that can be supported by the FADT-defined GPEs in 4035block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 4036reference. 4037 4038Example Code and Data Size: These are the sizes for the OS-independent 4039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4040debug version of the code includes the debug output trace mechanism and 4041has a much larger code and data size. 4042 4043 Current Release: 4044 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4045 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4046 Previous Release: 4047 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4048 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4049 4050 40512) iASL Compiler/Disassembler and Tools: 4052 4053iASL and disassembler: Add full support for the LPIT table (Low Power 4054Idle Table). Includes support in the disassembler, data table compiler, 4055and template generator. 4056 4057AcpiDump utility: 40581) Add option to force the use of the RSDT (over the XSDT). 40592) Improve validation of the RSDP signature (use 8 chars instead of 4). 4060 4061iASL: Add check for predefined packages that are too large. For 4062predefined names that contain subpackages, check if each subpackage is 4063too large. (Check for too small already exists.) 4064 4065Debugger: Updated the GPE command (which simulates a GPE by executing the 4066GPE code paths in ACPICA). The GPE device is now optional, and defaults 4067to the GPE 0/1 FADT-defined blocks. 4068 4069Unix application OSL: Update line-editing support. Add additional error 4070checking and take care not to reset terminal attributes on exit if they 4071were never set. This should help guarantee that the terminal is always 4072left in the previous state on program exit. 4073 4074 4075---------------------------------------- 407625 March 2014. Summary of changes for version 20140325: 4077 40781) ACPICA kernel-resident subsystem: 4079 4080Updated the auto-serialize feature for control methods. This feature 4081automatically serializes all methods that create named objects in order 4082to prevent runtime errors. The update adds support to ignore the 4083currently executing AML SyncLevel when invoking such a method, in order 4084to prevent disruption of any existing SyncLevel priorities that may exist 4085in the AML code. Although the use of SyncLevels is relatively rare, this 4086change fixes a regression where an AE_AML_MUTEX_ORDER exception can 4087appear on some machines starting with the 20140214 release. 4088 4089Added a new external interface to allow the host to install ACPI tables 4090very early, before the namespace is even created. AcpiInstallTable gives 4091the host additional flexibility for ACPI table management. Tables can be 4092installed directly by the host as if they had originally appeared in the 4093XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 4094(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 4095with additional internal restructuring and cleanup. See the ACPICA 4096Reference for interface details. Lv Zheng. 4097 4098Added validation of the checksum for all incoming dynamically loaded 4099tables (via external interfaces or via AML Load/LoadTable operators). Lv 4100Zheng. 4101 4102Updated the use of the AcpiOsWaitEventsComplete interface during Notify 4103and GPE handler removal. Restructured calls to eliminate possible race 4104conditions. Lv Zheng. 4105 4106Added a warning for the use/execution of the ASL/AML Unload (table) 4107operator. This will help detect and identify machines that use this 4108operator if and when it is ever used. This operator has never been seen 4109in the field and the usage model and possible side-effects of the drastic 4110runtime action of a full table removal are unknown. 4111 4112Reverted the use of #pragma push/pop which was introduced in the 20140214 4113release. It appears that push and pop are not implemented by enough 4114compilers to make the use of this feature feasible for ACPICA at this 4115time. However, these operators may be deployed in a future ACPICA 4116release. 4117 4118Added the missing EXPORT_SYMBOL macros for the install and remove SCI 4119handler interfaces. 4120 4121Source code generation: 41221) Disabled the use of the "strchr" macro for the gcc-specific 4123generation. For some versions of gcc, this macro can periodically expose 4124a compiler bug which in turn causes compile-time error(s). 41252) Added support for PPC64 compilation. Colin Ian King. 4126 4127Example Code and Data Size: These are the sizes for the OS-independent 4128acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4129debug version of the code includes the debug output trace mechanism and 4130has a much larger code and data size. 4131 4132 Current Release: 4133 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4134 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4135 Previous Release: 4136 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4137 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4138 4139 41402) iASL Compiler/Disassembler and Tools: 4141 4142Disassembler: Added several new features to improve the readability of 4143the resulting ASL code. Extra information is emitted within comment 4144fields in the ASL code: 41451) Known _HID/_CID values are decoded to descriptive text. 41462) Standard values for the Notify() operator are decoded to descriptive 4147text. 41483) Target operands are expanded to full pathnames (in a comment) when 4149possible. 4150 4151Disassembler: Miscellaneous updates for extern() handling: 41521) Abort compiler if file specified by -fe option does not exist. 41532) Silence unnecessary warnings about argument count mismatches. 41543) Update warning messages concerning unresolved method externals. 41554) Emit "UnknownObj" keyword for externals whose type cannot be 4156determined. 4157 4158AcpiHelp utility: 41591) Added the -a option to display both the ASL syntax and the AML 4160encoding for an input ASL operator. This effectively displays all known 4161information about an ASL operator with one AcpiHelp invocation. 41622) Added substring match support (similar to a wildcard) for the -i 4163(_HID/PNP IDs) option. 4164 4165iASL/Disassembler: Since this tool does not yet support execution on big- 4166endian machines, added detection of endianness and an error message if 4167execution is attempted on big-endian. Support for big-endian within iASL 4168is a feature that is on the ACPICA to-be-done list. 4169 4170AcpiBin utility: 41711) Remove option to extract binary files from an acpidump; this function 4172is made obsolete by the AcpiXtract utility. 41732) General cleanup of open files and allocated buffers. 4174 4175 4176---------------------------------------- 417714 February 2014. Summary of changes for version 20140214: 4178 41791) ACPICA kernel-resident subsystem: 4180 4181Implemented a new mechanism to proactively prevent problems with ill- 4182behaved reentrant control methods that create named ACPI objects. This 4183behavior is illegal as per the ACPI specification, but is nonetheless 4184frequently seen in the field. Previously, this could lead to an 4185AE_ALREADY_EXISTS exception if the method was actually entered by more 4186than one thread. This new mechanism detects such methods at table load 4187time and marks them "serialized" to prevent reentrancy. A new global 4188option, AcpiGbl_AutoSerializeMethods, has been added to disable this 4189feature if desired. This mechanism and global option obsoletes and 4190supersedes the previous AcpiGbl_SerializeAllMethods option. 4191 4192Added the "Windows 2013" string to the _OSI support. ACPICA will now 4193respond TRUE to _OSI queries with this string. It is the stated policy of 4194ACPICA to add new strings to the _OSI support as soon as possible after 4195they are defined. See the full ACPICA _OSI policy which has been added to 4196the utilities/utosi.c file. 4197 4198Hardened/updated the _PRT return value auto-repair code: 41991) Do not abort the repair on a single subpackage failure, continue to 4200check all subpackages. 42012) Add check for the minimum subpackage length (4). 42023) Properly handle extraneous NULL package elements. 4203 4204Added support to avoid the possibility of infinite loops when traversing 4205object linked lists. Never allow an infinite loop, even in the face of 4206corrupted object lists. 4207 4208ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 4209pack(pop) directives to ensure that the ACPICA headers are independent of 4210compiler settings or other host headers. 4211 4212Example Code and Data Size: These are the sizes for the OS-independent 4213acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4214debug version of the code includes the debug output trace mechanism and 4215has a much larger code and data size. 4216 4217 Current Release: 4218 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4219 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4220 Previous Release: 4221 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4222 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4223 4224 42252) iASL Compiler/Disassembler and Tools: 4226 4227iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 4228first reserved field was incorrectly forced to have a value of zero. This 4229change correctly forces the field to have a value of one. ACPICA BZ 1081. 4230 4231Debugger: Added missing support for the "Extra" and "Data" subobjects 4232when displaying object data. 4233 4234Debugger: Added support to display entire object linked lists when 4235displaying object data. 4236 4237iASL: Removed the obsolete -g option to obtain ACPI tables from the 4238Windows registry. This feature has been superseded by the acpidump 4239utility. 4240 4241 4242---------------------------------------- 424314 January 2014. Summary of changes for version 20140114: 4244 42451) ACPICA kernel-resident subsystem: 4246 4247Updated all ACPICA copyrights and signons to 2014. Added the 2014 4248copyright to all module headers and signons, including the standard Linux 4249header. This affects virtually every file in the ACPICA core subsystem, 4250iASL compiler, all ACPICA utilities, and the test suites. 4251 4252Improved parameter validation for AcpiInstallGpeBlock. Added the 4253following checks: 42541) The incoming device handle refers to type ACPI_TYPE_DEVICE. 42552) There is not already a GPE block attached to the device. 4256Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 4257device. 4258 4259Correctly support "references" in the ACPI_OBJECT. This change fixes the 4260support to allow references (namespace nodes) to be passed as arguments 4261to control methods via the evaluate object interface. This is probably 4262most useful for testing purposes, however. 4263 4264Improved support for 32/64 bit physical addresses in printf()-like 4265output. This change improves the support for physical addresses in printf 4266debug statements and other output on both 32-bit and 64-bit hosts. It 4267consistently outputs the appropriate number of bytes for each host. The 4268%p specifier is unsatisfactory since it does not emit uniform output on 4269all hosts/clib implementations (on some, leading zeros are not supported, 4270leading to difficult-to-read output). 4271 4272Example Code and Data Size: These are the sizes for the OS-independent 4273acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4274debug version of the code includes the debug output trace mechanism and 4275has a much larger code and data size. 4276 4277 Current Release: 4278 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4279 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4280 Previous Release: 4281 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4282 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4283 4284 42852) iASL Compiler/Disassembler and Tools: 4286 4287iASL: Fix a possible fault when using the Connection() operator. Fixes a 4288problem if the parent Field definition for the Connection operator refers 4289to an operation region that does not exist. ACPICA BZ 1064. 4290 4291AcpiExec: Load of local test tables is now optional. The utility has the 4292capability to load some various tables to test features of ACPICA. 4293However, there are enough of them that the output of the utility became 4294confusing. With this change, only the required local tables are displayed 4295(RSDP, XSDT, etc.) along with the actual tables loaded via the command 4296line specification. This makes the default output simler and easier to 4297understand. The -el command line option restores the original behavior 4298for testing purposes. 4299 4300AcpiExec: Added support for overlapping operation regions. This change 4301expands the simulation of operation regions by supporting regions that 4302overlap within the given address space. Supports SystemMemory and 4303SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 4304 4305AcpiExec: Added region handler support for PCI_Config and EC spaces. This 4306allows AcpiExec to simulate these address spaces, similar to the current 4307support for SystemMemory and SystemIO. 4308 4309Debugger: Added new command to read/write/compare all namespace objects. 4310The command "test objects" will exercise the entire namespace by writing 4311new values to each data object, and ensuring that the write was 4312successful. The original value is then restored and verified. 4313 4314Debugger: Added the "test predefined" command. This change makes this 4315test public and puts it under the new "test" command. The test executes 4316each and every predefined name within the current namespace. 4317 4318 4319---------------------------------------- 432018 December 2013. Summary of changes for version 20131218: 4321 4322Global note: The ACPI 5.0A specification was released this month. There 4323are no changes needed for ACPICA since this release of ACPI is an 4324errata/clarification release. The specification is available at 4325acpi.info. 4326 4327 43281) ACPICA kernel-resident subsystem: 4329 4330Added validation of the XSDT root table if it is present. Some older 4331platforms contain an XSDT that is ill-formed or otherwise invalid (such 4332as containing some or all entries that are NULL pointers). This change 4333adds a new function to validate the XSDT before actually using it. If the 4334XSDT is found to be invalid, ACPICA will now automatically fall back to 4335using the RSDT instead. Original implementation by Zhao Yakui. Ported to 4336ACPICA and enhanced by Lv Zheng and Bob Moore. 4337 4338Added a runtime option to ignore the XSDT and force the use of the RSDT. 4339This change adds a runtime option that will force ACPICA to use the RSDT 4340instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 4341requires that an XSDT be used instead of the RSDT, the XSDT has been 4342found to be corrupt or ill-formed on some machines. Lv Zheng. 4343 4344Added a runtime option to favor 32-bit FADT register addresses over the 434564-bit addresses. This change adds an option to favor 32-bit FADT 4346addresses when there is a conflict between the 32-bit and 64-bit versions 4347of the same register. The default behavior is to use the 64-bit version 4348in accordance with the ACPI specification. This can now be overridden via 4349the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 4350 4351During the change above, the internal "Convert FADT" and "Verify FADT" 4352functions have been merged to simplify the code, making it easier to 4353understand and maintain. ACPICA BZ 933. 4354 4355Improve exception reporting and handling for GPE block installation. 4356Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 4357status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 4358 4359Added helper macros to extract bus/segment numbers from the HEST table. 4360This change adds two macros to extract the encoded bus and segment 4361numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 4362Betty Dall <betty.dall@hp.com> 4363 4364Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 4365by ACPICA. It is not a public macro, so it should have no effect on 4366existing OSV code. Lv Zheng. 4367 4368Example Code and Data Size: These are the sizes for the OS-independent 4369acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4370debug version of the code includes the debug output trace mechanism and 4371has a much larger code and data size. 4372 4373 Current Release: 4374 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4375 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4376 Previous Release: 4377 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4378 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4379 4380 43812) iASL Compiler/Disassembler and Tools: 4382 4383Disassembler: Improved pathname support for emitted External() 4384statements. This change adds full pathname support for external names 4385that have been resolved internally by the inclusion of additional ACPI 4386tables (via the iASL -e option). Without this change, the disassembler 4387can emit multiple externals for the same object, or it become confused 4388when the Scope() operator is used on an external object. Overall, greatly 4389improves the ability to actually recompile the emitted ASL code when 4390objects a referenced across multiple ACPI tables. Reported by Michael 4391Tsirkin (mst@redhat.com). 4392 4393Tests/ASLTS: Updated functional control suite to execute with no errors. 4394David Box. Fixed several errors related to the testing of the interpreter 4395slack mode. Lv Zheng. 4396 4397iASL: Added support to detect names that are declared within a control 4398method, but are unused (these are temporary names that are only valid 4399during the time the method is executing). A remark is issued for these 4400cases. ACPICA BZ 1022. 4401 4402iASL: Added full support for the DBG2 table. Adds full disassembler, 4403table compiler, and template generator support for the DBG2 table (Debug 4404Port 2 table). 4405 4406iASL: Added full support for the PCCT table, update the table definition. 4407Updates the PCCT table definition in the actbl3.h header and adds table 4408compiler and template generator support. 4409 4410iASL: Added an option to emit only error messages (no warnings/remarks). 4411The -ve option will enable only error messages, warnings and remarks are 4412suppressed. This can simplify debugging when only the errors are 4413important, such as when an ACPI table is disassembled and there are many 4414warnings and remarks -- but only the actual errors are of real interest. 4415 4416Example ACPICA code (source/tools/examples): Updated the example code so 4417that it builds to an actual working program, not just example code. Added 4418ACPI tables and execution of an example control method in the DSDT. Added 4419makefile support for Unix generation. 4420 4421 4422---------------------------------------- 442315 November 2013. Summary of changes for version 20131115: 4424 4425This release is available at https://acpica.org/downloads 4426 4427 44281) ACPICA kernel-resident subsystem: 4429 4430Resource Manager: Fixed loop termination for the "get AML length" 4431function. The loop previously had an error termination on a NULL resource 4432pointer, which can never happen since the loop simply increments a valid 4433resource pointer. This fix changes the loop to terminate with an error on 4434an invalid end-of-buffer condition. The problem can be seen as an 4435infinite loop by callers to AcpiSetCurrentResources with an invalid or 4436corrupted resource descriptor, or a resource descriptor that is missing 4437an END_TAG descriptor. Reported by Dan Carpenter 4438<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 4439 4440Table unload and ACPICA termination: Delete all attached data objects 4441during namespace node deletion. This fix updates namespace node deletion 4442to delete the entire list of attached objects (attached via 4443AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 44441024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 4445 4446ACPICA termination: Added support to delete all objects attached to the 4447root namespace node. This fix deletes any and all objects that have been 4448attached to the root node via AcpiAttachData. Previously, none of these 4449objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 4450 4451Debug output: Do not emit the function nesting level for the in-kernel 4452build. The nesting level is really only useful during a single-thread 4453execution. Therefore, only enable this output for the AcpiExec utility. 4454Also, only emit the thread ID when executing under AcpiExec (Context 4455switches are still always detected and a message is emitted). ACPICA BZ 4456972. 4457 4458Example Code and Data Size: These are the sizes for the OS-independent 4459acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4460debug version of the code includes the debug output trace mechanism and 4461has a much larger code and data size. 4462 4463 Current Release: 4464 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4465 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4466 Previous Release: 4467 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4468 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4469 4470 44712) iASL Compiler/Disassembler and Tools: 4472 4473AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 4474correct portable POSIX header for terminal control functions. 4475 4476Disassembler: Fixed control method invocation issues related to the use 4477of the CondRefOf() operator. The problem is seen in the disassembly where 4478control method invocations may not be disassembled properly if the 4479control method name has been used previously as an argument to CondRefOf. 4480The solution is to not attempt to emit an external declaration for the 4481CondRefOf target (it is not necessary in the first place). This prevents 4482disassembler object type confusion. ACPICA BZ 988. 4483 4484Unix Makefiles: Added an option to disable compiler optimizations and the 4485_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 4486with optimizations (reportedly, gcc 4.4 for example). This change adds a 4487command line option for make (NOOPT) that disables all compiler 4488optimizations and the _FORTIFY_SOURCE compiler flag. The default 4489optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 44901034. Lv Zheng, Bob Moore. 4491 4492Tests/ASLTS: Added options to specify individual test cases and modes. 4493This allows testers running aslts.sh to optionally specify individual 4494test modes and test cases. Also added an option to disable the forced 4495generation of the ACPICA tools from source if desired. Lv Zheng. 4496 4497---------------------------------------- 449827 September 2013. Summary of changes for version 20130927: 4499 4500This release is available at https://acpica.org/downloads 4501 4502 45031) ACPICA kernel-resident subsystem: 4504 4505Fixed a problem with store operations to reference objects. This change 4506fixes a problem where a Store operation to an ArgX object that contained 4507a 4508reference to a field object did not complete the automatic dereference 4509and 4510then write to the actual field object. Instead, the object type of the 4511field object was inadvertently changed to match the type of the source 4512operand. The new behavior will actually write to the field object (buffer 4513field or field unit), thus matching the correct ACPI-defined behavior. 4514 4515Implemented support to allow the host to redefine individual OSL 4516prototypes. This change enables the host to redefine OSL prototypes found 4517in the acpiosxf.h file. This allows the host to implement OSL interfaces 4518with a macro or inlined function. Further, it allows the host to add any 4519additional required modifiers such as __iomem, __init, __exit, etc., as 4520necessary on a per-interface basis. Enables maximum flexibility for the 4521OSL interfaces. Lv Zheng. 4522 4523Hardcoded the access width for the FADT-defined reset register. The ACPI 4524specification requires the reset register width to be 8 bits. ACPICA now 4525hardcodes the width to 8 and ignores the FADT width value. This provides 4526compatibility with other ACPI implementations that have allowed BIOS code 4527with bad register width values to go unnoticed. Matthew Garett, Bob 4528Moore, 4529Lv Zheng. 4530 4531Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 4532used 4533in the OSL header (acpiosxf). The change modifies the position of this 4534macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 4535build issues if the OSL defines the implementation of the interface to be 4536an inline stub function. Lv Zheng. 4537 4538Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 4539initialization interfaces. This change adds a new macro for the main init 4540and terminate external interfaces in order to support hosts that require 4541additional or different processing for these functions. Changed from 4542ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 4543Zheng, Bob Moore. 4544 4545Cleaned up the memory allocation macros for configurability. In the 4546common 4547case, the ACPI_ALLOCATE and related macros now resolve directly to their 4548respective AcpiOs* OSL interfaces. Two options: 45491) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 4550default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 45512) For AcpiExec (and for debugging), the macros can optionally be 4552resolved 4553to the local ACPICA interfaces that track each allocation (local tracking 4554is used to immediately detect memory leaks). 4555Lv Zheng. 4556 4557Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 4558to predefine this macro to either TRUE or FALSE during the system build. 4559 4560Replaced __FUNCTION_ with __func__ in the gcc-specific header. 4561 4562Example Code and Data Size: These are the sizes for the OS-independent 4563acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4564debug version of the code includes the debug output trace mechanism and 4565has a much larger code and data size. 4566 4567 Current Release: 4568 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4569 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4570 Previous Release: 4571 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4572 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4573 4574 45752) iASL Compiler/Disassembler and Tools: 4576 4577iASL: Implemented wildcard support for the -e option. This simplifies use 4578when there are many SSDTs that must be included to resolve external 4579method 4580declarations. ACPICA BZ 1041. Example: 4581 iasl -e ssdt*.dat -d dsdt.dat 4582 4583AcpiExec: Add history/line-editing for Unix/Linux systems. This change 4584adds a portable module that implements full history and limited line 4585editing for Unix and Linux systems. It does not use readline() due to 4586portability issues. Instead it uses the POSIX termio interface to put the 4587terminal in raw input mode so that the various special keys can be 4588trapped 4589(such as up/down-arrow for history support and left/right-arrow for line 4590editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 4591 4592AcpiXtract: Add support to handle (ignore) "empty" lines containing only 4593one or more spaces. This provides compatible with early or different 4594versions of the AcpiDump utility. ACPICA BZ 1044. 4595 4596AcpiDump: Do not ignore tables that contain only an ACPI table header. 4597Apparently, some BIOSs create SSDTs that contain an ACPI table header but 4598no other data. This change adds support to dump these tables. Any tables 4599shorter than the length of an ACPI table header remain in error (an error 4600message is emitted). Reported by Yi Li. 4601 4602Debugger: Echo actual command along with the "unknown command" message. 4603 4604---------------------------------------- 460523 August 2013. Summary of changes for version 20130823: 4606 46071) ACPICA kernel-resident subsystem: 4608 4609Implemented support for host-installed System Control Interrupt (SCI) 4610handlers. Certain ACPI functionality requires the host to handle raw 4611SCIs. For example, the "SCI Doorbell" that is defined for memory power 4612state support requires the host device driver to handle SCIs to examine 4613if the doorbell has been activated. Multiple SCI handlers can be 4614installed to allow for future expansion. New external interfaces are 4615AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 4616details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 4617 4618Operation region support: Never locally free the handler "context" 4619pointer. This change removes some dangerous code that attempts to free 4620the handler context pointer in some (rare) circumstances. The owner of 4621the handler owns this pointer and the ACPICA code should never touch it. 4622Although not seen to be an issue in any kernel, it did show up as a 4623problem (fault) under AcpiExec. Also, set the internal storage field for 4624the context pointer to zero when the region is deactivated, simply for 4625sanity. David Box. ACPICA BZ 1039. 4626 4627AcpiRead: On error, do not modify the return value target location. If an 4628error happens in the middle of a split 32/32 64-bit I/O operation, do not 4629modify the target of the return value pointer. Makes the code consistent 4630with the rest of ACPICA. Bjorn Helgaas. 4631 4632Example Code and Data Size: These are the sizes for the OS-independent 4633acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4634debug version of the code includes the debug output trace mechanism and 4635has a much larger code and data size. 4636 4637 Current Release: 4638 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4639 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4640 Previous Release: 4641 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4642 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 4643 4644 46452) iASL Compiler/Disassembler and Tools: 4646 4647AcpiDump: Implemented several new features and fixed some problems: 46481) Added support to dump the RSDP, RSDT, and XSDT tables. 46492) Added support for multiple table instances (SSDT, UEFI). 46503) Added option to dump "customized" (overridden) tables (-c). 46514) Fixed a problem where some table filenames were improperly 4652constructed. 46535) Improved some error messages, removed some unnecessary messages. 4654 4655iASL: Implemented additional support for disassembly of ACPI tables that 4656contain invocations of external control methods. The -fe<file> option 4657allows the import of a file that specifies the external methods along 4658with the required number of arguments for each -- allowing for the 4659correct disassembly of the table. This is a workaround for a limitation 4660of AML code where the disassembler often cannot determine the number of 4661arguments required for an external control method and generates incorrect 4662ASL code. See the iASL reference for details. ACPICA BZ 1030. 4663 4664Debugger: Implemented a new command (paths) that displays the full 4665pathnames (namepaths) and object types of all objects in the namespace. 4666This is an alternative to the namespace command. 4667 4668Debugger: Implemented a new command (sci) that invokes the SCI dispatch 4669mechanism and any installed handlers. 4670 4671iASL: Fixed a possible segfault for "too many parent prefixes" condition. 4672This can occur if there are too many parent prefixes in a namepath (for 4673example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 4674 4675Application OSLs: Set the return value for the PCI read functions. These 4676functions simply return AE_OK, but should set the return value to zero 4677also. This change implements this. ACPICA BZ 1038. 4678 4679Debugger: Prevent possible command line buffer overflow. Increase the 4680size of a couple of the debugger line buffers, and ensure that overflow 4681cannot happen. ACPICA BZ 1037. 4682 4683iASL: Changed to abort immediately on serious errors during the parsing 4684phase. Due to the nature of ASL, there is no point in attempting to 4685compile these types of errors, and they typically end up causing a 4686cascade of hundreds of errors which obscure the original problem. 4687 4688---------------------------------------- 468925 July 2013. Summary of changes for version 20130725: 4690 46911) ACPICA kernel-resident subsystem: 4692 4693Fixed a problem with the DerefOf operator where references to FieldUnits 4694and BufferFields incorrectly returned the parent object, not the actual 4695value of the object. After this change, a dereference of a FieldUnit 4696reference results in a read operation on the field to get the value, and 4697likewise, the appropriate BufferField value is extracted from the target 4698buffer. 4699 4700Fixed a problem where the _WAK method could cause a fault under these 4701circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 4702method returned no value. The problem is rarely seen because most kernels 4703run ACPICA in slack mode. 4704 4705For the DerefOf operator, a fatal error now results if an attempt is made 4706to dereference a reference (created by the Index operator) to a NULL 4707package element. Provides compatibility with other ACPI implementations, 4708and this behavior will be added to a future version of the ACPI 4709specification. 4710 4711The ACPI Power Management Timer (defined in the FADT) is now optional. 4712This provides compatibility with other ACPI implementations and will 4713appear in the next version of the ACPI specification. If there is no PM 4714Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 4715zero in the FADT indicates no PM timer. 4716 4717Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 4718allows the host to globally enable/disable all vendor strings, all 4719feature strings, or both. Intended to be primarily used for debugging 4720purposes only. Lv Zheng. 4721 4722Expose the collected _OSI data to the host via a global variable. This 4723data tracks the highest level vendor ID that has been invoked by the BIOS 4724so that the host (and potentially ACPICA itself) can change behaviors 4725based upon the age of the BIOS. 4726 4727Example Code and Data Size: These are the sizes for the OS-independent 4728acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4729debug version of the code includes the debug output trace mechanism and 4730has a much larger code and data size. 4731 4732 Current Release: 4733 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4734 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4735 Previous Release: 4736 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4737 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4738 4739 47402) iASL Compiler/Disassembler and Tools: 4741 4742iASL: Created the following enhancements for the -so option (create 4743offset table): 47441)Add offsets for the last nameseg in each namepath for every supported 4745object type 47462)Add support for Processor, Device, Thermal Zone, and Scope objects 47473)Add the actual AML opcode for the parent object of every supported 4748object type 47494)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 4750 4751Disassembler: Emit all unresolved external symbols in a single block. 4752These are external references to control methods that could not be 4753resolved, and thus, the disassembler had to make a guess at the number of 4754arguments to parse. 4755 4756iASL: The argument to the -T option (create table template) is now 4757optional. If not specified, the default table is a DSDT, typically the 4758most common case. 4759 4760---------------------------------------- 476126 June 2013. Summary of changes for version 20130626: 4762 47631) ACPICA kernel-resident subsystem: 4764 4765Fixed an issue with runtime repair of the _CST object. Null or invalid 4766elements were not always removed properly. Lv Zheng. 4767 4768Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 4769FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 4770the maximum number of GPEs is 1016. Use of multiple GPE block devices 4771makes the system-wide number of GPEs essentially unlimited. 4772 4773Example Code and Data Size: These are the sizes for the OS-independent 4774acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4775debug version of the code includes the debug output trace mechanism and 4776has a much larger code and data size. 4777 4778 Current Release: 4779 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4780 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4781 Previous Release: 4782 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4783 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4784 4785 47862) iASL Compiler/Disassembler and Tools: 4787 4788Portable AcpiDump: Implemented full support for the Linux and FreeBSD 4789hosts. Now supports Linux, FreeBSD, and Windows. 4790 4791Disassembler: Added some missing types for the HEST and EINJ tables: "Set 4792Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 4793 4794iASL/Preprocessor: Implemented full support for nested 4795#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 4796 4797Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 4798max. The original purpose of this constraint was to limit the amount of 4799debug output. However, the string function in question (UtPrintString) is 4800now used for the disassembler also, where 256 bytes is insufficient. 4801Reported by RehabMan@GitHub. 4802 4803iASL/DataTables: Fixed some problems and issues with compilation of DMAR 4804tables. ACPICA BZ 999. Lv Zheng. 4805 4806iASL: Fixed a couple of error exit issues that could result in a "Could 4807not delete <file>" message during ASL compilation. 4808 4809AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 4810the actual signatures for these tables are "FACP" and "APIC", 4811respectively. 4812 4813AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 4814tables are allowed to have multiple instances. 4815 4816---------------------------------------- 481717 May 2013. Summary of changes for version 20130517: 4818 48191) ACPICA kernel-resident subsystem: 4820 4821Fixed a regression introduced in version 20130328 for _INI methods. This 4822change fixes a problem introduced in 20130328 where _INI methods are no 4823longer executed properly because of a memory block that was not 4824initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 4825<tomasz.nowicki@linaro.org>. 4826 4827Fixed a possible problem with the new extended sleep registers in the 4828ACPI 48295.0 FADT. Do not use these registers (even if populated) unless the HW- 4830reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 48311020. Lv Zheng. 4832 4833Implemented return value repair code for _CST predefined objects: Sort 4834the 4835list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 4836 4837Implemented a debug-only option to disable loading of SSDTs from the 4838RSDT/XSDT during ACPICA initialization. This can be useful for debugging 4839ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 4840acglobal.h - ACPICA BZ 1005. Lv Zheng. 4841 4842Fixed some issues in the ACPICA initialization and termination code: 4843Tomasz Nowicki <tomasz.nowicki@linaro.org> 48441) Clear events initialized flag upon event component termination. ACPICA 4845BZ 1013. 48462) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 48473) Delete global lock pending lock during termination. ACPICA BZ 1012. 48484) Clear debug buffer global on termination to prevent possible multiple 4849delete. ACPICA BZ 1010. 4850 4851Standardized all switch() blocks across the entire source base. After 4852many 4853years, different formatting for switch() had crept in. This change makes 4854the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 4855 4856Split some files to enhance ACPICA modularity and configurability: 48571) Split buffer dump routines into utilities/utbuffer.c 48582) Split internal error message routines into utilities/uterror.c 48593) Split table print utilities into tables/tbprint.c 48604) Split iASL command-line option processing into asloptions.c 4861 4862Makefile enhancements: 48631) Support for all new files above. 48642) Abort make on errors from any subcomponent. Chao Guan. 48653) Add build support for Apple Mac OS X. Liang Qi. 4866 4867Example Code and Data Size: These are the sizes for the OS-independent 4868acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4869debug version of the code includes the debug output trace mechanism and 4870has a much larger code and data size. 4871 4872 Current Release: 4873 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4874 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4875 Previous Release: 4876 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4877 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4878 4879 48802) iASL Compiler/Disassembler and Tools: 4881 4882New utility: Implemented an easily portable version of the acpidump 4883utility to extract ACPI tables from the system (or a file) in an ASCII 4884hex 4885dump format. The top-level code implements the various command line 4886options, file I/O, and table dump routines. To port to a new host, only 4887three functions need to be implemented to get tables -- since this 4888functionality is OS-dependent. See the tools/acpidump/apmain.c module and 4889the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 48901) The Windows version obtains the ACPI tables from the Registry. 48912) The Linux version is under development. 48923) Other hosts - If an OS-dependent module is submitted, it will be 4893distributed with ACPICA. 4894 4895iASL: Fixed a regression for -D preprocessor option (define symbol). A 4896restructuring/change to the initialization sequence caused this option to 4897no longer work properly. 4898 4899iASL: Implemented a mechanism to disable specific warnings and remarks. 4900Adds a new command line option, "-vw <messageid> as well as "#pragma 4901disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 4902 4903iASL: Fix for too-strict package object validation. The package object 4904validation for return values from the predefined names is a bit too 4905strict, it does not allow names references within the package (which will 4906be resolved at runtime.) These types of references cannot be validated at 4907compile time. This change ignores named references within package objects 4908for names that return or define static packages. 4909 4910Debugger: Fixed the 80-character command line limitation for the History 4911command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 4912 4913iASL: Added control method and package support for the -so option 4914(generates AML offset table for BIOS support.) 4915 4916iASL: issue a remark if a non-serialized method creates named objects. If 4917a thread blocks within the method for any reason, and another thread 4918enters the method, the method will fail because an attempt will be made 4919to 4920create the same (named) object twice. In this case, issue a remark that 4921the method should be marked serialized. NOTE: may become a warning later. 4922ACPICA BZ 909. 4923 4924---------------------------------------- 492518 April 2013. Summary of changes for version 20130418: 4926 49271) ACPICA kernel-resident subsystem: 4928 4929Fixed a possible buffer overrun during some rare but specific field unit 4930read operations. This overrun can only happen if the DSDT version is 1 -- 4931meaning that all AML integers are 32 bits -- and the field length is 4932between 33 and 55 bits long. During the read, an internal buffer object 4933is 4934created for the field unit because the field is larger than an integer 4935(32 4936bits). However, in this case, the buffer will be incorrectly written 4937beyond the end because the buffer length is less than the internal 4938minimum 4939of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 4940long, but a full 8 bytes will be written. 4941 4942Updated the Embedded Controller "orphan" _REG method support. This refers 4943to _REG methods under the EC device that have no corresponding operation 4944region. This is allowed by the ACPI specification. This update removes a 4945dependency on the existence an ECDT table. It will execute an orphan _REG 4946method as long as the operation region handler for the EC is installed at 4947the EC device node and not the namespace root. Rui Zhang (original 4948update), Bob Moore (update/integrate). 4949 4950Implemented run-time argument typechecking for all predefined ACPI names 4951(_STA, _BIF, etc.) This change performs object typechecking on all 4952incoming arguments for all predefined names executed via 4953AcpiEvaluateObject. This ensures that ACPI-related device drivers are 4954passing correct object types as well as the correct number of arguments 4955(therefore identifying any issues immediately). Also, the ASL/namespace 4956definition of the predefined name is checked against the ACPI 4957specification for the proper argument count. Adds one new file, 4958nsarguments.c 4959 4960Changed an exception code for the ASL UnLoad() operator. Changed the 4961exception code for the case where the input DdbHandle is invalid, from 4962AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 4963 4964Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 4965global makefile. The use of this flag causes compiler errors on earlier 4966versions of GCC, so it has been removed for compatibility. 4967 4968Miscellaneous cleanup: 49691) Removed some unused/obsolete macros 49702) Fixed a possible memory leak in the _OSI support 49713) Removed an unused variable in the predefined name support 49724) Windows OSL: remove obsolete reference to a memory list field 4973 4974Example Code and Data Size: These are the sizes for the OS-independent 4975acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4976debug version of the code includes the debug output trace mechanism and 4977has a much larger code and data size. 4978 4979 Current Release: 4980 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4981 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4982 Previous Release: 4983 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4984 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4985 4986 49872) iASL Compiler/Disassembler and Tools: 4988 4989AcpiExec: Added installation of a handler for the SystemCMOS address 4990space. This prevents control method abort if a method accesses this 4991space. 4992 4993AcpiExec: Added support for multiple EC devices, and now install EC 4994operation region handler(s) at the actual EC device instead of the 4995namespace root. This reflects the typical behavior of host operating 4996systems. 4997 4998AcpiExec: Updated to ensure that all operation region handlers are 4999installed before the _REG methods are executed. This prevents a _REG 5000method from aborting if it accesses an address space has no handler. 5001AcpiExec installs a handler for every possible address space. 5002 5003Debugger: Enhanced the "handlers" command to display non-root handlers. 5004This change enhances the handlers command to display handlers associated 5005with individual devices throughout the namespace, in addition to the 5006currently supported display of handlers associated with the root 5007namespace 5008node. 5009 5010ASL Test Suite: Several test suite errors have been identified and 5011resolved, reducing the total error count during execution. Chao Guan. 5012 5013---------------------------------------- 501428 March 2013. Summary of changes for version 20130328: 5015 50161) ACPICA kernel-resident subsystem: 5017 5018Fixed several possible race conditions with the internal object reference 5019counting mechanism. Some of the external ACPICA interfaces update object 5020reference counts without holding the interpreter or namespace lock. This 5021change adds a spinlock to protect reference count updates on the internal 5022ACPICA objects. Reported by and with assistance from Andriy Gapon 5023(avg@FreeBSD.org). 5024 5025FADT support: Removed an extraneous warning for very large GPE register 5026sets. This change removes a size mismatch warning if the legacy length 5027field for a GPE register set is larger than the 64-bit GAS structure can 5028accommodate. GPE register sets can be larger than the 255-bit width 5029limitation of the GAS structure. Linn Crosetto (linn@hp.com). 5030 5031_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 5032return from this interface. Handles a possible timeout case if 5033ACPI_WAIT_FOREVER is modified by the host to be a value less than 5034"forever". Jung-uk Kim. 5035 5036Predefined name support: Add allowed/required argument type information 5037to 5038the master predefined info table. This change adds the infrastructure to 5039enable typechecking on incoming arguments for all predefined 5040methods/objects. It does not actually contain the code that will fully 5041utilize this information, this is still under development. Also condenses 5042some duplicate code for the predefined names into a new module, 5043utilities/utpredef.c 5044 5045Example Code and Data Size: These are the sizes for the OS-independent 5046acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5047debug version of the code includes the debug output trace mechanism and 5048has a much larger code and data size. 5049 5050 Previous Release: 5051 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5052 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5053 Current Release: 5054 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5055 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5056 5057 50582) iASL Compiler/Disassembler and Tools: 5059 5060iASL: Implemented a new option to simplify the development of ACPI- 5061related 5062BIOS code. Adds support for a new "offset table" output file. The -so 5063option will create a C table containing the AML table offsets of various 5064named objects in the namespace so that BIOS code can modify them easily 5065at 5066boot time. This can simplify BIOS runtime code by eliminating expensive 5067searches for "magic values", enhancing boot times and adding greater 5068reliability. With assistance from Lee Hamel. 5069 5070iASL: Allow additional predefined names to return zero-length packages. 5071Now, all predefined names that are defined by the ACPI specification to 5072return a "variable-length package of packages" are allowed to return a 5073zero length top-level package. This allows the BIOS to tell the host that 5074the requested feature is not supported, and supports existing BIOS/ASL 5075code and practices. 5076 5077iASL: Changed the "result not used" warning to an error. This is the case 5078where an ASL operator is effectively a NOOP because the result of the 5079operation is not stored anywhere. For example: 5080 Add (4, Local0) 5081There is no target (missing 3rd argument), nor is the function return 5082value used. This is potentially a very serious problem -- since the code 5083was probably intended to do something, but for whatever reason, the value 5084was not stored. Therefore, this issue has been upgraded from a warning to 5085an error. 5086 5087AcpiHelp: Added allowable/required argument types to the predefined names 5088info display. This feature utilizes the recent update to the predefined 5089names table (above). 5090 5091---------------------------------------- 509214 February 2013. Summary of changes for version 20130214: 5093 50941) ACPICA Kernel-resident Subsystem: 5095 5096Fixed a possible regression on some hosts: Reinstated the safe return 5097macros (return_ACPI_STATUS, etc.) that ensure that the argument is 5098evaluated only once. Although these macros are not needed for the ACPICA 5099code itself, they are often used by ACPI-related host device drivers 5100where 5101the safe feature may be necessary. 5102 5103Fixed several issues related to the ACPI 5.0 reduced hardware support 5104(SOC): Now ensure that if the platform declares itself as hardware- 5105reduced 5106via the FADT, the following functions become NOOPs (and always return 5107AE_OK) because ACPI is always enabled by definition on these machines: 5108 AcpiEnable 5109 AcpiDisable 5110 AcpiHwGetMode 5111 AcpiHwSetMode 5112 5113Dynamic Object Repair: Implemented additional runtime repairs for 5114predefined name return values. Both of these repairs can simplify code in 5115the related device drivers that invoke these methods: 51161) For the _STR and _MLS names, automatically repair/convert an ASCII 5117string to a Unicode buffer. 51182) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 5119a 5120lone end tag descriptor in the following cases: A Return(0) was executed, 5121a null buffer was returned, or no object at all was returned (non-slack 5122mode only). Adds a new file, nsconvert.c 5123ACPICA BZ 998. Bob Moore, Lv Zheng. 5124 5125Resource Manager: Added additional code to prevent possible infinite 5126loops 5127while traversing corrupted or ill-formed resource template buffers. Check 5128for zero-length resource descriptors in all code that loops through 5129resource templates (the length field is used to index through the 5130template). This change also hardens the external AcpiWalkResources and 5131AcpiWalkResourceBuffer interfaces. 5132 5133Local Cache Manager: Enhanced the main data structure to eliminate an 5134unnecessary mechanism to access the next object in the list. Actually 5135provides a small performance enhancement for hosts that use the local 5136ACPICA cache manager. Jung-uk Kim. 5137 5138Example Code and Data Size: These are the sizes for the OS-independent 5139acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5140debug version of the code includes the debug output trace mechanism and 5141has a much larger code and data size. 5142 5143 Previous Release: 5144 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5145 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5146 Current Release: 5147 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5148 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5149 5150 51512) iASL Compiler/Disassembler and Tools: 5152 5153iASL/Disassembler: Fixed several issues with the definition of the ACPI 51545.0 RASF table (RAS Feature Table). This change incorporates late changes 5155that were made to the ACPI 5.0 specification. 5156 5157iASL/Disassembler: Added full support for the following new ACPI tables: 5158 1) The MTMR table (MID Timer Table) 5159 2) The VRTC table (Virtual Real Time Clock Table). 5160Includes header file, disassembler, table compiler, and template support 5161for both tables. 5162 5163iASL: Implemented compile-time validation of package objects returned by 5164predefined names. This new feature validates static package objects 5165returned by the various predefined names defined to return packages. Both 5166object types and package lengths are validated, for both parent packages 5167and sub-packages, if any. The code is similar in structure and behavior 5168to 5169the runtime repair mechanism within the AML interpreter and uses the 5170existing predefined name information table. Adds a new file, aslprepkg.c. 5171ACPICA BZ 938. 5172 5173iASL: Implemented auto-detection of binary ACPI tables for disassembly. 5174This feature detects a binary file with a valid ACPI table header and 5175invokes the disassembler automatically. Eliminates the need to 5176specifically invoke the disassembler with the -d option. ACPICA BZ 862. 5177 5178iASL/Disassembler: Added several warnings for the case where there are 5179unresolved control methods during the disassembly. This can potentially 5180cause errors when the output file is compiled, because the disassembler 5181assumes zero method arguments in these cases (it cannot determine the 5182actual number of arguments without resolution/definition of the method). 5183 5184Debugger: Added support to display all resources with a single command. 5185Invocation of the resources command with no arguments will now display 5186all 5187resources within the current namespace. 5188 5189AcpiHelp: Added descriptive text for each ACPICA exception code displayed 5190via the -e option. 5191 5192---------------------------------------- 519317 January 2013. Summary of changes for version 20130117: 5194 51951) ACPICA Kernel-resident Subsystem: 5196 5197Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 5198return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 5199objects to return a package containing one integer, most BIOS code 5200returns 5201two integers and the previous code reflects that. However, we also need 5202to 5203support BIOS code that actually implements to the ACPI spec, and this 5204change reflects this. 5205 5206Fixed two issues with the ACPI_DEBUG_PRINT macros: 52071) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 5208C compilers that require this support. 52092) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 5210ACPI_DEBUG is already used by many of the various hosts. 5211 5212Updated all ACPICA copyrights and signons to 2013. Added the 2013 5213copyright to all module headers and signons, including the standard Linux 5214header. This affects virtually every file in the ACPICA core subsystem, 5215iASL compiler, all ACPICA utilities, and the test suites. 5216 5217Example Code and Data Size: These are the sizes for the OS-independent 5218acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5219debug version of the code includes the debug output trace mechanism and 5220has a much larger code and data size. 5221 5222 Previous Release: 5223 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5224 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5225 Current Release: 5226 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5227 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5228 5229 52302) iASL Compiler/Disassembler and Tools: 5231 5232Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 5233prevent a possible fault on some hosts. Some C libraries modify the arg 5234pointer parameter to vfprintf making it difficult to call it twice in the 5235AcpiOsVprintf function. Use a local buffer to workaround this issue. This 5236does not affect the Windows OSL since the Win C library does not modify 5237the arg pointer. Chao Guan, Bob Moore. 5238 5239iASL: Fixed a possible infinite loop when the maximum error count is 5240reached. If an output file other than the .AML file is specified (such as 5241a listing file), and the maximum number of errors is reached, do not 5242attempt to flush data to the output file(s) as the compiler is aborting. 5243This can cause an infinite loop as the max error count code essentially 5244keeps calling itself. 5245 5246iASL/Disassembler: Added an option (-in) to ignore NOOP 5247opcodes/operators. 5248Implemented for both the compiler and the disassembler. Often, the NOOP 5249opcode is used as padding for packages that are changed dynamically by 5250the 5251BIOS. When disassembled and recompiled, these NOOPs will cause syntax 5252errors. This option causes the disassembler to ignore all NOOP opcodes 5253(0xA3), and it also causes the compiler to ignore all ASL source code 5254NOOP 5255statements as well. 5256 5257Debugger: Enhanced the Sleep command to execute all sleep states. This 5258change allows Sleep to be invoked with no arguments and causes the 5259debugger to execute all of the sleep states, 0-5, automatically. 5260 5261---------------------------------------- 526220 December 2012. Summary of changes for version 20121220: 5263 52641) ACPICA Kernel-resident Subsystem: 5265 5266Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 5267alternate entry point for AcpiWalkResources and improves the usability of 5268the resource manager by accepting as input a buffer containing the output 5269of either a _CRS, _PRS, or _AEI method. The key functionality is that the 5270input buffer is not deleted by this interface so that it can be used by 5271the host later. See the ACPICA reference for details. 5272 5273Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 5274(DSDT version < 2). The constant will be truncated and this warning 5275reflects that behavior. 5276 5277Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 5278ExtendedInterrupt, and GpioInt descriptors. This change adds support to 5279both get and set the new wake bit in these descriptors, separately from 5280the existing share bit. Reported by Aaron Lu. 5281 5282Interpreter: Fix Store() when an implicit conversion is not possible. For 5283example, in the cases such as a store of a string to an existing package 5284object, implement the store as a CopyObject(). This is a small departure 5285from the ACPI specification which states that the control method should 5286be 5287aborted in this case. However, the ASLTS suite depends on this behavior. 5288 5289Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 5290macros: check if debug output is currently enabled as soon as possible to 5291minimize performance impact if debug is in fact not enabled. 5292 5293Source code restructuring: Cleanup to improve modularity. The following 5294new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 5295psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 5296Associated makefiles and project files have been updated. 5297 5298Changed an exception code for LoadTable operator. For the case where one 5299of the input strings is too long, change the returned exception code from 5300AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 5301 5302Fixed a possible memory leak in dispatcher error path. On error, delete 5303the mutex object created during method mutex creation. Reported by 5304tim.gardner@canonical.com. 5305 5306Example Code and Data Size: These are the sizes for the OS-independent 5307acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5308debug version of the code includes the debug output trace mechanism and 5309has a much larger code and data size. 5310 5311 Previous Release: 5312 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5313 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5314 Current Release: 5315 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5316 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5317 5318 53192) iASL Compiler/Disassembler and Tools: 5320 5321iASL: Disallow a method call as argument to the ObjectType ASL operator. 5322This change tracks an errata to the ACPI 5.0 document. The AML grammar 5323will not allow the interpreter to differentiate between a method and a 5324method invocation when these are used as an argument to the ObjectType 5325operator. The ACPI specification change is to disallow a method 5326invocation 5327(UserTerm) for the ObjectType operator. 5328 5329Finish support for the TPM2 and CSRT tables in the headers, table 5330compiler, and disassembler. 5331 5332Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 5333always expires immediately if the semaphore is not available. The 5334original 5335code was using a relative-time timeout, but sem_timedwait requires the 5336use 5337of an absolute time. 5338 5339iASL: Added a remark if the Timer() operator is used within a 32-bit 5340table. This operator returns a 64-bit time value that will be truncated 5341within a 32-bit table. 5342 5343iASL Source code restructuring: Cleanup to improve modularity. The 5344following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 5345aslmethod.c, and aslfileio.c. Associated makefiles and project files have 5346been updated. 5347 5348 5349---------------------------------------- 535014 November 2012. Summary of changes for version 20121114: 5351 53521) ACPICA Kernel-resident Subsystem: 5353 5354Implemented a performance enhancement for ACPI/AML Package objects. This 5355change greatly increases the performance of Package objects within the 5356interpreter. It changes the processing of reference counts for packages 5357by 5358optimizing for the most common case where the package sub-objects are 5359either Integers, Strings, or Buffers. Increases the overall performance 5360of 5361the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 53622X.) 5363Chao Guan. ACPICA BZ 943. 5364 5365Implemented and deployed common macros to extract flag bits from resource 5366descriptors. Improves readability and maintainability of the code. Fixes 5367a 5368problem with the UART serial bus descriptor for the number of data bits 5369flags (was incorrectly 2 bits, should be 3). 5370 5371Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 5372of the macros and changed the SETx macros to the style of (destination, 5373source). Also added ACPI_CASTx companion macros. Lv Zheng. 5374 5375Example Code and Data Size: These are the sizes for the OS-independent 5376acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5377debug version of the code includes the debug output trace mechanism and 5378has a much larger code and data size. 5379 5380 Previous Release: 5381 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5382 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5383 Current Release: 5384 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5385 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5386 5387 53882) iASL Compiler/Disassembler and Tools: 5389 5390Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 5391adds the ShareAndWake and ExclusiveAndWake flags which were added to the 5392Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 5393 5394Disassembler: Fixed a problem with external declaration generation. Fixes 5395a problem where an incorrect pathname could be generated for an external 5396declaration if the original reference to the object includes leading 5397carats (^). ACPICA BZ 984. 5398 5399Debugger: Completed a major update for the Disassemble<method> command. 5400This command was out-of-date and did not properly disassemble control 5401methods that had any reasonable complexity. This fix brings the command 5402up 5403to the same level as the rest of the disassembler. Adds one new file, 5404dmdeferred.c, which is existing code that is now common with the main 5405disassembler and the debugger disassemble command. ACPICA MZ 978. 5406 5407iASL: Moved the parser entry prototype to avoid a duplicate declaration. 5408Newer versions of Bison emit this prototype, so moved the prototype out 5409of 5410the iASL header to where it is actually used in order to avoid a 5411duplicate 5412declaration. 5413 5414iASL/Tools: Standardized use of the stream I/O functions: 5415 1) Ensure check for I/O error after every fopen/fread/fwrite 5416 2) Ensure proper order of size/count arguments for fread/fwrite 5417 3) Use test of (Actual != Requested) after all fwrite, and most fread 5418 4) Standardize I/O error messages 5419Improves reliability and maintainability of the code. Bob Moore, Lv 5420Zheng. 5421ACPICA BZ 981. 5422 5423Disassembler: Prevent duplicate External() statements. During generation 5424of external statements, detect similar pathnames that are actually 5425duplicates such as these: 5426 External (\ABCD) 5427 External (ABCD) 5428Remove all leading '\' characters from pathnames during the external 5429statement generation so that duplicates will be detected and tossed. 5430ACPICA BZ 985. 5431 5432Tools: Replace low-level I/O with stream I/O functions. Replace 5433open/read/write/close with the stream I/O equivalents 5434fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 5435Moore. 5436 5437AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 5438name header so that AcpiXtract recognizes the output file/table. 5439 5440iASL: Remove obsolete -2 option flag. Originally intended to force the 5441compiler/disassembler into an ACPI 2.0 mode, this was never implemented 5442and the entire concept is now obsolete. 5443 5444---------------------------------------- 544518 October 2012. Summary of changes for version 20121018: 5446 5447 54481) ACPICA Kernel-resident Subsystem: 5449 5450Updated support for the ACPI 5.0 MPST table. Fixes some problems 5451introduced by late changes to the table as it was added to the ACPI 5.0 5452specification. Includes header, disassembler, and data table compiler 5453support as well as a new version of the MPST template. 5454 5455AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 54565.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 5457methods: _HID, _CID, and _UID. 5458 5459Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 5460ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 5461name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 5462names for their various drivers. Affects the AcpiGetObjectInfo external 5463interface, and other internal interfaces as well. 5464 5465Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 5466This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 5467on machines that support non-aligned transfers. Optimizes for this case 5468rather than using a strncpy. With assistance from Zheng Lv. 5469 5470Resource Manager: Small fix for buffer size calculation. Fixed a one byte 5471error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 5472 5473Added a new debug print message for AML mutex objects that are force- 5474released. At control method termination, any currently acquired mutex 5475objects are force-released. Adds a new debug-only message for each one 5476that is released. 5477 5478Audited/updated all ACPICA return macros and the function debug depth 5479counter: 1) Ensure that all functions that use the various TRACE macros 5480also use the appropriate ACPICA return macros. 2) Ensure that all normal 5481return statements surround the return expression (value) with parens to 5482ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 5483Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 5484 5485Global source code changes/maintenance: All extra lines at the start and 5486end of each source file have been removed for consistency. Also, within 5487comments, all new sentences start with a single space instead of a double 5488space, again for consistency across the code base. 5489 5490Example Code and Data Size: These are the sizes for the OS-independent 5491acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5492debug version of the code includes the debug output trace mechanism and 5493has a much larger code and data size. 5494 5495 Previous Release: 5496 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5497 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5498 Current Release: 5499 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5500 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5501 5502 55032) iASL Compiler/Disassembler and Tools: 5504 5505AcpiExec: Improved the algorithm used for memory leak/corruption 5506detection. Added some intelligence to the code that maintains the global 5507list of allocated memory. The list is now ordered by allocated memory 5508address, significantly improving performance. When running AcpiExec on 5509the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 5510on the platform and/or the environment. Note, this performance 5511enhancement affects the AcpiExec utility only, not the kernel-resident 5512ACPICA code. 5513 5514Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 5515the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 5516incorrect table offset reported for invalid opcodes. Report the original 551732-bit value for bad ACPI_NAMEs (as well as the repaired name.) 5518 5519Disassembler: Enhanced the -vt option to emit the binary table data in 5520hex format to assist with debugging. 5521 5522Fixed a potential filename buffer overflow in osunixdir.c. Increased the 5523size of file structure. Colin Ian King. 5524 5525---------------------------------------- 552613 September 2012. Summary of changes for version 20120913: 5527 5528 55291) ACPICA Kernel-resident Subsystem: 5530 5531ACPI 5.0: Added two new notify types for the Hardware Error Notification 5532Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 5533and 5534MCE(6). 5535 5536Table Manager: Merged/removed duplicate code in the root table resize 5537functions. One function is external, the other is internal. Lv Zheng, 5538ACPICA 5539BZ 846. 5540 5541Makefiles: Completely removed the obsolete "Linux" makefiles under 5542acpica/generate/linux. These makefiles are obsolete and have been 5543replaced 5544by 5545the generic unix makefiles under acpica/generate/unix. 5546 5547Makefiles: Ensure that binary files always copied properly. Minor rule 5548change 5549to ensure that the final binary output files are always copied up to the 5550appropriate binary directory (bin32 or bin64.) 5551 5552Example Code and Data Size: These are the sizes for the OS-independent 5553acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5554debug 5555version of the code includes the debug output trace mechanism and has a 5556much 5557larger code and data size. 5558 5559 Previous Release: 5560 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5561 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5562 Current Release: 5563 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5564 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5565 5566 55672) iASL Compiler/Disassembler and Tools: 5568 5569Disassembler: Fixed a possible fault during the disassembly of resource 5570descriptors when a second parse is required because of the invocation of 5571external control methods within the table. With assistance from 5572adq@lidskialf.net. ACPICA BZ 976. 5573 5574iASL: Fixed a namepath optimization problem. An error can occur if the 5575parse 5576node that contains the namepath to be optimized does not have a parent 5577node 5578that is a named object. This change fixes the problem. 5579 5580iASL: Fixed a regression where the AML file is not deleted on errors. The 5581AML 5582output file should be deleted if there are any errors during the 5583compiler. 5584The 5585only exception is if the -f (force output) option is used. ACPICA BZ 974. 5586 5587iASL: Added a feature to automatically increase internal line buffer 5588sizes. 5589Via realloc(), automatically increase the internal line buffer sizes as 5590necessary to support very long source code lines. The current version of 5591the 5592preprocessor requires a buffer long enough to contain full source code 5593lines. 5594This change increases the line buffer(s) if the input lines go beyond the 5595current buffer size. This eliminates errors that occurred when a source 5596code 5597line was longer than the buffer. 5598 5599iASL: Fixed a problem with constant folding in method declarations. The 5600SyncLevel term is a ByteConstExpr, and incorrect code would be generated 5601if a 5602Type3 opcode was used. 5603 5604Debugger: Improved command help support. For incorrect argument count, 5605display 5606full help for the command. For help command itself, allow an argument to 5607specify a command. 5608 5609Test Suites: Several bug fixes for the ASLTS suite reduces the number of 5610errors during execution of the suite. Guan Chao. 5611 5612---------------------------------------- 561316 August 2012. Summary of changes for version 20120816: 5614 5615 56161) ACPICA Kernel-resident Subsystem: 5617 5618Removed all use of the deprecated _GTS and _BFS predefined methods. The 5619_GTS 5620(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 5621deprecated and will probably be removed from the ACPI specification. 5622Windows 5623does not invoke them, and reportedly never will. The final nail in the 5624coffin 5625is that the ACPI specification states that these methods must be run with 5626interrupts off, which is not going to happen in a kernel interpreter. 5627Note: 5628Linux has removed all use of the methods also. It was discovered that 5629invoking these functions caused failures on some machines, probably 5630because 5631they were never tested since Windows does not call them. Affects two 5632external 5633interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 5634ACPICA BZ 969. 5635 5636Implemented support for complex bit-packed buffers returned from the _PLD 5637(Physical Location of Device) predefined method. Adds a new external 5638interface, AcpiDecodePldBuffer that parses the buffer into a more usable 5639C 5640structure. Note: C Bitfields cannot be used for this type of predefined 5641structure since the memory layout of individual bitfields is not defined 5642by 5643the C language. In addition, there are endian concerns where a compiler 5644will 5645change the bitfield ordering based on the machine type. The new ACPICA 5646interface eliminates these issues, and should be called after _PLD is 5647executed. ACPICA BZ 954. 5648 5649Implemented a change to allow a scope change to root (via "Scope (\)") 5650during 5651execution of module-level ASL code (code that is executed at table load 5652time.) Lin Ming. 5653 5654Added the Windows8/Server2012 string for the _OSI method. This change 5655adds 5656a 5657new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 56582012. 5659 5660Added header support for the new ACPI tables DBG2 (Debug Port Table Type 56612) 5662and CSRT (Core System Resource Table). 5663 5664Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 5665names. This simplifies access to the buffers returned by these predefined 5666names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 5667 5668GPE support: Removed an extraneous parameter from the various low-level 5669internal GPE functions. Tang Feng. 5670 5671Removed the linux makefiles from the unix packages. The generate/linux 5672makefiles are obsolete and have been removed from the unix tarball 5673release 5674packages. The replacement makefiles are under generate/unix, and there is 5675a 5676top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 5677 5678Updates for Unix makefiles: 56791) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 56802) Update linker flags (move to end of command line) for AcpiExec 5681utility. 5682Guan Chao. 5683 5684Split ACPICA initialization functions to new file, utxfinit.c. Split from 5685utxface.c to improve modularity and reduce file size. 5686 5687Example Code and Data Size: These are the sizes for the OS-independent 5688acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5689debug version of the code includes the debug output trace mechanism and 5690has a 5691much larger code and data size. 5692 5693 Previous Release: 5694 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5695 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5696 Current Release: 5697 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5698 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5699 5700 57012) iASL Compiler/Disassembler and Tools: 5702 5703iASL: Fixed a problem with constant folding for fixed-length constant 5704expressions. The constant-folding code was not being invoked for constant 5705expressions that allow the use of type 3/4/5 opcodes to generate 5706constants 5707for expressions such as ByteConstExpr, WordConstExpr, etc. This could 5708result 5709in the generation of invalid AML bytecode. ACPICA BZ 970. 5710 5711iASL: Fixed a generation issue on newer versions of Bison. Newer versions 5712apparently automatically emit some of the necessary externals. This 5713change 5714handles these versions in order to eliminate generation warnings. 5715 5716Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 5717 5718Disassembler: Add support to decode _PLD buffers. The decoded buffer 5719appears 5720within comments in the output file. 5721 5722Debugger: Fixed a regression with the "Threads" command where 5723AE_BAD_PARAMETER was always returned. 5724 5725---------------------------------------- 572611 July 2012. Summary of changes for version 20120711: 5727 57281) ACPICA Kernel-resident Subsystem: 5729 5730Fixed a possible fault in the return package object repair code. Fixes a 5731problem that can occur when a lone package object is wrapped with an 5732outer 5733package object in order to force conformance to the ACPI specification. 5734Can 5735affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 5736_DLM, 5737_CSD, _PSD, _TSD. 5738 5739Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 5740PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 5741ARB_DIS bit must be implemented in the host-dependent C3 processor power 5742state 5743support. Note, ARB_DIS is obsolete and only applies to older chipsets, 5744both 5745Intel and other vendors. (for Intel: ICH4-M and earlier) 5746 5747This change removes the code to disable/enable bus master arbitration 5748during 5749suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 5750causes 5751resume problems on some machines. The change has been in use for over 5752seven 5753years within Linux. 5754 5755Implemented two new external interfaces to support host-directed dynamic 5756ACPI 5757table load and unload. They are intended to simplify the host 5758implementation 5759of hot-plug support: 5760 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 5761 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 5762table. 5763See the ACPICA reference for additional details. Adds one new file, 5764components/tables/tbxfload.c 5765 5766Implemented and deployed two new interfaces for errors and warnings that 5767are 5768known to be caused by BIOS/firmware issues: 5769 AcpiBiosError: Prints "ACPI Firmware Error" message. 5770 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 5771Deployed these new interfaces in the ACPICA Table Manager code for ACPI 5772table 5773and FADT errors. Additional deployment to be completed as appropriate in 5774the 5775future. The associated conditional macros are ACPI_BIOS_ERROR and 5776ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 5777ACPICA 5778BZ 5779843. 5780 5781Implicit notify support: ensure that no memory allocation occurs within a 5782critical region. This fix moves a memory allocation outside of the time 5783that a 5784spinlock is held. Fixes issues on systems that do not allow this 5785behavior. 5786Jung-uk Kim. 5787 5788Split exception code utilities and tables into a new file, 5789utilities/utexcep.c 5790 5791Example Code and Data Size: These are the sizes for the OS-independent 5792acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5793debug 5794version of the code includes the debug output trace mechanism and has a 5795much 5796larger code and data size. 5797 5798 Previous Release: 5799 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5800 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5801 Current Release: 5802 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5803 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5804 5805 58062) iASL Compiler/Disassembler and Tools: 5807 5808iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 5809of 58100. Jung-uk Kim. 5811 5812Debugger: Enhanced the "tables" command to emit additional information 5813about 5814the current set of ACPI tables, including the owner ID and flags decode. 5815 5816Debugger: Reimplemented the "unload" command to use the new 5817AcpiUnloadParentTable external interface. This command was disable 5818previously 5819due to need for an unload interface. 5820 5821AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 5822option 5823will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 5824 5825---------------------------------------- 582620 June 2012. Summary of changes for version 20120620: 5827 5828 58291) ACPICA Kernel-resident Subsystem: 5830 5831Implemented support to expand the "implicit notify" feature to allow 5832multiple 5833devices to be notified by a single GPE. This feature automatically 5834generates a 5835runtime device notification in the absence of a BIOS-provided GPE control 5836method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 5837notify is 5838provided by ACPICA for Windows compatibility, and is a workaround for 5839BIOS 5840AML 5841code errors. See the description of the AcpiSetupGpeForWake interface in 5842the 5843APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 5844 5845Changed some comments and internal function names to simplify and ensure 5846correctness of the Linux code translation. No functional changes. 5847 5848Example Code and Data Size: These are the sizes for the OS-independent 5849acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5850debug 5851version of the code includes the debug output trace mechanism and has a 5852much 5853larger code and data size. 5854 5855 Previous Release: 5856 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5857 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5858 Current Release: 5859 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5860 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5861 5862 58632) iASL Compiler/Disassembler and Tools: 5864 5865Disassembler: Added support to emit short, commented descriptions for the 5866ACPI 5867predefined names in order to improve the readability of the disassembled 5868output. ACPICA BZ 959. Changes include: 5869 1) Emit descriptions for all standard predefined names (_INI, _STA, 5870_PRW, 5871etc.) 5872 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 5873 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 5874etc.) 5875 5876AcpiSrc: Fixed several long-standing Linux code translation issues. 5877Argument 5878descriptions in function headers are now translated properly to lower 5879case 5880and 5881underscores. ACPICA BZ 961. Also fixes translation problems such as 5882these: 5883(old -> new) 5884 i_aSL -> iASL 5885 00-7_f -> 00-7F 5886 16_k -> 16K 5887 local_fADT -> local_FADT 5888 execute_oSI -> execute_OSI 5889 5890iASL: Fixed a problem where null bytes were inadvertently emitted into 5891some 5892listing files. 5893 5894iASL: Added the existing debug options to the standard help screen. There 5895are 5896no longer two different help screens. ACPICA BZ 957. 5897 5898AcpiHelp: Fixed some typos in the various predefined name descriptions. 5899Also 5900expand some of the descriptions where appropriate. 5901 5902iASL: Fixed the -ot option (display compile times/statistics). Was not 5903working 5904properly for standard output; only worked for the debug file case. 5905 5906---------------------------------------- 590718 May 2012. Summary of changes for version 20120518: 5908 5909 59101) ACPICA Core Subsystem: 5911 5912Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 5913defined 5914to block until asynchronous events such as notifies and GPEs have 5915completed. 5916Within ACPICA, it is only called before a notify or GPE handler is 5917removed/uninstalled. It also may be useful for the host OS within related 5918drivers such as the Embedded Controller driver. See the ACPICA reference 5919for 5920additional information. ACPICA BZ 868. 5921 5922ACPI Tables: Added a new error message for a possible overflow failure 5923during 5924the conversion of FADT 32-bit legacy register addresses to internal 5925common 592664- 5927bit GAS structure representation. The GAS has a one-byte "bit length" 5928field, 5929thus limiting the register length to 255 bits. ACPICA BZ 953. 5930 5931Example Code and Data Size: These are the sizes for the OS-independent 5932acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5933debug 5934version of the code includes the debug output trace mechanism and has a 5935much 5936larger code and data size. 5937 5938 Previous Release: 5939 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5940 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5941 Current Release: 5942 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5943 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5944 5945 59462) iASL Compiler/Disassembler and Tools: 5947 5948iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 5949macro. 5950This keyword was added late in the ACPI 5.0 release cycle and was not 5951implemented until now. 5952 5953Disassembler: Added support for Operation Region externals. Adds missing 5954support for operation regions that are defined in another table, and 5955referenced locally via a Field or BankField ASL operator. Now generates 5956the 5957correct External statement. 5958 5959Disassembler: Several additional fixes for the External() statement 5960generation 5961related to some ASL operators. Also, order the External() statements 5962alphabetically in the disassembler output. Fixes the External() 5963generation 5964for 5965the Create* field, Alias, and Scope operators: 5966 1) Create* buffer field operators - fix type mismatch warning on 5967disassembly 5968 2) Alias - implement missing External support 5969 3) Scope - fix to make sure all necessary externals are emitted. 5970 5971iASL: Improved pathname support. For include files, merge the prefix 5972pathname 5973with the file pathname and eliminate unnecessary components. Convert 5974backslashes in all pathnames to forward slashes, for readability. Include 5975file 5976pathname changes affect both #include and Include() type operators. 5977 5978iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 5979end 5980of a valid line by inserting a newline and then returning the EOF during 5981the 5982next call to GetNextLine. Prevents the line from being ignored due to EOF 5983condition. 5984 5985iASL: Implemented some changes to enhance the IDE support (-vi option.) 5986Error 5987and Warning messages are now correctly recognized for both the source 5988code 5989browser and the global error and warning counts. 5990 5991---------------------------------------- 599220 April 2012. Summary of changes for version 20120420: 5993 5994 59951) ACPICA Core Subsystem: 5996 5997Implemented support for multiple notify handlers. This change adds 5998support 5999to 6000allow multiple system and device notify handlers on Device, Thermal Zone, 6001and 6002Processor objects. This can simplify the host OS notification 6003implementation. 6004Also re-worked and restructured the entire notify support code to 6005simplify 6006handler installation, handler removal, notify event queuing, and notify 6007dispatch to handler(s). Note: there can still only be two global notify 6008handlers - one for system notifies and one for device notifies. There are 6009no 6010changes to the existing handler install/remove interfaces. Lin Ming, Bob 6011Moore, Rafael Wysocki. 6012 6013Fixed a regression in the package repair code where the object reference 6014count was calculated incorrectly. Regression was introduced in the commit 6015"Support to add Package wrappers". 6016 6017Fixed a couple possible memory leaks in the AML parser, in the error 6018recovery 6019path. Jesper Juhl, Lin Ming. 6020 6021Example Code and Data Size: These are the sizes for the OS-independent 6022acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6023debug version of the code includes the debug output trace mechanism and 6024has a 6025much larger code and data size. 6026 6027 Previous Release: 6028 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6029 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6030 Current Release: 6031 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6032 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6033 6034 60352) iASL Compiler/Disassembler and Tools: 6036 6037iASL: Fixed a problem with the resource descriptor support where the 6038length 6039of the StartDependentFn and StartDependentFnNoPrio descriptors were not 6040included in cumulative descriptor offset, resulting in incorrect values 6041for 6042resource tags within resource descriptors appearing after a 6043StartDependent* 6044descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 6045 6046iASL and Preprocessor: Implemented full support for the #line directive 6047to 6048correctly track original source file line numbers through the .i 6049preprocessor 6050output file - for error and warning messages. 6051 6052iASL: Expand the allowable byte constants for address space IDs. 6053Previously, 6054the allowable range was 0x80-0xFF (user-defined spaces), now the range is 60550x0A-0xFF to allow for custom and new IDs without changing the compiler. 6056 6057iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 6058 6059iASL: Add option to completely disable the preprocessor (-Pn). 6060 6061iASL: Now emit all error/warning messages to standard error (stderr) by 6062default (instead of the previous stdout). 6063 6064ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 6065Update 6066for resource descriptor offset fix above. Update/cleanup error output 6067routines. Enable and send iASL errors/warnings to an error logfile 6068(error.txt). Send all other iASL output to a logfile (compiler.txt). 6069Fixed 6070several extraneous "unrecognized operator" messages. 6071 6072---------------------------------------- 607320 March 2012. Summary of changes for version 20120320: 6074 6075 60761) ACPICA Core Subsystem: 6077 6078Enhanced the sleep/wake interfaces to optionally execute the _GTS method 6079(Going To Sleep) and the _BFS method (Back From Sleep). Windows 6080apparently 6081does not execute these methods, and therefore these methods are often 6082untested. It has been seen on some systems where the execution of these 6083methods causes errors and also prevents the machine from entering S5. It 6084is 6085therefore suggested that host operating systems do not execute these 6086methods 6087by default. In the future, perhaps these methods can be optionally 6088executed 6089based on the age of the system and/or what is the newest version of 6090Windows 6091that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 6092and 6093AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 6094Ming. 6095 6096Fixed a problem where the length of the local/common FADT was set too 6097early. 6098The local FADT table length cannot be set to the common length until the 6099original length has been examined. There is code that checks the table 6100length 6101and sets various fields appropriately. This can affect older machines 6102with 6103early FADT versions. For example, this can cause inadvertent writes to 6104the 6105CST_CNT register. Julian Anastasov. 6106 6107Fixed a mapping issue related to a physical table override. Use the 6108deferred 6109mapping mechanism for tables loaded via the physical override OSL 6110interface. 6111This allows for early mapping before the virtual memory manager is 6112available. 6113Thomas Renninger, Bob Moore. 6114 6115Enhanced the automatic return-object repair code: Repair a common problem 6116with 6117predefined methods that are defined to return a variable-length Package 6118of 6119sub-objects. If there is only one sub-object, some BIOS ASL code 6120mistakenly 6121simply returns the single object instead of a Package with one sub- 6122object. 6123This new support will repair this error by wrapping a Package object 6124around 6125the original object, creating the correct and expected Package with one 6126sub- 6127object. Names that can be repaired in this manner include: _ALR, _CSD, 6128_HPX, 6129_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 6130939. 6131 6132Changed the exception code returned for invalid ACPI paths passed as 6133parameters to external interfaces such as AcpiEvaluateObject. Was 6134AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 6135 6136Example Code and Data Size: These are the sizes for the OS-independent 6137acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6138debug 6139version of the code includes the debug output trace mechanism and has a 6140much 6141larger code and data size. 6142 6143 Previous Release: 6144 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6145 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6146 Current Release: 6147 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6148 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6149 6150 61512) iASL Compiler/Disassembler and Tools: 6152 6153iASL: Added the infrastructure and initial implementation of a integrated 6154C- 6155like preprocessor. This will simplify BIOS development process by 6156eliminating 6157the need for a separate preprocessing step during builds. On Windows, it 6158also 6159eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 6160features including full #define() macro support are still under 6161development. 6162These preprocessor directives are supported: 6163 #define 6164 #elif 6165 #else 6166 #endif 6167 #error 6168 #if 6169 #ifdef 6170 #ifndef 6171 #include 6172 #pragma message 6173 #undef 6174 #warning 6175In addition, these new command line options are supported: 6176 -D <symbol> Define symbol for preprocessor use 6177 -li Create preprocessed output file (*.i) 6178 -P Preprocess only and create preprocessor output file (*.i) 6179 6180Table Compiler: Fixed a problem where the equals operator within an 6181expression 6182did not work properly. 6183 6184Updated iASL to use the current versions of Bison/Flex. Updated the 6185Windows 6186project file to invoke these tools from the standard location. ACPICA BZ 6187904. 6188Versions supported: 6189 Flex for Windows: V2.5.4 6190 Bison for Windows: V2.4.1 6191 6192---------------------------------------- 619315 February 2012. Summary of changes for version 20120215: 6194 6195 61961) ACPICA Core Subsystem: 6197 6198There have been some major changes to the sleep/wake support code, as 6199described below (a - e). 6200 6201a) The AcpiLeaveSleepState has been split into two interfaces, similar to 6202AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 6203AcpiLeaveSleepStatePrep. This allows the host to perform actions between 6204the 6205time the _BFS method is called and the _WAK method is called. NOTE: all 6206hosts 6207must update their wake/resume code or else sleep/wake will not work 6208properly. 6209Rafael Wysocki. 6210 6211b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 6212_WAK 6213method. Some machines require that the GPEs are enabled before the _WAK 6214method 6215is executed. Thomas Renninger. 6216 6217c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 6218bit. 6219Some BIOS code assumes that WAK_STS will be cleared on resume and use it 6220to 6221determine whether the system is rebooting or resuming. Matthew Garrett. 6222 6223d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 6224Sleep) to 6225match the ACPI specification requirement. Rafael Wysocki. 6226 6227e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 6228registers within the V5 FADT. This support adds two new files: 6229hardware/hwesleep.c implements the support for the new registers. Moved 6230all 6231sleep/wake external interfaces to hardware/hwxfsleep.c. 6232 6233 6234Added a new OSL interface for ACPI table overrides, 6235AcpiOsPhysicalTableOverride. This interface allows the host to override a 6236table via a physical address, instead of the logical address required by 6237AcpiOsTableOverride. This simplifies the host implementation. Initial 6238implementation by Thomas Renninger. The ACPICA implementation creates a 6239single 6240shared function for table overrides that attempts both a logical and a 6241physical override. 6242 6243Expanded the OSL memory read/write interfaces to 64-bit data 6244(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 6245transfer support for GAS register structures passed to AcpiRead and 6246AcpiWrite. 6247 6248Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 6249custom 6250build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 6251model. 6252See the ACPICA reference for details. ACPICA BZ 942. This option removes 6253about 625410% of the code and 5% of the static data, and the following hardware 6255ACPI 6256features become unavailable: 6257 PM Event and Control registers 6258 SCI interrupt (and handler) 6259 Fixed Events 6260 General Purpose Events (GPEs) 6261 Global Lock 6262 ACPI PM timer 6263 FACS table (Waking vectors and Global Lock) 6264 6265Updated the unix tarball directory structure to match the ACPICA git 6266source 6267tree. This ensures that the generic unix makefiles work properly (in 6268generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 6269867. 6270 6271Updated the return value of the _REV predefined method to integer value 5 6272to 6273reflect ACPI 5.0 support. 6274 6275Moved the external ACPI PM timer interface prototypes to the public 6276acpixf.h 6277file where they belong. 6278 6279Example Code and Data Size: These are the sizes for the OS-independent 6280acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6281debug 6282version of the code includes the debug output trace mechanism and has a 6283much 6284larger code and data size. 6285 6286 Previous Release: 6287 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6288 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6289 Current Release: 6290 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6291 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6292 6293 62942) iASL Compiler/Disassembler and Tools: 6295 6296Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 6297descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 6298incorrectly displayed. 6299 6300AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 6301specification. 6302 6303---------------------------------------- 630411 January 2012. Summary of changes for version 20120111: 6305 6306 63071) ACPICA Core Subsystem: 6308 6309Implemented a new mechanism to allow host device drivers to check for 6310address 6311range conflicts with ACPI Operation Regions. Both SystemMemory and 6312SystemIO 6313address spaces are supported. A new external interface, 6314AcpiCheckAddressRange, 6315allows drivers to check an address range against the ACPI namespace. See 6316the 6317ACPICA reference for additional details. Adds one new file, 6318utilities/utaddress.c. Lin Ming, Bob Moore. 6319 6320Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 6321Control 6322and 6323Status registers, update the ACPI 5.0 flags, and update internal data 6324structures to handle an FADT larger than 256 bytes. The size of the ACPI 63255.0 6326FADT is 268 bytes. 6327 6328Updated all ACPICA copyrights and signons to 2012. Added the 2012 6329copyright to 6330all module headers and signons, including the standard Linux header. This 6331affects virtually every file in the ACPICA core subsystem, iASL compiler, 6332and 6333all ACPICA utilities. 6334 6335Example Code and Data Size: These are the sizes for the OS-independent 6336acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6337debug 6338version of the code includes the debug output trace mechanism and has a 6339much 6340larger code and data size. 6341 6342 Previous Release: 6343 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6344 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6345 Current Release: 6346 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6347 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6348 6349 63502) iASL Compiler/Disassembler and Tools: 6351 6352Disassembler: fixed a problem with the automatic resource tag generation 6353support. Fixes a problem where the resource tags are inadvertently not 6354constructed if the table being disassembled contains external references 6355to 6356control methods. Moved the actual construction of the tags to after the 6357final 6358namespace is constructed (after 2nd parse is invoked due to external 6359control 6360method references.) ACPICA BZ 941. 6361 6362Table Compiler: Make all "generic" operators caseless. These are the 6363operators 6364like UINT8, String, etc. Making these caseless improves ease-of-use. 6365ACPICA BZ 6366934. 6367 6368---------------------------------------- 636923 November 2011. Summary of changes for version 20111123: 6370 63710) ACPI 5.0 Support: 6372 6373This release contains full support for the ACPI 5.0 specification, as 6374summarized below. 6375 6376Reduced Hardware Support: 6377------------------------- 6378 6379This support allows for ACPI systems without the usual ACPI hardware. 6380This 6381support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 6382will 6383not attempt to initialize or use any of the usual ACPI hardware. Note, 6384when 6385this flag is set, all of the following ACPI hardware is assumed to be not 6386present and is not initialized or accessed: 6387 6388 General Purpose Events (GPEs) 6389 Fixed Events (PM1a/PM1b and PM Control) 6390 Power Management Timer and Console Buttons (power/sleep) 6391 Real-time Clock Alarm 6392 Global Lock 6393 System Control Interrupt (SCI) 6394 The FACS is assumed to be non-existent 6395 6396ACPI Tables: 6397------------ 6398 6399All new tables and updates to existing tables are fully supported in the 6400ACPICA headers (for use by device drivers), the disassembler, and the 6401iASL 6402Data Table Compiler. ACPI 5.0 defines these new tables: 6403 6404 BGRT /* Boot Graphics Resource Table */ 6405 DRTM /* Dynamic Root of Trust for Measurement table */ 6406 FPDT /* Firmware Performance Data Table */ 6407 GTDT /* Generic Timer Description Table */ 6408 MPST /* Memory Power State Table */ 6409 PCCT /* Platform Communications Channel Table */ 6410 PMTT /* Platform Memory Topology Table */ 6411 RASF /* RAS Feature table */ 6412 6413Operation Regions/SpaceIDs: 6414--------------------------- 6415 6416All new operation regions are fully supported by the iASL compiler, the 6417disassembler, and the ACPICA runtime code (for dispatch to region 6418handlers.) 6419The new operation region Space IDs are: 6420 6421 GeneralPurposeIo 6422 GenericSerialBus 6423 6424Resource Descriptors: 6425--------------------- 6426 6427All new ASL resource descriptors are fully supported by the iASL 6428compiler, 6429the 6430ASL/AML disassembler, and the ACPICA runtime Resource Manager code 6431(including 6432all new predefined resource tags). New descriptors are: 6433 6434 FixedDma 6435 GpioIo 6436 GpioInt 6437 I2cSerialBus 6438 SpiSerialBus 6439 UartSerialBus 6440 6441ASL/AML Operators, New and Modified: 6442------------------------------------ 6443 6444One new operator is added, the Connection operator, which is used to 6445associate 6446a GeneralPurposeIo or GenericSerialBus resource descriptor with 6447individual 6448field objects within an operation region. Several new protocols are 6449associated 6450with the AccessAs operator. All are fully supported by the iASL compiler, 6451disassembler, and runtime ACPICA AML interpreter: 6452 6453 Connection // Declare Field Connection 6454attributes 6455 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 6456 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 6457Protocol 6458 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 6459 RawDataBuffer // Data type for Vendor Data 6460fields 6461 6462Predefined ASL/AML Objects: 6463--------------------------- 6464 6465All new predefined objects/control-methods are supported by the iASL 6466compiler 6467and the ACPICA runtime validation/repair (arguments and return values.) 6468New 6469predefined names include the following: 6470 6471Standard Predefined Names (Objects or Control Methods): 6472 _AEI, _CLS, _CPC, _CWS, _DEP, 6473 _DLM, _EVT, _GCP, _CRT, _GWS, 6474 _HRV, _PRE, _PSE, _SRT, _SUB. 6475 6476Resource Tags (Names used to access individual fields within resource 6477descriptors): 6478 _DBT, _DPL, _DRS, _END, _FLC, 6479 _IOR, _LIN, _MOD, _PAR, _PHA, 6480 _PIN, _PPI, _POL, _RXL, _SLV, 6481 _SPE, _STB, _TXL, _VEN. 6482 6483ACPICA External Interfaces: 6484--------------------------- 6485 6486Several new interfaces have been defined for use by ACPI-related device 6487drivers and other host OS services: 6488 6489AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 6490to 6491acquire and release AML mutexes that are defined in the DSDT/SSDT tables 6492provided by the BIOS. They are intended to be used in conjunction with 6493the 6494ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 6495mutual exclusion with the AML code/interpreter. 6496 6497AcpiGetEventResources: Returns the (formatted) resource descriptors as 6498defined 6499by the ACPI 5.0 _AEI object (ACPI Event Information). This object 6500provides 6501resource descriptors associated with hardware-reduced platform events, 6502similar 6503to the AcpiGetCurrentResources interface. 6504 6505Operation Region Handlers: For General Purpose IO and Generic Serial Bus 6506operation regions, information about the Connection() object and any 6507optional 6508length information is passed to the region handler within the Context 6509parameter. 6510 6511AcpiBufferToResource: This interface converts a raw AML buffer containing 6512a 6513resource template or resource descriptor to the ACPI_RESOURCE internal 6514format 6515suitable for use by device drivers. Can be used by an operation region 6516handler 6517to convert the Connection() buffer object into a ACPI_RESOURCE. 6518 6519Miscellaneous/Tools/TestSuites: 6520------------------------------- 6521 6522Support for extended _HID names (Four alpha characters instead of three). 6523Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 6524Support for ACPI 5.0 features in the ASLTS test suite. 6525Fully updated documentation (ACPICA and iASL reference documents.) 6526 6527ACPI Table Definition Language: 6528------------------------------- 6529 6530Support for this language was implemented and released as a subsystem of 6531the 6532iASL compiler in 2010. (See the iASL compiler User Guide.) 6533 6534 6535Non-ACPI 5.0 changes for this release: 6536-------------------------------------- 6537 65381) ACPICA Core Subsystem: 6539 6540Fix a problem with operation region declarations where a failure can 6541occur 6542if 6543the region name and an argument that evaluates to an object (such as the 6544region address) are in different namespace scopes. Lin Ming, ACPICA BZ 6545937. 6546 6547Do not abort an ACPI table load if an invalid space ID is found within. 6548This 6549will be caught later if the offending method is executed. ACPICA BZ 925. 6550 6551Fixed an issue with the FFixedHW space ID where the ID was not always 6552recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 6553 6554Fixed a problem with the 32-bit generation of the unix-specific OSL 6555(osunixxf.c). Lin Ming, ACPICA BZ 936. 6556 6557Several changes made to enable generation with the GCC 4.6 compiler. 6558ACPICA BZ 6559935. 6560 6561New error messages: Unsupported I/O requests (not 8/16/32 bit), and 6562Index/Bank 6563field registers out-of-range. 6564 65652) iASL Compiler/Disassembler and Tools: 6566 6567iASL: Implemented the __PATH__ operator, which returns the full pathname 6568of 6569the current source file. 6570 6571AcpiHelp: Automatically display expanded keyword information for all ASL 6572operators. 6573 6574Debugger: Add "Template" command to disassemble/dump resource template 6575buffers. 6576 6577Added a new master script to generate and execute the ASLTS test suite. 6578Automatically handles 32- and 64-bit generation. See tests/aslts.sh 6579 6580iASL: Fix problem with listing generation during processing of the 6581Switch() 6582operator where AML listing was disabled until the entire Switch block was 6583completed. 6584 6585iASL: Improve support for semicolon statement terminators. Fix "invalid 6586character" message for some cases when the semicolon is used. Semicolons 6587are 6588now allowed after every <Term> grammar element. ACPICA BZ 927. 6589 6590iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 6591923. 6592 6593Disassembler: Fix problem with disassembly of the DataTableRegion 6594operator 6595where an inadvertent "Unhandled deferred opcode" message could be 6596generated. 6597 65983) Example Code and Data Size 6599 6600These are the sizes for the OS-independent acpica.lib produced by the 6601Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6602includes the debug output trace mechanism and has a much larger code and 6603data 6604size. 6605 6606 Previous Release: 6607 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6608 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6609 Current Release: 6610 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6611 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6612 6613---------------------------------------- 661422 September 2011. Summary of changes for version 20110922: 6615 66160) ACPI 5.0 News: 6617 6618Support for ACPI 5.0 in ACPICA has been underway for several months and 6619will 6620be released at the same time that ACPI 5.0 is officially released. 6621 6622The ACPI 5.0 specification is on track for release in the next few 6623months. 6624 66251) ACPICA Core Subsystem: 6626 6627Fixed a problem where the maximum sleep time for the Sleep() operator was 6628intended to be limited to two seconds, but was inadvertently limited to 662920 6630seconds instead. 6631 6632Linux and Unix makefiles: Added header file dependencies to ensure 6633correct 6634generation of ACPICA core code and utilities. Also simplified the 6635makefiles 6636considerably through the use of the vpath variable to specify search 6637paths. 6638ACPICA BZ 924. 6639 66402) iASL Compiler/Disassembler and Tools: 6641 6642iASL: Implemented support to check the access length for all fields 6643created to 6644access named Resource Descriptor fields. For example, if a resource field 6645is 6646defined to be two bits, a warning is issued if a CreateXxxxField() is 6647used 6648with an incorrect bit length. This is implemented for all current 6649resource 6650descriptor names. ACPICA BZ 930. 6651 6652Disassembler: Fixed a byte ordering problem with the output of 24-bit and 665356- 6654bit integers. 6655 6656iASL: Fixed a couple of issues associated with variable-length package 6657objects. 1) properly handle constants like One, Ones, Zero -- do not make 6658a 6659VAR_PACKAGE when these are used as a package length. 2) Allow the 6660VAR_PACKAGE 6661opcode (in addition to PACKAGE) when validating object types for 6662predefined 6663names. 6664 6665iASL: Emit statistics for all output files (instead of just the ASL input 6666and 6667AML output). Includes listings, hex files, etc. 6668 6669iASL: Added -G option to the table compiler to allow the compilation of 6670custom 6671ACPI tables. The only part of a table that is required is the standard 667236- 6673byte 6674ACPI header. 6675 6676AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 6677headers), 6678which also adds correct 64-bit support. Also, now all output filenames 6679are 6680completely lower case. 6681 6682AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 6683loading table files. A warning is issued for any such tables. The only 6684exception is an FADT. This also fixes a possible fault when attempting to 6685load 6686non-AML tables. ACPICA BZ 932. 6687 6688AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 6689a 6690missing table terminator could cause a fault when using the -p option. 6691 6692AcpiSrc: Fixed a possible divide-by-zero fault when generating file 6693statistics. 6694 66953) Example Code and Data Size 6696 6697These are the sizes for the OS-independent acpica.lib produced by the 6698Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6699includes the debug output trace mechanism and has a much larger code and 6700data 6701size. 6702 6703 Previous Release (VC 9.0): 6704 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6705 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6706 Current Release (VC 9.0): 6707 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6708 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6709 6710 6711---------------------------------------- 671223 June 2011. Summary of changes for version 20110623: 6713 67141) ACPI CA Core Subsystem: 6715 6716Updated the predefined name repair mechanism to not attempt repair of a 6717_TSS 6718return object if a _PSS object is present. We can only sort the _TSS 6719return 6720package if there is no _PSS within the same scope. This is because if 6721_PSS 6722is 6723present, the ACPI specification dictates that the _TSS Power Dissipation 6724field 6725is to be ignored, and therefore some BIOSs leave garbage values in the 6726_TSS 6727Power field(s). In this case, it is best to just return the _TSS package 6728as- 6729is. Reported by, and fixed with assistance from Fenghua Yu. 6730 6731Added an option to globally disable the control method return value 6732validation 6733and repair. This runtime option can be used to disable return value 6734repair 6735if 6736this is causing a problem on a particular machine. Also added an option 6737to 6738AcpiExec (-dr) to set this disable flag. 6739 6740All makefiles and project files: Major changes to improve generation of 6741ACPICA 6742tools. ACPICA BZ 912: 6743 Reduce default optimization levels to improve compatibility 6744 For Linux, add strict-aliasing=0 for gcc 4 6745 Cleanup and simplify use of command line defines 6746 Cleanup multithread library support 6747 Improve usage messages 6748 6749Linux-specific header: update handling of THREAD_ID and pthread. For the 675032- 6751bit case, improve casting to eliminate possible warnings, especially with 6752the 6753acpica tools. 6754 6755Example Code and Data Size: These are the sizes for the OS-independent 6756acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6757debug 6758version of the code includes the debug output trace mechanism and has a 6759much 6760larger code and data size. 6761 6762 Previous Release (VC 9.0): 6763 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6764 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6765 Current Release (VC 9.0): 6766 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6767 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6768 67692) iASL Compiler/Disassembler and Tools: 6770 6771With this release, a new utility named "acpihelp" has been added to the 6772ACPICA 6773package. This utility summarizes the ACPI specification chapters for the 6774ASL 6775and AML languages. It generates under Linux/Unix as well as Windows, and 6776provides the following functionality: 6777 Find/display ASL operator(s) -- with description and syntax. 6778 Find/display ASL keyword(s) -- with exact spelling and descriptions. 6779 Find/display ACPI predefined name(s) -- with description, number 6780 of arguments, and the return value data type. 6781 Find/display AML opcode name(s) -- with opcode, arguments, and 6782grammar. 6783 Decode/display AML opcode -- with opcode name, arguments, and 6784grammar. 6785 6786Service Layers: Make multi-thread support configurable. Conditionally 6787compile 6788the multi-thread support so that threading libraries will not be linked 6789if 6790not 6791necessary. The only tool that requires multi-thread support is AcpiExec. 6792 6793iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 6794of 6795Bison appear to want the interface to yyerror to be a const char * (or at 6796least this is a problem when generating iASL on some systems.) ACPICA BZ 6797923 6798Pierre Lejeune. 6799 6800Tools: Fix for systems where O_BINARY is not defined. Only used for 6801Windows 6802versions of the tools. 6803 6804---------------------------------------- 680527 May 2011. Summary of changes for version 20110527: 6806 68071) ACPI CA Core Subsystem: 6808 6809ASL Load() operator: Reinstate most restrictions on the incoming ACPI 6810table 6811signature. Now, only allow SSDT, OEMx, and a null signature. History: 6812 1) Originally, we checked the table signature for "SSDT" or "PSDT". 6813 (PSDT is now obsolete.) 6814 2) We added support for OEMx tables, signature "OEM" plus a fourth 6815 "don't care" character. 6816 3) Valid tables were encountered with a null signature, so we just 6817 gave up on validating the signature, (05/2008). 6818 4) We encountered non-AML tables such as the MADT, which caused 6819 interpreter errors and kernel faults. So now, we once again allow 6820 only SSDT, OEMx, and now, also a null signature. (05/2011). 6821 6822Added the missing _TDL predefined name to the global name list in order 6823to 6824enable validation. Affects both the core ACPICA code and the iASL 6825compiler. 6826 6827Example Code and Data Size: These are the sizes for the OS-independent 6828acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6829debug 6830version of the code includes the debug output trace mechanism and has a 6831much 6832larger code and data size. 6833 6834 Previous Release (VC 9.0): 6835 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6836 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6837 Current Release (VC 9.0): 6838 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6839 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6840 68412) iASL Compiler/Disassembler and Tools: 6842 6843Debugger/AcpiExec: Implemented support for "complex" method arguments on 6844the 6845debugger command line. This adds support beyond simple integers -- 6846including 6847Strings, Buffers, and Packages. Includes support for nested packages. 6848Increased the default command line buffer size to accommodate these 6849arguments. 6850See the ACPICA reference for details and syntax. ACPICA BZ 917. 6851 6852Debugger/AcpiExec: Implemented support for "default" method arguments for 6853the 6854Execute/Debug command. Now, the debugger will always invoke a control 6855method 6856with the required number of arguments -- even if the command line 6857specifies 6858none or insufficient arguments. It uses default integer values for any 6859missing 6860arguments. Also fixes a bug where only six method arguments maximum were 6861supported instead of the required seven. 6862 6863Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 6864and 6865also return status in order to prevent buffer overruns. See the ACPICA 6866reference for details and syntax. ACPICA BZ 921 6867 6868iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 6869makefiles to simplify support for the two different but similar parser 6870generators, bison and yacc. 6871 6872Updated the generic unix makefile for gcc 4. The default gcc version is 6873now 6874expected to be 4 or greater, since options specific to gcc 4 are used. 6875 6876---------------------------------------- 687713 April 2011. Summary of changes for version 20110413: 6878 68791) ACPI CA Core Subsystem: 6880 6881Implemented support to execute a so-called "orphan" _REG method under the 6882EC 6883device. This change will force the execution of a _REG method underneath 6884the 6885EC 6886device even if there is no corresponding operation region of type 6887EmbeddedControl. Fixes a problem seen on some machines and apparently is 6888compatible with Windows behavior. ACPICA BZ 875. 6889 6890Added more predefined methods that are eligible for automatic NULL 6891package 6892element removal. This change adds another group of predefined names to 6893the 6894list 6895of names that can be repaired by having NULL package elements dynamically 6896removed. This group are those methods that return a single variable- 6897length 6898package containing simple data types such as integers, buffers, strings. 6899This 6900includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 6901_PSL, 6902_Sx, 6903and _TZD. ACPICA BZ 914. 6904 6905Split and segregated all internal global lock functions to a new file, 6906evglock.c. 6907 6908Updated internal address SpaceID for DataTable regions. Moved this 6909internal 6910space 6911id in preparation for ACPI 5.0 changes that will include some new space 6912IDs. 6913This 6914change should not affect user/host code. 6915 6916Example Code and Data Size: These are the sizes for the OS-independent 6917acpica.lib 6918produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6919version of 6920the code includes the debug output trace mechanism and has a much larger 6921code 6922and 6923data size. 6924 6925 Previous Release (VC 9.0): 6926 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6927 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6928 Current Release (VC 9.0): 6929 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6930 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6931 69322) iASL Compiler/Disassembler and Tools: 6933 6934iASL/DTC: Major update for new grammar features. Allow generic data types 6935in 6936custom ACPI tables. Field names are now optional. Any line can be split 6937to 6938multiple lines using the continuation char (\). Large buffers now use 6939line- 6940continuation character(s) and no colon on the continuation lines. See the 6941grammar 6942update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 6943Moore. 6944 6945iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 6946statements. 6947Since the parser stuffs a "zero" as the return value for these statements 6948(due 6949to 6950the underlying AML grammar), they were seen as "return with value" by the 6951iASL 6952semantic checking. They are now seen correctly as "null" return 6953statements. 6954 6955iASL: Check if a_REG declaration has a corresponding Operation Region. 6956Adds a 6957check for each _REG to ensure that there is in fact a corresponding 6958operation 6959region declaration in the same scope. If not, the _REG method is not very 6960useful 6961since it probably won't be executed. ACPICA BZ 915. 6962 6963iASL/DTC: Finish support for expression evaluation. Added a new 6964expression 6965parser 6966that implements c-style operator precedence and parenthesization. ACPICA 6967bugzilla 6968908. 6969 6970Disassembler/DTC: Remove support for () and <> style comments in data 6971tables. 6972Now 6973that DTC has full expression support, we don't want to have comment 6974strings 6975that 6976start with a parentheses or a less-than symbol. Now, only the standard /* 6977and 6978// 6979comments are supported, as well as the bracket [] comments. 6980 6981AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 6982"unusual" 6983headers in the acpidump file. Update the header validation to support 6984these 6985tables. Problem introduced in previous AcpiXtract version in the change 6986to 6987support "wrong checksum" error messages emitted by acpidump utility. 6988 6989iASL: Add a * option to generate all template files (as a synonym for 6990ALL) 6991as 6992in 6993"iasl -T *" or "iasl -T ALL". 6994 6995iASL/DTC: Do not abort compiler on fatal errors. We do not want to 6996completely 6997abort the compiler on "fatal" errors, simply should abort the current 6998compile. 6999This allows multiple compiles with a single (possibly wildcard) compiler 7000invocation. 7001 7002---------------------------------------- 700316 March 2011. Summary of changes for version 20110316: 7004 70051) ACPI CA Core Subsystem: 7006 7007Fixed a problem caused by a _PRW method appearing at the namespace root 7008scope 7009during the setup of wake GPEs. A fault could occur if a _PRW directly 7010under 7011the 7012root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 7013 7014Implemented support for "spurious" Global Lock interrupts. On some 7015systems, a 7016global lock interrupt can occur without the pending flag being set. Upon 7017a 7018GL 7019interrupt, we now ensure that a thread is actually waiting for the lock 7020before 7021signaling GL availability. Rafael Wysocki, Bob Moore. 7022 7023Example Code and Data Size: These are the sizes for the OS-independent 7024acpica.lib 7025produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7026version of 7027the code includes the debug output trace mechanism and has a much larger 7028code 7029and 7030data size. 7031 7032 Previous Release (VC 9.0): 7033 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7034 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7035 Current Release (VC 9.0): 7036 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7037 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7038 70392) iASL Compiler/Disassembler and Tools: 7040 7041Implemented full support for the "SLIC" ACPI table. Includes support in 7042the 7043header files, disassembler, table compiler, and template generator. Bob 7044Moore, 7045Lin Ming. 7046 7047AcpiXtract: Correctly handle embedded comments and messages from 7048AcpiDump. 7049Apparently some or all versions of acpidump will occasionally emit a 7050comment 7051like 7052"Wrong checksum", etc., into the dump file. This was causing problems for 7053AcpiXtract. ACPICA BZ 905. 7054 7055iASL: Fix the Linux makefile by removing an inadvertent double file 7056inclusion. 7057ACPICA BZ 913. 7058 7059AcpiExec: Update installation of operation region handlers. Install one 7060handler 7061for a user-defined address space. This is used by the ASL test suite 7062(ASLTS). 7063 7064---------------------------------------- 706511 February 2011. Summary of changes for version 20110211: 7066 70671) ACPI CA Core Subsystem: 7068 7069Added a mechanism to defer _REG methods for some early-installed 7070handlers. 7071Most user handlers should be installed before call to 7072AcpiEnableSubsystem. 7073However, Event handlers and region handlers should be installed after 7074AcpiInitializeObjects. Override handlers for the "default" regions should 7075be 7076installed early, however. This change executes all _REG methods for the 7077default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 7078chicken/egg issues between them. ACPICA BZ 848. 7079 7080Implemented an optimization for GPE detection. This optimization will 7081simply 7082ignore GPE registers that contain no enabled GPEs -- there is no need to 7083read the register since this information is available internally. This 7084becomes more important on machines with a large GPE space. ACPICA 7085bugzilla 7086884. Lin Ming. Suggestion from Joe Liu. 7087 7088Removed all use of the highly unreliable FADT revision field. The 7089revision 7090number in the FADT has been found to be completely unreliable and cannot 7091be 7092trusted. Only the actual table length can be used to infer the version. 7093This 7094change updates the ACPICA core and the disassembler so that both no 7095longer 7096even look at the FADT version and instead depend solely upon the FADT 7097length. 7098 7099Fix an unresolved name issue for the no-debug and no-error-message source 7100generation cases. The _AcpiModuleName was left undefined in these cases, 7101but 7102it is actually needed as a parameter to some interfaces. Define 7103_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 7104 7105Split several large files (makefiles and project files updated) 7106 utglobal.c -> utdecode.c 7107 dbcomds.c -> dbmethod.c dbnames.c 7108 dsopcode.c -> dsargs.c dscontrol.c 7109 dsload.c -> dsload2.c 7110 aslanalyze.c -> aslbtypes.c aslwalks.c 7111 7112Example Code and Data Size: These are the sizes for the OS-independent 7113acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7114debug version of the code includes the debug output trace mechanism and 7115has 7116a much larger code and data size. 7117 7118 Previous Release (VC 9.0): 7119 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7120 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7121 Current Release (VC 9.0): 7122 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7123 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7124 71252) iASL Compiler/Disassembler and Tools: 7126 7127iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 7128These are useful C-style macros with the standard definitions. ACPICA 7129bugzilla 898. 7130 7131iASL/DTC: Added support for integer expressions and labels. Support for 7132full 7133expressions for all integer fields in all ACPI tables. Support for labels 7134in 7135"generic" portions of tables such as UEFI. See the iASL reference manual. 7136 7137Debugger: Added a command to display the status of global handlers. The 7138"handlers" command will display op region, fixed event, and miscellaneous 7139global handlers. installation status -- and for op regions, whether 7140default 7141or user-installed handler will be used. 7142 7143iASL: Warn if reserved method incorrectly returns a value. Many 7144predefined 7145names are defined such that they do not return a value. If implemented as 7146a 7147method, issue a warning if such a name explicitly returns a value. ACPICA 7148Bugzilla 855. 7149 7150iASL: Added detection of GPE method name conflicts. Detects a conflict 7151where 7152there are two GPE methods of the form _Lxy and _Exy in the same scope. 7153(For 7154example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 7155 7156iASL/DTC: Fixed a couple input scanner issues with comments and line 7157numbers. Comment remover could get confused and miss a comment ending. 7158Fixed 7159a problem with line counter maintenance. 7160 7161iASL/DTC: Reduced the severity of some errors from fatal to error. There 7162is 7163no need to abort on simple errors within a field definition. 7164 7165Debugger: Simplified the output of the help command. All help output now 7166in 7167a single screen, instead of help subcommands. ACPICA Bugzilla 897. 7168 7169---------------------------------------- 717012 January 2011. Summary of changes for version 20110112: 7171 71721) ACPI CA Core Subsystem: 7173 7174Fixed a race condition between method execution and namespace walks that 7175can 7176possibly cause a fault. The problem was apparently introduced in version 717720100528 as a result of a performance optimization that reduces the 7178number 7179of 7180namespace walks upon method exit by using the delete_namespace_subtree 7181function instead of the delete_namespace_by_owner function used 7182previously. 7183Bug is a missing namespace lock in the delete_namespace_subtree function. 7184dana.myers@oracle.com 7185 7186Fixed several issues and a possible fault with the automatic "serialized" 7187method support. History: This support changes a method to "serialized" on 7188the 7189fly if the method generates an AE_ALREADY_EXISTS error, indicating the 7190possibility that it cannot handle reentrancy. This fix repairs a couple 7191of 7192issues seen in the field, especially on machines with many cores: 7193 7194 1) Delete method children only upon the exit of the last thread, 7195 so as to not delete objects out from under other running threads 7196 (and possibly causing a fault.) 7197 2) Set the "serialized" bit for the method only upon the exit of the 7198 Last thread, so as to not cause deadlock when running threads 7199 attempt to exit. 7200 3) Cleanup the use of the AML "MethodFlags" and internal method flags 7201 so that there is no longer any confusion between the two. 7202 7203 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 7204 7205Debugger: Now lock the namespace for duration of a namespace dump. 7206Prevents 7207issues if the namespace is changing dynamically underneath the debugger. 7208Especially affects temporary namespace nodes, since the debugger displays 7209these also. 7210 7211Updated the ordering of include files. The ACPICA headers should appear 7212before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 7213set 7214any necessary compiler-specific defines, etc. Affects the ACPI-related 7215tools 7216and utilities. 7217 7218Updated all ACPICA copyrights and signons to 2011. Added the 2011 7219copyright 7220to all module headers and signons, including the Linux header. This 7221affects 7222virtually every file in the ACPICA core subsystem, iASL compiler, and all 7223utilities. 7224 7225Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 7226project files for VC++ 6.0 are now obsolete. New project files can be 7227found 7228under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 7229details. 7230 7231Example Code and Data Size: These are the sizes for the OS-independent 7232acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7233debug version of the code includes the debug output trace mechanism and 7234has a 7235much larger code and data size. 7236 7237 Previous Release (VC 6.0): 7238 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7239 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7240 Current Release (VC 9.0): 7241 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7242 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7243 72442) iASL Compiler/Disassembler and Tools: 7245 7246iASL: Added generic data types to the Data Table compiler. Add "generic" 7247data 7248types such as UINT32, String, Unicode, etc., to simplify the generation 7249of 7250platform-defined tables such as UEFI. Lin Ming. 7251 7252iASL: Added listing support for the Data Table Compiler. Adds listing 7253support 7254(-l) to display actual binary output for each line of input code. 7255 7256---------------------------------------- 725709 December 2010. Summary of changes for version 20101209: 7258 72591) ACPI CA Core Subsystem: 7260 7261Completed the major overhaul of the GPE support code that was begun in 7262July 72632010. Major features include: removal of _PRW execution in ACPICA (host 7264executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 7265changes to existing interfaces, simplification of GPE handler operation, 7266and 7267a handful of new interfaces: 7268 7269 AcpiUpdateAllGpes 7270 AcpiFinishGpe 7271 AcpiSetupGpeForWake 7272 AcpiSetGpeWakeMask 7273 One new file, evxfgpe.c to consolidate all external GPE interfaces. 7274 7275See the ACPICA Programmer Reference for full details and programming 7276information. See the new section 4.4 "General Purpose Event (GPE) 7277Support" 7278for a full overview, and section 8.7 "ACPI General Purpose Event 7279Management" 7280for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 7281Ming, 7282Bob Moore, Rafael Wysocki. 7283 7284Implemented a new GPE feature for Windows compatibility, the "Implicit 7285Wake 7286GPE Notify". This feature will automatically issue a Notify(2) on a 7287device 7288when a Wake GPE is received if there is no corresponding GPE method or 7289handler. ACPICA BZ 870. 7290 7291Fixed a problem with the Scope() operator during table parse and load 7292phase. 7293During load phase (table load or method execution), the scope operator 7294should 7295not enter the target into the namespace. Instead, it should open a new 7296scope 7297at the target location. Linux BZ 19462, ACPICA BZ 882. 7298 7299Example Code and Data Size: These are the sizes for the OS-independent 7300acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7301debug version of the code includes the debug output trace mechanism and 7302has a 7303much larger code and data size. 7304 7305 Previous Release: 7306 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7307 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7308 Current Release: 7309 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7310 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7311 73122) iASL Compiler/Disassembler and Tools: 7313 7314iASL: Relax the alphanumeric restriction on _CID strings. These strings 7315are 7316"bus-specific" per the ACPI specification, and therefore any characters 7317are 7318acceptable. The only checks that can be performed are for a null string 7319and 7320perhaps for a leading asterisk. ACPICA BZ 886. 7321 7322iASL: Fixed a problem where a syntax error that caused a premature EOF 7323condition on the source file emitted a very confusing error message. The 7324premature EOF is now detected correctly. ACPICA BZ 891. 7325 7326Disassembler: Decode the AccessSize within a Generic Address Structure 7327(byte 7328access, word access, etc.) Note, this field does not allow arbitrary bit 7329access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 7330 7331New: AcpiNames utility - Example namespace dump utility. Shows an example 7332of 7333ACPICA configuration for a minimal namespace dump utility. Uses table and 7334namespace managers, but no AML interpreter. Does not add any 7335functionality 7336over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 7337partition and configure ACPICA. ACPICA BZ 883. 7338 7339AML Debugger: Increased the debugger buffer size for method return 7340objects. 7341Was 4K, increased to 16K. Also enhanced error messages for debugger 7342method 7343execution, including the buffer overflow case. 7344 7345---------------------------------------- 734613 October 2010. Summary of changes for version 20101013: 7347 73481) ACPI CA Core Subsystem: 7349 7350Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 7351now 7352clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 7353HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 7354 7355Changed the type of the predefined namespace object _TZ from ThermalZone 7356to 7357Device. This was found to be confusing to the host software that 7358processes 7359the various thermal zones, since _TZ is not really a ThermalZone. 7360However, 7361a 7362Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 7363Zhang. 7364 7365Added Windows Vista SP2 to the list of supported _OSI strings. The actual 7366string is "Windows 2006 SP2". 7367 7368Eliminated duplicate code in AcpiUtExecute* functions. Now that the 7369nsrepair 7370code automatically repairs _HID-related strings, this type of code is no 7371longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 7372878. 7373 7374Example Code and Data Size: These are the sizes for the OS-independent 7375acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7376debug version of the code includes the debug output trace mechanism and 7377has a 7378much larger code and data size. 7379 7380 Previous Release: 7381 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7382 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7383 Current Release: 7384 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7385 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7386 73872) iASL Compiler/Disassembler and Tools: 7388 7389iASL: Implemented additional compile-time validation for _HID strings. 7390The 7391non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 7392length 7393of 7394the string must be exactly seven or eight characters. For both _HID and 7395_CID 7396strings, all characters must be alphanumeric. ACPICA BZ 874. 7397 7398iASL: Allow certain "null" resource descriptors. Some BIOS code creates 7399descriptors that are mostly or all zeros, with the expectation that they 7400will 7401be filled in at runtime. iASL now allows this as long as there is a 7402"resource 7403tag" (name) associated with the descriptor, which gives the ASL a handle 7404needed to modify the descriptor. ACPICA BZ 873. 7405 7406Added single-thread support to the generic Unix application OSL. 7407Primarily 7408for iASL support, this change removes the use of semaphores in the 7409single- 7410threaded ACPICA tools/applications - increasing performance. The 7411_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 7412option. ACPICA BZ 879. 7413 7414AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 7415support 7416for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 7417 7418iASL: Moved all compiler messages to a new file, aslmessages.h. 7419 7420---------------------------------------- 742115 September 2010. Summary of changes for version 20100915: 7422 74231) ACPI CA Core Subsystem: 7424 7425Removed the AcpiOsDerivePciId OSL interface. The various host 7426implementations 7427of this function were not OS-dependent and are now obsolete and can be 7428removed from all host OSLs. This function has been replaced by 7429AcpiHwDerivePciId, which is now part of the ACPICA core code. 7430AcpiHwDerivePciId has been implemented without recursion. Adds one new 7431module, hwpci.c. ACPICA BZ 857. 7432 7433Implemented a dynamic repair for _HID and _CID strings. The following 7434problems are now repaired at runtime: 1) Remove a leading asterisk in the 7435string, and 2) the entire string is uppercased. Both repairs are in 7436accordance with the ACPI specification and will simplify host driver 7437code. 7438ACPICA BZ 871. 7439 7440The ACPI_THREAD_ID type is no longer configurable, internally it is now 7441always UINT64. This simplifies the ACPICA code, especially any printf 7442output. 7443UINT64 is the only common data type for all thread_id types across all 7444operating systems. It is now up to the host OSL to cast the native 7445thread_id 7446type to UINT64 before returning the value to ACPICA (via 7447AcpiOsGetThreadId). 7448Lin Ming, Bob Moore. 7449 7450Added the ACPI_INLINE type to enhance the ACPICA configuration. The 7451"inline" 7452keyword is not standard across compilers, and this type allows inline to 7453be 7454configured on a per-compiler basis. Lin Ming. 7455 7456Made the system global AcpiGbl_SystemAwakeAndRunning publicly 7457available. 7458Added an extern for this boolean in acpixf.h. Some hosts utilize this 7459value 7460during suspend/restore operations. ACPICA BZ 869. 7461 7462All code that implements error/warning messages with the "ACPI:" prefix 7463has 7464been moved to a new module, utxferror.c. 7465 7466The UINT64_OVERLAY was moved to utmath.c, which is the only module where 7467it 7468is used. ACPICA BZ 829. Lin Ming, Bob Moore. 7469 7470Example Code and Data Size: These are the sizes for the OS-independent 7471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7472debug version of the code includes the debug output trace mechanism and 7473has a 7474much larger code and data size. 7475 7476 Previous Release: 7477 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7478 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7479 Current Release: 7480 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7481 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7482 74832) iASL Compiler/Disassembler and Tools: 7484 7485iASL/Disassembler: Write ACPI errors to stderr instead of the output 7486file. 7487This keeps the output files free of random error messages that may 7488originate 7489from within the namespace/interpreter code. Used this opportunity to 7490merge 7491all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 7492866. Lin Ming, Bob Moore. 7493 7494Tools: update some printfs for ansi warnings on size_t. Handle width 7495change 7496of size_t on 32-bit versus 64-bit generations. Lin Ming. 7497 7498---------------------------------------- 749906 August 2010. Summary of changes for version 20100806: 7500 75011) ACPI CA Core Subsystem: 7502 7503Designed and implemented a new host interface to the _OSI support code. 7504This 7505will allow the host to dynamically add or remove multiple _OSI strings, 7506as 7507well as install an optional handler that is called for each _OSI 7508invocation. 7509Also added a new AML debugger command, 'osi' to display and modify the 7510global 7511_OSI string table, and test support in the AcpiExec utility. See the 7512ACPICA 7513reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 7514New Functions: 7515 AcpiInstallInterface - Add an _OSI string. 7516 AcpiRemoveInterface - Delete an _OSI string. 7517 AcpiInstallInterfaceHandler - Install optional _OSI handler. 7518Obsolete Functions: 7519 AcpiOsValidateInterface - no longer used. 7520New Files: 7521 source/components/utilities/utosi.c 7522 7523Re-introduced the support to enable multi-byte transfers for Embedded 7524Controller (EC) operation regions. A reported problem was found to be a 7525bug 7526in the host OS, not in the multi-byte support. Previously, the maximum 7527data 7528size passed to the EC operation region handler was a single byte. There 7529are 7530often EC Fields larger than one byte that need to be transferred, and it 7531is 7532useful for the EC driver to lock these as a single transaction. This 7533change 7534enables single transfers larger than 8 bits. This effectively changes the 7535access to the EC space from ByteAcc to AnyAcc, and will probably require 7536changes to the host OS Embedded Controller driver to enable 16/32/64/256- 7537bit 7538transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 7539 7540Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 7541prototype in acpiosxf.h had the output value pointer as a (void *). 7542It should be a (UINT64 *). This may affect some host OSL code. 7543 7544Fixed a couple problems with the recently modified Linux makefiles for 7545iASL 7546and AcpiExec. These new makefiles place the generated object files in the 7547local directory so that there can be no collisions between the files that 7548are 7549shared between them that are compiled with different options. 7550 7551Example Code and Data Size: These are the sizes for the OS-independent 7552acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7553debug version of the code includes the debug output trace mechanism and 7554has a 7555much larger code and data size. 7556 7557 Previous Release: 7558 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7559 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7560 Current Release: 7561 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7562 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7563 75642) iASL Compiler/Disassembler and Tools: 7565 7566iASL/Disassembler: Added a new option (-da, "disassemble all") to load 7567the 7568namespace from and disassemble an entire group of AML files. Useful for 7569loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 7570and 7571disassembling with one simple command. ACPICA BZ 865. Lin Ming. 7572 7573iASL: Allow multiple invocations of -e option. This change allows 7574multiple 7575uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 7576834. 7577Lin Ming. 7578 7579---------------------------------------- 758002 July 2010. Summary of changes for version 20100702: 7581 75821) ACPI CA Core Subsystem: 7583 7584Implemented several updates to the recently added GPE reference count 7585support. The model for "wake" GPEs is changing to give the host OS 7586complete 7587control of these GPEs. Eventually, the ACPICA core will not execute any 7588_PRW 7589methods, since the host already must execute them. Also, additional 7590changes 7591were made to help ensure that the reference counts are kept in proper 7592synchronization with reality. Rafael J. Wysocki. 7593 75941) Ensure that GPEs are not enabled twice during initialization. 75952) Ensure that GPE enable masks stay in sync with the reference count. 75963) Do not inadvertently enable GPEs when writing GPE registers. 75974) Remove the internal wake reference counter and add new AcpiGpeWakeup 7598interface. This interface will set or clear individual GPEs for wakeup. 75995) Remove GpeType argument from AcpiEnable and AcpiDisable. These 7600interfaces 7601are now used for "runtime" GPEs only. 7602 7603Changed the behavior of the GPE install/remove handler interfaces. The 7604GPE 7605is 7606no longer disabled during this process, as it was found to cause problems 7607on 7608some machines. Rafael J. Wysocki. 7609 7610Reverted a change introduced in version 20100528 to enable Embedded 7611Controller multi-byte transfers. This change was found to cause problems 7612with 7613Index Fields and possibly Bank Fields. It will be reintroduced when these 7614problems have been resolved. 7615 7616Fixed a problem with references to Alias objects within Package Objects. 7617A 7618reference to an Alias within the definition of a Package was not always 7619resolved properly. Aliases to objects like Processors, Thermal zones, 7620etc. 7621were resolved to the actual object instead of a reference to the object 7622as 7623it 7624should be. Package objects are only allowed to contain integer, string, 7625buffer, package, and reference objects. Redhat bugzilla 608648. 7626 7627Example Code and Data Size: These are the sizes for the OS-independent 7628acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7629debug version of the code includes the debug output trace mechanism and 7630has a 7631much larger code and data size. 7632 7633 Previous Release: 7634 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7635 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7636 Current Release: 7637 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7638 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7639 76402) iASL Compiler/Disassembler and Tools: 7641 7642iASL: Implemented a new compiler subsystem to allow definition and 7643compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 7644These 7645are called "ACPI Data Tables", and the new compiler is the "Data Table 7646Compiler". This compiler is intended to simplify the existing error-prone 7647process of creating these tables for the BIOS, as well as allowing the 7648disassembly, modification, recompilation, and override of existing ACPI 7649data 7650tables. See the iASL User Guide for detailed information. 7651 7652iASL: Implemented a new Template Generator option in support of the new 7653Data 7654Table Compiler. This option will create examples of all known ACPI tables 7655that can be used as the basis for table development. See the iASL 7656documentation and the -T option. 7657 7658Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 7659Descriptor Table). 7660 7661Updated the Linux makefiles for iASL and AcpiExec to place the generated 7662object files in the local directory so that there can be no collisions 7663between the shared files between them that are generated with different 7664options. 7665 7666Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 7667Use 7668the #define __APPLE__ to enable this support. 7669 7670---------------------------------------- 767128 May 2010. Summary of changes for version 20100528: 7672 7673Note: The ACPI 4.0a specification was released on April 5, 2010 and is 7674available at www.acpi.info. This is primarily an errata release. 7675 76761) ACPI CA Core Subsystem: 7677 7678Undefined ACPI tables: We are looking for the definitions for the 7679following 7680ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 7681 7682Implemented support to enable multi-byte transfers for Embedded 7683Controller 7684(EC) operation regions. Previously, the maximum data size passed to the 7685EC 7686operation region handler was a single byte. There are often EC Fields 7687larger 7688than one byte that need to be transferred, and it is useful for the EC 7689driver 7690to lock these as a single transaction. This change enables single 7691transfers 7692larger than 8 bits. This effectively changes the access to the EC space 7693from 7694ByteAcc to AnyAcc, and will probably require changes to the host OS 7695Embedded 7696Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 7697bit 7698transfers. Alexey Starikovskiy, Lin Ming 7699 7700Implemented a performance enhancement for namespace search and access. 7701This 7702change enhances the performance of namespace searches and walks by adding 7703a 7704backpointer to the parent in each namespace node. On large namespaces, 7705this 7706change can improve overall ACPI performance by up to 9X. Adding a pointer 7707to 7708each namespace node increases the overall size of the internal namespace 7709by 7710about 5%, since each namespace entry usually consists of both a namespace 7711node and an ACPI operand object. However, this is the first growth of the 7712namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 7713 7714Implemented a performance optimization that reduces the number of 7715namespace 7716walks. On control method exit, only walk the namespace if the method is 7717known 7718to have created namespace objects outside of its local scope. Previously, 7719the 7720entire namespace was traversed on each control method exit. This change 7721can 7722improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 7723Moore. 7724 7725Added support to truncate I/O addresses to 16 bits for Windows 7726compatibility. 7727Some ASL code has been seen in the field that inadvertently has bits set 7728above bit 15. This feature is optional and is enabled if the BIOS 7729requests 7730any Windows OSI strings. It can also be enabled by the host OS. Matthew 7731Garrett, Bob Moore. 7732 7733Added support to limit the maximum time for the ASL Sleep() operator. To 7734prevent accidental deep sleeps, limit the maximum time that Sleep() will 7735actually sleep. Configurable, the default maximum is two seconds. ACPICA 7736bugzilla 854. 7737 7738Added run-time validation support for the _WDG and_WED Microsoft 7739predefined 7740methods. These objects are defined by "Windows Instrumentation", and are 7741not 7742part of the ACPI spec. ACPICA BZ 860. 7743 7744Expanded all statistic counters used during namespace and device 7745initialization from 16 to 32 bits in order to support very large 7746namespaces. 7747 7748Replaced all instances of %d in printf format specifiers with %u since 7749nearly 7750all integers in ACPICA are unsigned. 7751 7752Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 7753returned 7754as AE_NO_HANDLER. 7755 7756Example Code and Data Size: These are the sizes for the OS-independent 7757acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7758debug version of the code includes the debug output trace mechanism and 7759has a 7760much larger code and data size. 7761 7762 Previous Release: 7763 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7764 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7765 Current Release: 7766 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7767 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7768 77692) iASL Compiler/Disassembler and Tools: 7770 7771iASL: Added compiler support for the _WDG and_WED Microsoft predefined 7772methods. These objects are defined by "Windows Instrumentation", and are 7773not 7774part of the ACPI spec. ACPICA BZ 860. 7775 7776AcpiExec: added option to disable the memory tracking mechanism. The -dt 7777option will disable the tracking mechanism, which improves performance 7778considerably. 7779 7780AcpiExec: Restructured the command line options into -d (disable) and -e 7781(enable) options. 7782 7783---------------------------------------- 778428 April 2010. Summary of changes for version 20100428: 7785 77861) ACPI CA Core Subsystem: 7787 7788Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 7789including FADT-based and GPE Block Devices, execute any _PRW methods in 7790the 7791new table, and process any _Lxx/_Exx GPE methods in the new table. Any 7792runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 7793immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 7794Devices. Provides compatibility with other ACPI implementations. Two new 7795files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 7796Moore. 7797 7798Fixed a regression introduced in version 20100331 within the table 7799manager 7800where initial table loading could fail. This was introduced in the fix 7801for 7802AcpiReallocateRootTable. Also, renamed some of fields in the table 7803manager 7804data structures to clarify their meaning and use. 7805 7806Fixed a possible allocation overrun during internal object copy in 7807AcpiUtCopySimpleObject. The original code did not correctly handle the 7808case 7809where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 7810847. 7811 7812Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 7813possible access beyond end-of-allocation. Also, now fully validate 7814descriptor 7815(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 7816 7817Example Code and Data Size: These are the sizes for the OS-independent 7818acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7819debug version of the code includes the debug output trace mechanism and 7820has a 7821much larger code and data size. 7822 7823 Previous Release: 7824 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7825 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7826 Current Release: 7827 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7828 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7829 78302) iASL Compiler/Disassembler and Tools: 7831 7832iASL: Implemented Min/Max/Len/Gran validation for address resource 7833descriptors. This change implements validation for the address fields 7834that 7835are common to all address-type resource descriptors. These checks are 7836implemented: Checks for valid Min/Max, length within the Min/Max window, 7837valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 7838per 7839table 6-40 in the ACPI 4.0a specification. Also split the large 7840aslrestype1.c 7841and aslrestype2.c files into five new files. ACPICA BZ 840. 7842 7843iASL: Added support for the _Wxx predefined names. This support was 7844missing 7845and these names were not recognized by the compiler as valid predefined 7846names. ACPICA BZ 851. 7847 7848iASL: Added an error for all predefined names that are defined to return 7849no 7850value and thus must be implemented as Control Methods. These include all 7851of 7852the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 7853names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 7854 7855iASL: Implemented the -ts option to emit hex AML data in ASL format, as 7856an 7857ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 7858be 7859dynamically loaded via the Load() operator. Also cleaned up output for 7860the 7861- 7862ta and -tc options. ACPICA BZ 853. 7863 7864Tests: Added a new file with examples of extended iASL error checking. 7865Demonstrates the advanced error checking ability of the iASL compiler. 7866Available at tests/misc/badcode.asl. 7867 7868---------------------------------------- 786931 March 2010. Summary of changes for version 20100331: 7870 78711) ACPI CA Core Subsystem: 7872 7873Completed a major update for the GPE support in order to improve support 7874for 7875shared GPEs and to simplify both host OS and ACPICA code. Added a 7876reference 7877count mechanism to support shared GPEs that require multiple device 7878drivers. 7879Several external interfaces have changed. One external interface has been 7880removed. One new external interface was added. Most of the GPE external 7881interfaces now use the GPE spinlock instead of the events mutex (and the 7882Flags parameter for many GPE interfaces has been removed.) See the 7883updated 7884ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 7885Rafael 7886Wysocki. ACPICA BZ 831. 7887 7888Changed: 7889 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 7890Removed: 7891 AcpiSetGpeType 7892New: 7893 AcpiSetGpe 7894 7895Implemented write support for DataTable operation regions. These regions 7896are 7897defined via the DataTableRegion() operator. Previously, only read support 7898was 7899implemented. The ACPI specification allows DataTableRegions to be 7900read/write, 7901however. 7902 7903Implemented a new subsystem option to force a copy of the DSDT to local 7904memory. Optionally copy the entire DSDT to local memory (instead of 7905simply 7906mapping it.) There are some (albeit very rare) BIOSs that corrupt or 7907replace 7908the original DSDT, creating the need for this option. Default is FALSE, 7909do 7910not copy the DSDT. 7911 7912Implemented detection of a corrupted or replaced DSDT. This change adds 7913support to detect a DSDT that has been corrupted and/or replaced from 7914outside 7915the OS (by firmware). This is typically catastrophic for the system, but 7916has 7917been seen on some machines. Once this problem has been detected, the DSDT 7918copy option can be enabled via system configuration. Lin Ming, Bob Moore. 7919 7920Fixed two problems with AcpiReallocateRootTable during the root table 7921copy. 7922When copying the root table to the new allocation, the length used was 7923incorrect. The new size was used instead of the current table size, 7924meaning 7925too much data was copied. Also, the count of available slots for ACPI 7926tables 7927was not set correctly. Alexey Starikovskiy, Bob Moore. 7928 7929Example Code and Data Size: These are the sizes for the OS-independent 7930acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7931debug version of the code includes the debug output trace mechanism and 7932has a 7933much larger code and data size. 7934 7935 Previous Release: 7936 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7937 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7938 Current Release: 7939 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7940 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7941 79422) iASL Compiler/Disassembler and Tools: 7943 7944iASL: Implement limited typechecking for values returned from predefined 7945control methods. The type of any returned static (unnamed) object is now 7946validated. For example, Return(1). ACPICA BZ 786. 7947 7948iASL: Fixed a predefined name object verification regression. Fixes a 7949problem 7950introduced in version 20100304. An error is incorrectly generated if a 7951predefined name is declared as a static named object with a value defined 7952using the keywords "Zero", "One", or "Ones". Lin Ming. 7953 7954iASL: Added Windows 7 support for the -g option (get local ACPI tables) 7955by 7956reducing the requested registry access rights. ACPICA BZ 842. 7957 7958Disassembler: fixed a possible fault when generating External() 7959statements. 7960Introduced in commit ae7d6fd: Properly handle externals with parent- 7961prefix 7962(carat). Fixes a string length allocation calculation. Lin Ming. 7963 7964---------------------------------------- 796504 March 2010. Summary of changes for version 20100304: 7966 79671) ACPI CA Core Subsystem: 7968 7969Fixed a possible problem with the AML Mutex handling function 7970AcpiExReleaseMutex where the function could fault under the very rare 7971condition when the interpreter has blocked, the interpreter lock is 7972released, 7973the interpreter is then reentered via the same thread, and attempts to 7974acquire an AML mutex that was previously acquired. FreeBSD report 140979. 7975Lin 7976Ming. 7977 7978Implemented additional configuration support for the AML "Debug Object". 7979Output from the debug object can now be enabled via a global variable, 7980AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 7981debugging. 7982This debug output is now available in the release version of ACPICA 7983instead 7984of just the debug version. Also, the entire debug output module can now 7985be 7986configured out of the ACPICA build if desired. One new file added, 7987executer/exdebug.c. Lin Ming, Bob Moore. 7988 7989Added header support for the ACPI MCHI table (Management Controller Host 7990Interface Table). This table was added in ACPI 4.0, but the defining 7991document 7992has only recently become available. 7993 7994Standardized output of integer values for ACPICA warnings/errors. Always 7995use 79960x prefix for hex output, always use %u for unsigned integer decimal 7997output. 7998Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 7999400 8000invocations.) These invocations were converted from the original 8001ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 8002 8003Example Code and Data Size: These are the sizes for the OS-independent 8004acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8005debug version of the code includes the debug output trace mechanism and 8006has a 8007much larger code and data size. 8008 8009 Previous Release: 8010 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8011 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8012 Current Release: 8013 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8014 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8015 80162) iASL Compiler/Disassembler and Tools: 8017 8018iASL: Implemented typechecking support for static (non-control method) 8019predefined named objects that are declared with the Name() operator. For 8020example, the type of this object is now validated to be of type Integer: 8021Name(_BBN, 1). This change migrates the compiler to using the core 8022predefined 8023name table instead of maintaining a local version. Added a new file, 8024aslpredef.c. ACPICA BZ 832. 8025 8026Disassembler: Added support for the ACPI 4.0 MCHI table. 8027 8028---------------------------------------- 802921 January 2010. Summary of changes for version 20100121: 8030 80311) ACPI CA Core Subsystem: 8032 8033Added the 2010 copyright to all module headers and signons. This affects 8034virtually every file in the ACPICA core subsystem, the iASL compiler, the 8035tools/utilities, and the test suites. 8036 8037Implemented a change to the AcpiGetDevices interface to eliminate 8038unnecessary 8039invocations of the _STA method. In the case where a specific _HID is 8040requested, do not run _STA until a _HID match is found. This eliminates 8041potentially dozens of _STA calls during a search for a particular 8042device/HID, 8043which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 8044 8045Implemented an additional repair for predefined method return values. 8046Attempt 8047to repair unexpected NULL elements within returned Package objects. 8048Create 8049an 8050Integer of value zero, a NULL String, or a zero-length Buffer as 8051appropriate. 8052ACPICA BZ 818. Lin Ming, Bob Moore. 8053 8054Removed the obsolete ACPI_INTEGER data type. This type was introduced as 8055the 8056code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 8057(with 805864-bit AML integers). It is now obsolete and this change removes it from 8059the 8060ACPICA code base, replaced by UINT64. The original typedef has been 8061retained 8062for now for compatibility with existing device driver code. ACPICA BZ 8063824. 8064 8065Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 8066in 8067the parse tree object. 8068 8069Added additional warning options for the gcc-4 generation. Updated the 8070source 8071accordingly. This includes some code restructuring to eliminate 8072unreachable 8073code, elimination of some gotos, elimination of unused return values, 8074some 8075additional casting, and removal of redundant declarations. 8076 8077Example Code and Data Size: These are the sizes for the OS-independent 8078acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8079debug version of the code includes the debug output trace mechanism and 8080has a 8081much larger code and data size. 8082 8083 Previous Release: 8084 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8085 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8086 Current Release: 8087 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8088 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8089 80902) iASL Compiler/Disassembler and Tools: 8091 8092No functional changes for this release. 8093 8094---------------------------------------- 809514 December 2009. Summary of changes for version 20091214: 8096 80971) ACPI CA Core Subsystem: 8098 8099Enhanced automatic data type conversions for predefined name repairs. 8100This 8101change expands the automatic repairs/conversions for predefined name 8102return 8103values to make Integers, Strings, and Buffers fully interchangeable. 8104Also, 8105a 8106Buffer can be converted to a Package of Integers if necessary. The 8107nsrepair.c 8108module was completely restructured. Lin Ming, Bob Moore. 8109 8110Implemented automatic removal of null package elements during predefined 8111name 8112repairs. This change will automatically remove embedded and trailing NULL 8113package elements from returned package objects that are defined to 8114contain 8115a 8116variable number of sub-packages. The driver is then presented with a 8117package 8118with no null elements to deal with. ACPICA BZ 819. 8119 8120Implemented a repair for the predefined _FDE and _GTM names. The expected 8121return value for both names is a Buffer of 5 DWORDs. This repair fixes 8122two 8123possible problems (both seen in the field), where a package of integers 8124is 8125returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 8126Kim. 8127 8128Implemented additional module-level code support. This change will 8129properly 8130execute module-level code that is not at the root of the namespace (under 8131a 8132Device object, etc.). Now executes the code within the current scope 8133instead 8134of the root. ACPICA BZ 762. Lin Ming. 8135 8136Fixed possible mutex acquisition errors when running _REG methods. Fixes 8137a 8138problem where mutex errors can occur when running a _REG method that is 8139in 8140the same scope as a method-defined operation region or an operation 8141region 8142under a module-level IF block. This type of code is rare, so the problem 8143has 8144not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 8145 8146Fixed a possible memory leak during module-level code execution. An 8147object 8148could be leaked for each block of executed module-level code if the 8149interpreter slack mode is enabled This change deletes any implicitly 8150returned 8151object from the module-level code block. Lin Ming. 8152 8153Removed messages for successful predefined repair(s). The repair 8154mechanism 8155was considered too wordy. Now, messages are only unconditionally emitted 8156if 8157the return object cannot be repaired. Existing messages for successful 8158repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 8159827. 8160 8161Example Code and Data Size: These are the sizes for the OS-independent 8162acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8163debug version of the code includes the debug output trace mechanism and 8164has a 8165much larger code and data size. 8166 8167 Previous Release: 8168 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8169 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8170 Current Release: 8171 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8172 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8173 81742) iASL Compiler/Disassembler and Tools: 8175 8176iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 8177files 8178were no longer automatically removed at the termination of the compile. 8179 8180acpiexec: Implemented the -f option to specify default region fill value. 8181This option specifies the value used to initialize buffers that simulate 8182operation regions. Default value is zero. Useful for debugging problems 8183that 8184depend on a specific initial value for a region or field. 8185 8186---------------------------------------- 818712 November 2009. Summary of changes for version 20091112: 8188 81891) ACPI CA Core Subsystem: 8190 8191Implemented a post-order callback to AcpiWalkNamespace. The existing 8192interface only has a pre-order callback. This change adds an additional 8193parameter for a post-order callback which will be more useful for bus 8194scans. 8195ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 8196 8197Modified the behavior of the operation region memory mapping cache for 8198SystemMemory. Ensure that the memory mappings created for operation 8199regions 8200do not cross 4K page boundaries. Crossing a page boundary while mapping 8201regions can cause kernel warnings on some hosts if the pages have 8202different 8203attributes. Such regions are probably BIOS bugs, and this is the 8204workaround. 8205Linux BZ 14445. Lin Ming. 8206 8207Implemented an automatic repair for predefined methods that must return 8208sorted lists. This change will repair (by sorting) packages returned by 8209_ALR, 8210_PSS, and _TSS. Drivers can now assume that the packages are correctly 8211sorted 8212and do not contain NULL package elements. Adds one new file, 8213namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 8214 8215Fixed a possible fault during predefined name validation if a return 8216Package 8217object contains NULL elements. Also adds a warning if a NULL element is 8218followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 8219may 8220include repair or removal of all such NULL elements where possible. 8221 8222Implemented additional module-level executable AML code support. This 8223change 8224will execute module-level code that is not at the root of the namespace 8225(under a Device object, etc.) at table load time. Module-level executable 8226AML 8227code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 8228 8229Implemented a new internal function to create Integer objects. This 8230function 8231simplifies miscellaneous object creation code. ACPICA BZ 823. 8232 8233Reduced the severity of predefined repair messages, Warning to Info. 8234Since 8235the object was successfully repaired, a warning is too severe. Reduced to 8236an 8237info message for now. These messages may eventually be changed to debug- 8238only. 8239ACPICA BZ 812. 8240 8241Example Code and Data Size: These are the sizes for the OS-independent 8242acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8243debug version of the code includes the debug output trace mechanism and 8244has a 8245much larger code and data size. 8246 8247 Previous Release: 8248 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8249 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8250 Current Release: 8251 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8252 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8253 82542) iASL Compiler/Disassembler and Tools: 8255 8256iASL: Implemented Switch() with While(1) so that Break works correctly. 8257This 8258change correctly implements the Switch operator with a surrounding 8259While(1) 8260so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 8261 8262iASL: Added a message if a package initializer list is shorter than 8263package 8264length. Adds a new remark for a Package() declaration if an initializer 8265list 8266exists, but is shorter than the declared length of the package. Although 8267technically legal, this is probably a coding error and it is seen in the 8268field. ACPICA BZ 815. Lin Ming, Bob Moore. 8269 8270iASL: Fixed a problem where the compiler could fault after the maximum 8271number 8272of errors was reached (200). 8273 8274acpixtract: Fixed a possible warning for pointer cast if the compiler 8275warning 8276level set very high. 8277 8278---------------------------------------- 827913 October 2009. Summary of changes for version 20091013: 8280 82811) ACPI CA Core Subsystem: 8282 8283Fixed a problem where an Operation Region _REG method could be executed 8284more 8285than once. If a custom address space handler is installed by the host 8286before 8287the "initialize operation regions" phase of the ACPICA initialization, 8288any 8289_REG methods for that address space could be executed twice. This change 8290fixes the problem. ACPICA BZ 427. Lin Ming. 8291 8292Fixed a possible memory leak for the Scope() ASL operator. When the exact 8293invocation of "Scope(\)" is executed (change scope to root), one internal 8294operand object was leaked. Lin Ming. 8295 8296Implemented a run-time repair for the _MAT predefined method. If the _MAT 8297return value is defined as a Field object in the AML, and the field 8298size is less than or equal to the default width of an integer (32 or 829964),_MAT 8300can incorrectly return an Integer instead of a Buffer. ACPICA now 8301automatically repairs this problem. ACPICA BZ 810. 8302 8303Implemented a run-time repair for the _BIF and _BIX predefined methods. 8304The 8305"OEM Information" field is often incorrectly returned as an Integer with 8306value zero if the field is not supported by the platform. This is due to 8307an 8308ambiguity in the ACPI specification. The field should always be a string. 8309ACPICA now automatically repairs this problem by returning a NULL string 8310within the returned Package. ACPICA BZ 807. 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: 85.6K Code, 18.0K Data, 103.6K Total 8320 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8321 Current Release: 8322 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8323 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8324 83252) iASL Compiler/Disassembler and Tools: 8326 8327Disassembler: Fixed a problem where references to external symbols that 8328contained one or more parent-prefixes (carats) were not handled 8329correctly, 8330possibly causing a fault. ACPICA BZ 806. Lin Ming. 8331 8332Disassembler: Restructured the code so that all functions that handle 8333external symbols are in a single module. One new file is added, 8334common/dmextern.c. 8335 8336AML Debugger: Added a max count argument for the Batch command (which 8337executes multiple predefined methods within the namespace.) 8338 8339iASL: Updated the compiler documentation (User Reference.) Available at 8340http://www.acpica.org/documentation/. ACPICA BZ 750. 8341 8342AcpiXtract: Updated for Lint and other formatting changes. Close all open 8343files. 8344 8345---------------------------------------- 834603 September 2009. Summary of changes for version 20090903: 8347 83481) ACPI CA Core Subsystem: 8349 8350For Windows Vista compatibility, added the automatic execution of an _INI 8351method located at the namespace root (\_INI). This method is executed at 8352table load time. This support is in addition to the automatic execution 8353of 8354\_SB._INI. Lin Ming. 8355 8356Fixed a possible memory leak in the interpreter for AML package objects 8357if 8358the package initializer list is longer than the defined size of the 8359package. 8360This apparently can only happen if the BIOS changes the package size on 8361the 8362fly (seen in a _PSS object), as ASL compilers do not allow this. The 8363interpreter will truncate the package to the defined size (and issue an 8364error 8365message), but previously could leave the extra objects undeleted if they 8366were 8367pre-created during the argument processing (such is the case if the 8368package 8369consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 8370 8371Fixed a problem seen when a Buffer or String is stored to itself via ASL. 8372This has been reported in the field. Previously, ACPICA would zero out 8373the 8374buffer/string. Now, the operation is treated as a noop. Provides Windows 8375compatibility. ACPICA BZ 803. Lin Ming. 8376 8377Removed an extraneous error message for ASL constructs of the form 8378Store(LocalX,LocalX) when LocalX is uninitialized. These curious 8379statements 8380are seen in many BIOSs and are once again treated as NOOPs and no error 8381is 8382emitted when they are encountered. ACPICA BZ 785. 8383 8384Fixed an extraneous warning message if a _DSM reserved method returns a 8385Package object. _DSM can return any type of object, so validation on the 8386return type cannot be performed. ACPICA BZ 802. 8387 8388Example Code and Data Size: These are the sizes for the OS-independent 8389acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8390debug version of the code includes the debug output trace mechanism and 8391has a 8392much larger code and data size. 8393 8394 Previous Release: 8395 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8396 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8397 Current Release: 8398 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8399 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8400 84012) iASL Compiler/Disassembler and Tools: 8402 8403iASL: Fixed a problem with the use of the Alias operator and Resource 8404Templates. The correct alias is now constructed and no error is emitted. 8405ACPICA BZ 738. 8406 8407iASL: Implemented the -I option to specify additional search directories 8408for 8409include files. Allows multiple additional search paths for include files. 8410Directories are searched in the order specified on the command line 8411(after 8412the local directory is searched.) ACPICA BZ 800. 8413 8414iASL: Fixed a problem where the full pathname for include files was not 8415emitted for warnings/errors. This caused the IDE support to not work 8416properly. ACPICA BZ 765. 8417 8418iASL: Implemented the -@ option to specify a Windows-style response file 8419containing additional command line options. ACPICA BZ 801. 8420 8421AcpiExec: Added support to load multiple AML files simultaneously (such 8422as 8423a 8424DSDT and multiple SSDTs). Also added support for wildcards within the AML 8425pathname. These features allow all machine tables to be easily loaded and 8426debugged together. ACPICA BZ 804. 8427 8428Disassembler: Added missing support for disassembly of HEST table Error 8429Bank 8430subtables. 8431 8432---------------------------------------- 843330 July 2009. Summary of changes for version 20090730: 8434 8435The ACPI 4.0 implementation for ACPICA is complete with this release. 8436 84371) ACPI CA Core Subsystem: 8438 8439ACPI 4.0: Added header file support for all new and changed ACPI tables. 8440Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 8441new 8442for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 8443BERT, 8444EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 8445There 8446have been some ACPI 4.0 changes to other existing tables. Split the large 8447actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 8448 8449ACPI 4.0: Implemented predefined name validation for all new names. There 8450are 845131 new names in ACPI 4.0. The predefined validation module was split into 8452two 8453files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 8454 8455Implemented support for so-called "module-level executable code". This is 8456executable AML code that exists outside of any control method and is 8457intended 8458to be executed at table load time. Although illegal since ACPI 2.0, this 8459type 8460of code still exists and is apparently still being created. Blocks of 8461this 8462code are now detected and executed as intended. Currently, the code 8463blocks 8464must exist under either an If, Else, or While construct; these are the 8465typical cases seen in the field. ACPICA BZ 762. Lin Ming. 8466 8467Implemented an automatic dynamic repair for predefined names that return 8468nested Package objects. This applies to predefined names that are defined 8469to 8470return a variable-length Package of sub-packages. If the number of sub- 8471packages is one, BIOS code is occasionally seen that creates a simple 8472single 8473package with no sub-packages. This code attempts to fix the problem by 8474wrapping a new package object around the existing package. These methods 8475can 8476be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 8477BZ 8478790. 8479 8480Fixed a regression introduced in 20090625 for the AcpiGetDevices 8481interface. 8482The _HID/_CID matching was broken and no longer matched IDs correctly. 8483ACPICA 8484BZ 793. 8485 8486Fixed a problem with AcpiReset where the reset would silently fail if the 8487register was one of the protected I/O ports. AcpiReset now bypasses the 8488port 8489validation mechanism. This may eventually be driven into the 8490AcpiRead/Write 8491interfaces. 8492 8493Fixed a regression related to the recent update of the AcpiRead/Write 8494interfaces. A sleep/suspend could fail if the optional PM2 Control 8495register 8496does not exist during an attempt to write the Bus Master Arbitration bit. 8497(However, some hosts already delete the code that writes this bit, and 8498the 8499code may in fact be obsolete at this date.) ACPICA BZ 799. 8500 8501Fixed a problem where AcpiTerminate could fault if inadvertently called 8502twice 8503in succession. ACPICA BZ 795. 8504 8505Example Code and Data Size: These are the sizes for the OS-independent 8506acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8507debug version of the code includes the debug output trace mechanism and 8508has a 8509much larger code and data size. 8510 8511 Previous Release: 8512 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8513 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8514 Current Release: 8515 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8516 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8517 85182) iASL Compiler/Disassembler and Tools: 8519 8520ACPI 4.0: Implemented disassembler support for all new ACPI tables and 8521changes to existing tables. ACPICA BZ 775. 8522 8523---------------------------------------- 852425 June 2009. Summary of changes for version 20090625: 8525 8526The ACPI 4.0 Specification was released on June 16 and is available at 8527www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 8528continue for the next few releases. 8529 85301) ACPI CA Core Subsystem: 8531 8532ACPI 4.0: Implemented interpreter support for the IPMI operation region 8533address space. Includes support for bi-directional data buffers and an 8534IPMI 8535address space handler (to be installed by an IPMI device driver.) ACPICA 8536BZ 8537773. Lin Ming. 8538 8539ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 8540Includes 8541support in both the header files and the disassembler. 8542 8543Completed a major update for the AcpiGetObjectInfo external interface. 8544Changes include: 8545 - Support for variable, unlimited length HID, UID, and CID strings. 8546 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 8547etc.) 8548 - Call the _SxW power methods on behalf of a device object. 8549 - Determine if a device is a PCI root bridge. 8550 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 8551These changes will require an update to all callers of this interface. 8552See 8553the updated ACPICA Programmer Reference for details. One new source file 8554has 8555been added - utilities/utids.c. ACPICA BZ 368, 780. 8556 8557Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 8558transfers. The Value parameter has been extended from 32 bits to 64 bits 8559in 8560order to support new ACPI 4.0 tables. These changes will require an 8561update 8562to 8563all callers of these interfaces. See the ACPICA Programmer Reference for 8564details. ACPICA BZ 768. 8565 8566Fixed several problems with AcpiAttachData. The handler was not invoked 8567when 8568the host node was deleted. The data sub-object was not automatically 8569deleted 8570when the host node was deleted. The interface to the handler had an 8571unused 8572parameter, this was removed. ACPICA BZ 778. 8573 8574Enhanced the function that dumps ACPI table headers. All non-printable 8575characters in the string fields are now replaced with '?' (Signature, 8576OemId, 8577OemTableId, and CompilerId.) ACPI tables with non-printable characters in 8578these fields are occasionally seen in the field. ACPICA BZ 788. 8579 8580Fixed a problem with predefined method repair code where the code that 8581attempts to repair/convert an object of incorrect type is only executed 8582on 8583the first time the predefined method is called. The mechanism that 8584disables 8585warnings on subsequent calls was interfering with the repair mechanism. 8586ACPICA BZ 781. 8587 8588Fixed a possible memory leak in the predefined validation/repair code 8589when 8590a 8591buffer is automatically converted to an expected string object. 8592 8593Removed obsolete 16-bit files from the distribution and from the current 8594git 8595tree head. ACPICA BZ 776. 8596 8597Example Code and Data Size: These are the sizes for the OS-independent 8598acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8599debug version of the code includes the debug output trace mechanism and 8600has a 8601much larger code and data size. 8602 8603 Previous Release: 8604 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8605 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8606 Current Release: 8607 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8608 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8609 86102) iASL Compiler/Disassembler and Tools: 8611 8612ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 8613operation region keyword. ACPICA BZ 771, 772. Lin Ming. 8614 8615ACPI 4.0: iASL - implemented compile-time validation support for all new 8616predefined names and control methods (31 total). ACPICA BZ 769. 8617 8618---------------------------------------- 861921 May 2009. Summary of changes for version 20090521: 8620 86211) ACPI CA Core Subsystem: 8622 8623Disabled the preservation of the SCI enable bit in the PM1 control 8624register. 8625The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 8626to 8627be 8628a "preserved" bit - "OSPM always preserves this bit position", section 86294.7.3.2.1. However, some machines fail if this bit is in fact preserved 8630because the bit needs to be explicitly set by the OS as a workaround. No 8631machines fail if the bit is not preserved. Therefore, ACPICA no longer 8632attempts to preserve this bit. 8633 8634Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 8635incorrectly formed _PRT package could cause a fault. Added validation to 8636ensure that each package element is actually a sub-package. 8637 8638Implemented a new interface to install or override a single control 8639method, 8640AcpiInstallMethod. This interface is useful when debugging in order to 8641repair 8642an existing method or to install a missing method without having to 8643override 8644the entire ACPI table. See the ACPICA Programmer Reference for use and 8645examples. Lin Ming, Bob Moore. 8646 8647Fixed several reference count issues with the DdbHandle object that is 8648created from a Load or LoadTable operator. Prevent premature deletion of 8649the 8650object. Also, mark the object as invalid once the table has been 8651unloaded. 8652This is needed because the handle itself may not be deleted after the 8653table 8654unload, depending on whether it has been stored in a named object by the 8655caller. Lin Ming. 8656 8657Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 8658mutexes of the same sync level are acquired but then not released in 8659strict 8660opposite order, the internally maintained Current Sync Level becomes 8661confused 8662and can cause subsequent execution errors. ACPICA BZ 471. 8663 8664Changed the allowable release order for ASL mutex objects. The ACPI 4.0 8665specification has been changed to make the SyncLevel for mutex objects 8666more 8667useful. When releasing a mutex, the SyncLevel of the mutex must now be 8668the 8669same as the current sync level. This makes more sense than the previous 8670rule 8671(SyncLevel less than or equal). This change updates the code to match the 8672specification. 8673 8674Fixed a problem with the local version of the AcpiOsPurgeCache function. 8675The 8676(local) cache must be locked during all cache object deletions. Andrew 8677Baumann. 8678 8679Updated the Load operator to use operation region interfaces. This 8680replaces 8681direct memory mapping with region access calls. Now, all region accesses 8682go 8683through the installed region handler as they should. 8684 8685Simplified and optimized the NsGetNextNode function. Reduced parameter 8686count 8687and reduced code for this frequently used function. 8688 8689Example Code and Data Size: These are the sizes for the OS-independent 8690acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8691debug version of the code includes the debug output trace mechanism and 8692has a 8693much larger code and data size. 8694 8695 Previous Release: 8696 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8697 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8698 Current Release: 8699 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8700 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8701 87022) iASL Compiler/Disassembler and Tools: 8703 8704Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 8705problems 8706with sub-table disassembly and handling invalid sub-tables. Attempt 8707recovery 8708after an invalid sub-table ID. 8709 8710---------------------------------------- 871122 April 2009. Summary of changes for version 20090422: 8712 87131) ACPI CA Core Subsystem: 8714 8715Fixed a compatibility issue with the recently released I/O port 8716protection 8717mechanism. For windows compatibility, 1) On a port protection violation, 8718simply ignore the request and do not return an exception (allow the 8719control 8720method to continue execution.) 2) If only part of the request overlaps a 8721protected port, read/write the individual ports that are not protected. 8722Linux 8723BZ 13036. Lin Ming 8724 8725Enhanced the execution of the ASL/AML BreakPoint operator so that it 8726actually 8727breaks into the AML debugger if the debugger is present. This matches the 8728ACPI-defined behavior. 8729 8730Fixed several possible warnings related to the use of the configurable 8731ACPI_THREAD_ID. This type can now be configured as either an integer or a 8732pointer with no warnings. Also fixes several warnings in printf-like 8733statements for the 64-bit build when the type is configured as a pointer. 8734ACPICA BZ 766, 767. 8735 8736Fixed a number of possible warnings when compiling with gcc 4+ (depending 8737on 8738warning options.) Examples include printf formats, aliasing, unused 8739globals, 8740missing prototypes, missing switch default statements, use of non-ANSI 8741library functions, use of non-ANSI constructs. See generate/unix/Makefile 8742for 8743a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 8744 8745Example Code and Data Size: These are the sizes for the OS-independent 8746acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8747debug version of the code includes the debug output trace mechanism and 8748has a 8749much larger code and data size. 8750 8751 Previous Release: 8752 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8753 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8754 Current Release: 8755 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8756 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8757 87582) iASL Compiler/Disassembler and Tools: 8759 8760iASL: Fixed a generation warning from Bison 2.3 and fixed several 8761warnings 8762on 8763the 64-bit build. 8764 8765iASL: Fixed a problem where the Unix/Linux versions of the compiler could 8766not 8767correctly digest Windows/DOS formatted files (with CR/LF). 8768 8769iASL: Added a new option for "quiet mode" (-va) that produces only the 8770compilation summary, not individual errors and warnings. Useful for large 8771batch compilations. 8772 8773AcpiExec: Implemented a new option (-z) to enable a forced 8774semaphore/mutex 8775timeout that can be used to detect hang conditions during execution of 8776AML 8777code (includes both internal semaphores and AML-defined mutexes and 8778events.) 8779 8780Added new makefiles for the generation of acpica in a generic unix-like 8781environment. These makefiles are intended to generate the acpica tools 8782and 8783utilities from the original acpica git source tree structure. 8784 8785Test Suites: Updated and cleaned up the documentation files. Updated the 8786copyrights to 2009, affecting all source files. Use the new version of 8787iASL 8788with quiet mode. Increased the number of available semaphores in the 8789Windows 8790OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 8791added 8792an alternate implementation of the semaphore timeout to allow aslts to 8793execute fully on Cygwin. 8794 8795---------------------------------------- 879620 March 2009. Summary of changes for version 20090320: 8797 87981) ACPI CA Core Subsystem: 8799 8800Fixed a possible race condition between AcpiWalkNamespace and dynamic 8801table 8802unloads. Added a reader/writer locking mechanism to allow multiple 8803concurrent 8804namespace walks (readers), but block a dynamic table unload until it can 8805gain 8806exclusive write access to the namespace. This fixes a problem where a 8807table 8808unload could (possibly catastrophically) delete the portion of the 8809namespace 8810that is currently being examined by a walk. Adds a new file, utlock.c, 8811that 8812implements the reader/writer lock mechanism. ACPICA BZ 749. 8813 8814Fixed a regression introduced in version 20090220 where a change to the 8815FADT 8816handling could cause the ACPICA subsystem to access non-existent I/O 8817ports. 8818 8819Modified the handling of FADT register and table (FACS/DSDT) addresses. 8820The 8821FADT can contain both 32-bit and 64-bit versions of these addresses. 8822Previously, the 64-bit versions were favored, meaning that if both 32 and 882364 8824versions were valid, but not equal, the 64-bit version was used. This was 8825found to cause some machines to fail. Now, in this case, the 32-bit 8826version 8827is used instead. This now matches the Windows behavior. 8828 8829Implemented a new mechanism to protect certain I/O ports. Provides 8830Microsoft 8831compatibility and protects the standard PC I/O ports from access via AML 8832code. Adds a new file, hwvalid.c 8833 8834Fixed a possible extraneous warning message from the FADT support. The 8835message warns of a 32/64 length mismatch between the legacy and GAS 8836definitions for a register. 8837 8838Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 8839is 8840made obsolete by the port protection mechanism above. It was previously 8841used 8842to validate the entire address range of an operation region, which could 8843be 8844incorrect if the range included illegal ports, but fields within the 8845operation region did not actually access those ports. Validation is now 8846performed on a per-field basis instead of the entire region. 8847 8848Modified the handling of the PM1 Status Register ignored bit (bit 11.) 8849Ignored bits must be "preserved" according to the ACPI spec. Usually, 8850this 8851means a read/modify/write when writing to the register. However, for 8852status 8853registers, writing a one means clear the event. Writing a zero means 8854preserve 8855the event (do not clear.) This behavior is clarified in the ACPI 4.0 8856spec, 8857and the ACPICA code now simply always writes a zero to the ignored bit. 8858 8859Modified the handling of ignored bits for the PM1 A/B Control Registers. 8860As 8861per the ACPI specification, for the control registers, preserve 8862(read/modify/write) all bits that are defined as either reserved or 8863ignored. 8864 8865Updated the handling of write-only bits in the PM1 A/B Control Registers. 8866When reading the register, zero the write-only bits as per the ACPI spec. 8867ACPICA BZ 443. Lin Ming. 8868 8869Removed "Linux" from the list of supported _OSI strings. Linux no longer 8870wants to reply true to this request. The Windows strings are the only 8871paths 8872through the AML that are tested and known to work properly. 8873 8874 Previous Release: 8875 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8876 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8877 Current Release: 8878 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8879 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8880 88812) iASL Compiler/Disassembler and Tools: 8882 8883Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 8884and 8885aetables.c 8886 8887---------------------------------------- 888820 February 2009. Summary of changes for version 20090220: 8889 88901) ACPI CA Core Subsystem: 8891 8892Optimized the ACPI register locking. Removed locking for reads from the 8893ACPI 8894bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 8895is 8896not required when reading the single-bit registers. The 8897AcpiGetRegisterUnlocked function is no longer needed and has been 8898removed. 8899This will improve performance for reads on these registers. ACPICA BZ 8900760. 8901 8902Fixed the parameter validation for AcpiRead/Write. Now return 8903AE_BAD_PARAMETER if the input register pointer is null, and 8904AE_BAD_ADDRESS 8905if 8906the register has an address of zero. Previously, these cases simply 8907returned 8908AE_OK. For optional registers such as PM1B status/enable/control, the 8909caller 8910should check for a valid register address before calling. ACPICA BZ 748. 8911 8912Renamed the external ACPI bit register access functions. Renamed 8913AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 8914functions. The new names are AcpiReadBitRegister and 8915AcpiWriteBitRegister. 8916Also, restructured the code for these functions by simplifying the code 8917path 8918and condensing duplicate code to reduce code size. 8919 8920Added new functions to transparently handle the possibly split PM1 A/B 8921registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 8922functions 8923now handle the split registers for PM1 Status, Enable, and Control. 8924ACPICA 8925BZ 8926746. 8927 8928Added a function to handle the PM1 control registers, 8929AcpiHwWritePm1Control. 8930This function writes both of the PM1 control registers (A/B). These 8931registers 8932are different than the PM1 A/B status and enable registers in that 8933different 8934values can be written to the A/B registers. Most notably, the SLP_TYP 8935bits 8936can be different, as per the values returned from the _Sx predefined 8937methods. 8938 8939Removed an extra register write within AcpiHwClearAcpiStatus. This 8940function 8941was writing an optional PM1B status register twice. The existing call to 8942the 8943low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 8944A/B 8945register. ACPICA BZ 751. 8946 8947Split out the PM1 Status registers from the FADT. Added new globals for 8948these 8949registers (A/B), similar to the way the PM1 Enable registers are handled. 8950Instead of overloading the FADT Event Register blocks. This makes the 8951code 8952clearer and less prone to error. 8953 8954Fixed the warning message for when the platform contains too many ACPI 8955tables 8956for the default size of the global root table data structure. The 8957calculation 8958for the truncation value was incorrect. 8959 8960Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 8961obsolete macro, since it is now a simple reference to ->common.type. 8962There 8963were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 8964 8965Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 8966TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 8967simply SLEEP_TYPE. ACPICA BZ 754. 8968 8969Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 8970function is only needed on 64-bit host operating systems and is thus not 8971included for 32-bit hosts. 8972 8973Debug output: print the input and result for invocations of the _OSI 8974reserved 8975control method via the ACPI_LV_INFO debug level. Also, reduced some of 8976the 8977verbosity of this debug level. Len Brown. 8978 8979Example Code and Data Size: These are the sizes for the OS-independent 8980acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8981debug version of the code includes the debug output trace mechanism and 8982has a 8983much larger code and data size. 8984 8985 Previous Release: 8986 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8987 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8988 Current Release: 8989 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8990 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8991 89922) iASL Compiler/Disassembler and Tools: 8993 8994Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 8995various legal performance profiles. 8996 8997---------------------------------------- 899823 January 2009. Summary of changes for version 20090123: 8999 90001) ACPI CA Core Subsystem: 9001 9002Added the 2009 copyright to all module headers and signons. This affects 9003virtually every file in the ACPICA core subsystem, the iASL compiler, and 9004the tools/utilities. 9005 9006Implemented a change to allow the host to override any ACPI table, 9007including 9008dynamically loaded tables. Previously, only the DSDT could be replaced by 9009the 9010host. With this change, the AcpiOsTableOverride interface is called for 9011each 9012table found in the RSDT/XSDT during ACPICA initialization, and also 9013whenever 9014a table is dynamically loaded via the AML Load operator. 9015 9016Updated FADT flag definitions, especially the Boot Architecture flags. 9017 9018Debugger: For the Find command, automatically pad the input ACPI name 9019with 9020underscores if the name is shorter than 4 characters. This enables a 9021match 9022with the actual namespace entry which is itself padded with underscores. 9023 9024Example Code and Data Size: These are the sizes for the OS-independent 9025acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9026debug version of the code includes the debug output trace mechanism and 9027has a 9028much larger code and data size. 9029 9030 Previous Release: 9031 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9032 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9033 Current Release: 9034 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9035 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9036 90372) iASL Compiler/Disassembler and Tools: 9038 9039Fix build error under Bison-2.4. 9040 9041Disassembler: Enhanced FADT support. Added decoding of the Boot 9042Architecture 9043flags. Now decode all flags, regardless of the FADT version. Flag output 9044includes the FADT version which first defined each flag. 9045 9046The iASL -g option now dumps the RSDT to a file (in addition to the FADT 9047and 9048DSDT). Windows only. 9049 9050---------------------------------------- 905104 December 2008. Summary of changes for version 20081204: 9052 90531) ACPI CA Core Subsystem: 9054 9055The ACPICA Programmer Reference has been completely updated and revamped 9056for 9057this release. This includes updates to the external interfaces, OSL 9058interfaces, the overview sections, and the debugger reference. 9059 9060Several new ACPICA interfaces have been implemented and documented in the 9061programmer reference: 9062AcpiReset - Writes the reset value to the FADT-defined reset register. 9063AcpiDisableAllGpes - Disable all available GPEs. 9064AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 9065AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 9066AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 9067AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 9068AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 9069 9070Most of the public ACPI hardware-related interfaces have been moved to a 9071new 9072file, components/hardware/hwxface.c 9073 9074Enhanced the FADT parsing and low-level ACPI register access: The ACPI 9075register lengths within the FADT are now used, and the low level ACPI 9076register access no longer hardcodes the ACPI register lengths. Given that 9077there may be some risk in actually trusting the FADT register lengths, a 9078run- 9079time option was added to fall back to the default hardcoded lengths if 9080the 9081FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 9082option is set to true for now, and a warning is issued if a suspicious 9083FADT 9084register length is overridden with the default value. 9085 9086Fixed a reference count issue in NsRepairObject. This problem was 9087introduced 9088in version 20081031 as part of a fix to repair Buffer objects within 9089Packages. Lin Ming. 9090 9091Added semaphore support to the Linux/Unix application OS-services layer 9092(OSL). ACPICA BZ 448. Lin Ming. 9093 9094Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 9095will 9096be implemented in the OSL, or will binary semaphores be used instead. 9097 9098Example Code and Data Size: These are the sizes for the OS-independent 9099acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9100debug version of the code includes the debug output trace mechanism and 9101has a 9102much larger code and data size. 9103 9104 Previous Release: 9105 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9106 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9107 Current Release: 9108 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9109 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9110 91112) iASL Compiler/Disassembler and Tools: 9112 9113iASL: Completed the '-e' option to include additional ACPI tables in 9114order 9115to 9116aid with disassembly and External statement generation. ACPICA BZ 742. 9117Lin 9118Ming. 9119 9120iASL: Removed the "named object in while loop" error. The compiler cannot 9121determine how many times a loop will execute. ACPICA BZ 730. 9122 9123Disassembler: Implemented support for FADT revision 2 (MS extension). 9124ACPICA 9125BZ 743. 9126 9127Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 9128MCFG). 9129 9130---------------------------------------- 913131 October 2008. Summary of changes for version 20081031: 9132 91331) ACPI CA Core Subsystem: 9134 9135Restructured the ACPICA header files into public/private. acpi.h now 9136includes 9137only the "public" acpica headers. All other acpica headers are "private" 9138and 9139should not be included by acpica users. One new file, accommon.h is used 9140to 9141include the commonly used private headers for acpica code generation. 9142Future 9143plans include moving all private headers to a new subdirectory. 9144 9145Implemented an automatic Buffer->String return value conversion for 9146predefined ACPI methods. For these methods (such as _BIF), added 9147automatic 9148conversion for return objects that are required to be a String, but a 9149Buffer 9150was found instead. This can happen when reading string battery data from 9151an 9152operation region, because it used to be difficult to convert the data 9153from 9154buffer to string from within the ASL. Ensures that the host OS is 9155provided 9156with a valid null-terminated string. Linux BZ 11822. 9157 9158Updated the FACS waking vector interfaces. Split 9159AcpiSetFirmwareWakingVector 9160into two: one for the 32-bit vector, another for the 64-bit vector. This 9161is 9162required because the host OS must setup the wake much differently for 9163each 9164vector (real vs. protected mode, etc.) and the interface itself should 9165not 9166be 9167deciding which vector to use. Also, eliminated the 9168GetFirmwareWakingVector 9169interface, as it served no purpose (only the firmware reads the vector, 9170OS 9171only writes the vector.) ACPICA BZ 731. 9172 9173Implemented a mechanism to escape infinite AML While() loops. Added a 9174loop 9175counter to force exit from AML While loops if the count becomes too 9176large. 9177This can occur in poorly written AML when the hardware does not respond 9178within a while loop and the loop does not implement a timeout. The 9179maximum 9180loop count is configurable. A new exception code is returned when a loop 9181is 9182broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 9183 9184Optimized the execution of AML While loops. Previously, a control state 9185object was allocated and freed for each execution of the loop. The 9186optimization is to simply reuse the control state for each iteration. 9187This 9188speeds up the raw loop execution time by about 5%. 9189 9190Enhanced the implicit return mechanism. For Windows compatibility, return 9191an 9192implicit integer of value zero for methods that contain no executable 9193code. 9194Such methods are seen in the field as stubs (presumably), and can cause 9195drivers to fail if they expect a return value. Lin Ming. 9196 9197Allow multiple backslashes as root prefixes in namepaths. In a fully 9198qualified namepath, allow multiple backslash prefixes. This can happen 9199(and 9200is seen in the field) because of the use of a double-backslash in strings 9201(since backslash is the escape character) causing confusion. ACPICA BZ 9202739 9203Lin Ming. 9204 9205Emit a warning if two different FACS or DSDT tables are discovered in the 9206FADT. Checks if there are two valid but different addresses for the FACS 9207and 9208DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 9209 9210Consolidated the method argument count validation code. Merged the code 9211that 9212validates control method argument counts into the predefined validation 9213module. Eliminates possible multiple warnings for incorrect argument 9214counts. 9215 9216Implemented ACPICA example code. Includes code for ACPICA initialization, 9217handler installation, and calling a control method. Available at 9218source/tools/examples. 9219 9220Added a global pointer for FACS table to simplify internal FACS access. 9221Use 9222the global pointer instead of using AcpiGetTableByIndex for each FACS 9223access. 9224This simplifies the code for the Global Lock and the Firmware Waking 9225Vector(s). 9226 9227Example Code and Data Size: These are the sizes for the OS-independent 9228acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9229debug version of the code includes the debug output trace mechanism and 9230has a 9231much larger code and data size. 9232 9233 Previous Release: 9234 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9235 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9236 Current Release: 9237 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9238 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9239 92402) iASL Compiler/Disassembler and Tools: 9241 9242iASL: Improved disassembly of external method calls. Added the -e option 9243to 9244allow the inclusion of additional ACPI tables to help with the 9245disassembly 9246of 9247method invocations and the generation of external declarations during the 9248disassembly. Certain external method invocations cannot be disassembled 9249properly without the actual declaration of the method. Use the -e option 9250to 9251include the table where the external method(s) are actually declared. 9252Most 9253useful for disassembling SSDTs that make method calls back to the master 9254DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 9255-d 9256-e dsdt.aml ssdt1.aml 9257 9258iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 9259problem where the use of an alias within a namepath would result in a not 9260found error or cause the compiler to fault. Also now allows forward 9261references from the Alias operator itself. ACPICA BZ 738. 9262 9263---------------------------------------- 926426 September 2008. Summary of changes for version 20080926: 9265 92661) ACPI CA Core Subsystem: 9267 9268Designed and implemented a mechanism to validate predefined ACPI methods 9269and 9270objects. This code validates the predefined ACPI objects (objects whose 9271names 9272start with underscore) that appear in the namespace, at the time they are 9273evaluated. The argument count and the type of the returned object are 9274validated against the ACPI specification. The purpose of this validation 9275is 9276to detect problems with the BIOS-implemented predefined ACPI objects 9277before 9278the results are returned to the ACPI-related drivers. Future enhancements 9279may 9280include actual repair of incorrect return objects where possible. Two new 9281files are nspredef.c and acpredef.h. 9282 9283Fixed a fault in the AML parser if a memory allocation fails during the 9284Op 9285completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 9286 9287Fixed an issue with implicit return compatibility. This change improves 9288the 9289implicit return mechanism to be more compatible with the MS interpreter. 9290Lin 9291Ming, ACPICA BZ 349. 9292 9293Implemented support for zero-length buffer-to-string conversions. Allow 9294zero 9295length strings during interpreter buffer-to-string conversions. For 9296example, 9297during the ToDecimalString and ToHexString operators, as well as implicit 9298conversions. Fiodor Suietov, ACPICA BZ 585. 9299 9300Fixed two possible memory leaks in the error exit paths of 9301AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 9302are 9303similar in that they use a stack of state objects in order to eliminate 9304recursion. The stack must be fully unwound and deallocated if an error 9305occurs. Lin Ming. ACPICA BZ 383. 9306 9307Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 9308global 9309ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 9310Moore ACPICA BZ 442. 9311 9312Removed the obsolete version number in module headers. Removed the 9313"$Revision" number that appeared in each module header. This version 9314number 9315was useful under SourceSafe and CVS, but has no meaning under git. It is 9316not 9317only incorrect, it could also be misleading. 9318 9319Example Code and Data Size: These are the sizes for the OS-independent 9320acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9321debug version of the code includes the debug output trace mechanism and 9322has a 9323much larger code and data size. 9324 9325 Previous Release: 9326 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9327 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9328 Current Release: 9329 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9330 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9331 9332---------------------------------------- 933329 August 2008. Summary of changes for version 20080829: 9334 93351) ACPI CA Core Subsystem: 9336 9337Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 9338Reference. Changes include the elimination of cheating on the Object 9339field 9340for the DdbHandle subtype, addition of a reference class field to 9341differentiate the various reference types (instead of an AML opcode), and 9342the 9343cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 9344 9345Reduce an error to a warning for an incorrect method argument count. 9346Previously aborted with an error if too few arguments were passed to a 9347control method via the external ACPICA interface. Now issue a warning 9348instead 9349and continue. Handles the case where the method inadvertently declares 9350too 9351many arguments, but does not actually use the extra ones. Applies mainly 9352to 9353the predefined methods. Lin Ming. Linux BZ 11032. 9354 9355Disallow the evaluation of named object types with no intrinsic value. 9356Return 9357AE_TYPE for objects that have no value and therefore evaluation is 9358undefined: 9359Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 9360of 9361these types were allowed, but an exception would be generated at some 9362point 9363during the evaluation. Now, the error is generated up front. 9364 9365Fixed a possible memory leak in the AcpiNsGetExternalPathname function 9366(nsnames.c). Fixes a leak in the error exit path. 9367 9368Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 9369debug 9370levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 9371ACPI_EXCEPTION 9372interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 9373ACPI_LV_EVENTS. 9374 9375Removed obsolete and/or unused exception codes from the acexcep.h header. 9376There is the possibility that certain device drivers may be affected if 9377they 9378use any of these exceptions. 9379 9380The ACPICA documentation has been added to the public git source tree, 9381under 9382acpica/documents. Included are the ACPICA programmer reference, the iASL 9383compiler reference, and the changes.txt release logfile. 9384 9385Example Code and Data Size: These are the sizes for the OS-independent 9386acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9387debug version of the code includes the debug output trace mechanism and 9388has a 9389much larger code and data size. 9390 9391 Previous Release: 9392 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9393 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9394 Current Release: 9395 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9396 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9397 93982) iASL Compiler/Disassembler and Tools: 9399 9400Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 9401defines _SCP with 3 arguments. Previous versions defined it with only 1 9402argument. iASL now allows both definitions. 9403 9404iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 9405zero- 9406length subtables when disassembling ACPI tables. Also fixed a couple of 9407errors where a full 16-bit table type field was not extracted from the 9408input 9409properly. 9410 9411acpisrc: Improve comment counting mechanism for generating source code 9412statistics. Count first and last lines of multi-line comments as 9413whitespace, 9414not comment lines. Handle Linux legal header in addition to standard 9415acpica 9416header. 9417 9418---------------------------------------- 9419 942029 July 2008. Summary of changes for version 20080729: 9421 94221) ACPI CA Core Subsystem: 9423 9424Fix a possible deadlock in the GPE dispatch. Remove call to 9425AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 9426attempt 9427to acquire the GPE lock but can deadlock since the GPE lock is already 9428held 9429at dispatch time. This code was introduced in version 20060831 as a 9430response 9431to Linux BZ 6881 and has since been removed from Linux. 9432 9433Add a function to dereference returned reference objects. Examines the 9434return 9435object from a call to AcpiEvaluateObject. Any Index or RefOf references 9436are 9437automatically dereferenced in an attempt to return something useful 9438(these 9439reference types cannot be converted into an external ACPI_OBJECT.) 9440Provides 9441MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 9442 9443x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 9444subtables for the MADT and one new subtable for the SRAT. Includes 9445disassembler and AcpiSrc support. Data from the Intel 64 Architecture 9446x2APIC 9447Specification, June 2008. 9448 9449Additional error checking for pathname utilities. Add error check after 9450all 9451calls to AcpiNsGetPathnameLength. Add status return from 9452AcpiNsBuildExternalPath and check after all calls. Add parameter 9453validation 9454to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 9455 9456Return status from the global init function AcpiUtGlobalInitialize. This 9457is 9458used by both the kernel subsystem and the utilities such as iASL 9459compiler. 9460The function could possibly fail when the caches are initialized. Yang 9461Yi. 9462 9463Add a function to decode reference object types to strings. Created for 9464improved error messages. 9465 9466Improve object conversion error messages. Better error messages during 9467object 9468conversion from internal to the external ACPI_OBJECT. Used for external 9469calls 9470to AcpiEvaluateObject. 9471 9472Example Code and Data Size: These are the sizes for the OS-independent 9473acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9474debug version of the code includes the debug output trace mechanism and 9475has a 9476much larger code and data size. 9477 9478 Previous Release: 9479 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9480 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9481 Current Release: 9482 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9483 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9484 94852) iASL Compiler/Disassembler and Tools: 9486 9487Debugger: fix a possible hang when evaluating non-methods. Fixes a 9488problem 9489introduced in version 20080701. If the object being evaluated (via 9490execute 9491command) is not a method, the debugger can hang while trying to obtain 9492non- 9493existent parameters. 9494 9495iASL: relax error for using reserved "_T_x" identifiers. These names can 9496appear in a disassembled ASL file if they were emitted by the original 9497compiler. Instead of issuing an error or warning and forcing the user to 9498manually change these names, issue a remark instead. 9499 9500iASL: error if named object created in while loop. Emit an error if any 9501named 9502object is created within a While loop. If allowed, this code will 9503generate 9504a 9505run-time error on the second iteration of the loop when an attempt is 9506made 9507to 9508create the same named object twice. ACPICA bugzilla 730. 9509 9510iASL: Support absolute pathnames for include files. Add support for 9511absolute 9512pathnames within the Include operator. previously, only relative 9513pathnames 9514were supported. 9515 9516iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 9517Descriptor. 9518The ACPI spec requires one interrupt minimum. BZ 423 9519 9520iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 9521Handles the case for the Interrupt Resource Descriptor where 9522the ResourceSource argument is omitted but ResourceSourceIndex 9523is present. Now leave room for the Index. BZ 426 9524 9525iASL: Prevent error message if CondRefOf target does not exist. Fixes 9526cases 9527where an error message is emitted if the target does not exist. BZ 516 9528 9529iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 9530(get ACPI tables on Windows). This was apparently broken in version 953120070919. 9532 9533AcpiXtract: Handle EOF while extracting data. Correctly handle the case 9534where 9535the EOF happens immediately after the last table in the input file. Print 9536completion message. Previously, no message was displayed in this case. 9537 9538---------------------------------------- 953901 July 2008. Summary of changes for version 20080701: 9540 95410) Git source tree / acpica.org 9542 9543Fixed a problem where a git-clone from http would not transfer the entire 9544source tree. 9545 95461) ACPI CA Core Subsystem: 9547 9548Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 9549enable bit. Now performs a read-change-write of the enable register 9550instead 9551of simply writing out the cached enable mask. This will prevent 9552inadvertent 9553enabling of GPEs if a rogue GPE is received during initialization (before 9554GPE 9555handlers are installed.) 9556 9557Implemented a copy for dynamically loaded tables. Previously, dynamically 9558loaded tables were simply mapped - but on some machines this memory is 9559corrupted after suspend. Now copy the table to a local buffer. For the 9560OpRegion case, added checksum verify. Use the table length from the table 9561header, not the region length. For the Buffer case, use the table length 9562also. Dennis Noordsij, Bob Moore. BZ 10734 9563 9564Fixed a problem where the same ACPI table could not be dynamically loaded 9565and 9566unloaded more than once. Without this change, a table cannot be loaded 9567again 9568once it has been loaded/unloaded one time. The current mechanism does not 9569unregister a table upon an unload. During a load, if the same table is 9570found, 9571this no longer returns an exception. BZ 722 9572 9573Fixed a problem where the wrong descriptor length was calculated for the 9574EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 9575EndTag 9576are calculated as 12 bytes long, but the actual length in the internal 9577descriptor is 16 because of the round-up to 8 on the 64-bit build. 9578Reported 9579by Linn Crosetto. BZ 728 9580 9581Fixed a possible memory leak in the Unload operator. The DdbHandle 9582returned 9583by Load() did not have its reference count decremented during unload, 9584leading 9585to a memory leak. Lin Ming. BZ 727 9586 9587Fixed a possible memory leak when deleting thermal/processor objects. Any 9588associated notify handlers (and objects) were not being deleted. Fiodor 9589Suietov. BZ 506 9590 9591Fixed the ordering of the ASCII names in the global mutex table to match 9592the 9593actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 9594only. 9595Vegard Nossum. BZ 726 9596 9597Enhanced the AcpiGetObjectInfo interface to return the number of required 9598arguments if the object is a control method. Added this call to the 9599debugger 9600so the proper number of default arguments are passed to a method. This 9601prevents a warning when executing methods from AcpiExec. 9602 9603Added a check for an invalid handle in AcpiGetObjectInfo. Return 9604AE_BAD_PARAMETER if input handle is invalid. BZ 474 9605 9606Fixed an extraneous warning from exconfig.c on the 64-bit build. 9607 9608Example Code and Data Size: These are the sizes for the OS-independent 9609acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9610debug version of the code includes the debug output trace mechanism and 9611has a 9612much larger code and data size. 9613 9614 Previous Release: 9615 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9616 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9617 Current Release: 9618 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9619 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9620 96212) iASL Compiler/Disassembler and Tools: 9622 9623iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 9624resource descriptor names. 9625 9626iASL: Detect invalid ASCII characters in input (windows version). Removed 9627the 9628"-CF" flag from the flex compile, enables correct detection of non-ASCII 9629characters in the input. BZ 441 9630 9631iASL: Eliminate warning when result of LoadTable is not used. Eliminate 9632the 9633"result of operation not used" warning when the DDB handle returned from 9634LoadTable is not used. The warning is not needed. BZ 590 9635 9636AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 9637method 9638to 9639pass address of table to the AML. Added option to disable OpRegion 9640simulation 9641to allow creation of an OpRegion with a real address that was passed to 9642_CFG. 9643All of this allows testing of the Load and Unload operators from 9644AcpiExec. 9645 9646Debugger: update tables command for unloaded tables. Handle unloaded 9647tables 9648and use the standard table header output routine. 9649 9650---------------------------------------- 965109 June 2008. Summary of changes for version 20080609: 9652 96531) ACPI CA Core Subsystem: 9654 9655Implemented a workaround for reversed _PRT entries. A significant number 9656of 9657BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 9658change dynamically detects and repairs this problem. Provides 9659compatibility 9660with MS ACPI. BZ 6859 9661 9662Simplified the internal ACPI hardware interfaces to eliminate the locking 9663flag parameter from Register Read/Write. Added a new external interface, 9664AcpiGetRegisterUnlocked. 9665 9666Fixed a problem where the invocation of a GPE control method could hang. 9667This 9668was a regression introduced in 20080514. The new method argument count 9669validation mechanism can enter an infinite loop when a GPE method is 9670dispatched. Problem fixed by removing the obsolete code that passed GPE 9671block 9672information to the notify handler via the control method parameter 9673pointer. 9674 9675Fixed a problem where the _SST execution status was incorrectly returned 9676to 9677the caller of AcpiEnterSleepStatePrep. This was a regression introduced 9678in 967920080514. _SST is optional and a NOT_FOUND exception should never be 9680returned. BZ 716 9681 9682Fixed a problem where a deleted object could be accessed from within the 9683AML 9684parser. This was a regression introduced in version 20080123 as a fix for 9685the 9686Unload operator. Lin Ming. BZ 10669 9687 9688Cleaned up the debug operand dump mechanism. Eliminated unnecessary 9689operands 9690and eliminated the use of a negative index in a loop. Operands are now 9691displayed in the correct order, not backwards. This also fixes a 9692regression 9693introduced in 20080514 on 64-bit systems where the elimination of 9694ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 9695715 9696 9697Fixed a possible memory leak in EvPciConfigRegionSetup where the error 9698exit 9699path did not delete a locally allocated structure. 9700 9701Updated definitions for the DMAR and SRAT tables to synchronize with the 9702current specifications. Includes disassembler support. 9703 9704Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 9705loop termination value was used. Loop terminated on iteration early, 9706missing 9707one mutex. Linn Crosetto 9708 9709Example Code and Data Size: These are the sizes for the OS-independent 9710acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9711debug version of the code includes the debug output trace mechanism and 9712has a 9713much larger code and data size. 9714 9715 Previous Release: 9716 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9717 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9718 Current Release: 9719 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9720 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9721 97222) iASL Compiler/Disassembler and Tools: 9723 9724Disassembler: Implemented support for EisaId() within _CID objects. Now 9725disassemble integer _CID objects back to EisaId invocations, including 9726multiple integers within _CID packages. Includes single-step support for 9727debugger also. 9728 9729Disassembler: Added support for DMAR and SRAT table definition changes. 9730 9731---------------------------------------- 973214 May 2008. Summary of changes for version 20080514: 9733 97341) ACPI CA Core Subsystem: 9735 9736Fixed a problem where GPEs were enabled too early during the ACPICA 9737initialization. This could lead to "handler not installed" errors on some 9738machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 9739This 9740ensures that all operation regions and devices throughout the namespace 9741have 9742been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 9743 9744Implemented a change to the enter sleep code. Moved execution of the _GTS 9745method to just before setting sleep enable bit. The execution was moved 9746from 9747AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 9748immediately before the SLP_EN bit is set, as per the ACPI specification. 9749Luming Yu, BZ 1653. 9750 9751Implemented a fix to disable unknown GPEs (2nd version). Now always 9752disable 9753the GPE, even if ACPICA thinks that that it is already disabled. It is 9754possible that the AML or some other code has enabled the GPE unbeknownst 9755to 9756the ACPICA code. 9757 9758Fixed a problem with the Field operator where zero-length fields would 9759return 9760an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 9761ASL 9762field declarations in Field(), BankField(), and IndexField(). BZ 10606. 9763 9764Implemented a fix for the Load operator, now load the table at the 9765namespace 9766root. This reverts a change introduced in version 20071019. The table is 9767now 9768loaded at the namespace root even though this goes against the ACPI 9769specification. This provides compatibility with other ACPI 9770implementations. 9771The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 9772Ming. 9773 9774Fixed a problem where ACPICA would not Load() tables with unusual 9775signatures. 9776Now ignore ACPI table signature for Load() operator. Only "SSDT" is 9777acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 9778Therefore, signature validation is worthless. Apparently MS ACPI accepts 9779such 9780signatures, ACPICA must be compatible. BZ 10454. 9781 9782Fixed a possible negative array index in AcpiUtValidateException. Added 9783NULL 9784fields to the exception string arrays to eliminate a -1 subtraction on 9785the 9786SubStatus field. 9787 9788Updated the debug tracking macros to reduce overall code and data size. 9789Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 9790instead of pointers to static strings. Jan Beulich and Bob Moore. 9791 9792Implemented argument count checking in control method invocation via 9793AcpiEvaluateObject. Now emit an error if too few arguments, warning if 9794too 9795many. This applies only to extern programmatic control method execution, 9796not 9797method-to-method calls within the AML. Lin Ming. 9798 9799Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 9800no 9801longer needed, especially with the removal of 16-bit support. It was 9802replaced 9803mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 9804bit 9805on 980632/64-bit platforms is required. 9807 9808Added the C const qualifier for appropriate string constants -- mostly 9809MODULE_NAME and printf format strings. Jan Beulich. 9810 9811Example Code and Data Size: These are the sizes for the OS-independent 9812acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9813debug version of the code includes the debug output trace mechanism and 9814has a 9815much larger code and data size. 9816 9817 Previous Release: 9818 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9819 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9820 Current Release: 9821 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9822 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9823 98242) iASL Compiler/Disassembler and Tools: 9825 9826Implemented ACPI table revision ID validation in the disassembler. Zero 9827is 9828always invalid. For DSDTs, the ID controls the interpreter integer width. 98291 9830means 32-bit and this is unusual. 2 or greater is 64-bit. 9831 9832---------------------------------------- 983321 March 2008. Summary of changes for version 20080321: 9834 98351) ACPI CA Core Subsystem: 9836 9837Implemented an additional change to the GPE support in order to suppress 9838spurious or stray GPEs. The AcpiEvDisableGpe function will now 9839permanently 9840disable incoming GPEs that are neither enabled nor disabled -- meaning 9841that 9842the GPE is unknown to the system. This should prevent future interrupt 9843floods 9844from that GPE. BZ 6217 (Zhang Rui) 9845 9846Fixed a problem where NULL package elements were not returned to the 9847AcpiEvaluateObject interface correctly. The element was simply ignored 9848instead of returning a NULL ACPI_OBJECT package element, potentially 9849causing 9850a buffer overflow and/or confusing the caller who expected a fixed number 9851of 9852elements. BZ 10132 (Lin Ming, Bob Moore) 9853 9854Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 9855Dword, 9856Qword), Field, BankField, and IndexField operators when invoked from 9857inside 9858an executing control method. In this case, these operators created 9859namespace 9860nodes that were incorrectly left marked as permanent nodes instead of 9861temporary nodes. This could cause a problem if there is race condition 9862between an exiting control method and a running namespace walk. (Reported 9863by 9864Linn Crosetto) 9865 9866Fixed a problem where the CreateField and CreateXXXField operators would 9867incorrectly allow duplicate names (the name of the field) with no 9868exception 9869generated. 9870 9871Implemented several changes for Notify handling. Added support for new 9872Notify 9873values (ACPI 2.0+) and improved the Notify debug output. Notify on 9874PowerResource objects is no longer allowed, as per the ACPI 9875specification. 9876(Bob Moore, Zhang Rui) 9877 9878All Reference Objects returned via the AcpiEvaluateObject interface are 9879now 9880marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 9881for 9882NULL objects - either NULL package elements or unresolved named 9883references. 9884 9885Fixed a problem where an extraneous debug message was produced for 9886package 9887objects (when debugging enabled). The message "Package List length larger 9888than NumElements count" is now produced in the correct case, and is now 9889an 9890error message rather than a debug message. Added a debug message for the 9891opposite case, where NumElements is larger than the Package List (the 9892package 9893will be padded out with NULL elements as per the ACPI spec.) 9894 9895Implemented several improvements for the output of the ASL "Debug" object 9896to 9897clarify and keep all data for a given object on one output line. 9898 9899Fixed two size calculation issues with the variable-length Start 9900Dependent 9901resource descriptor. 9902 9903Example Code and Data Size: These are the sizes for the OS-independent 9904acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9905debug version of the code includes the debug output trace mechanism and 9906has 9907a much larger code and data size. 9908 9909 Previous Release: 9910 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9911 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9912 Current Release: 9913 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9914 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9915 99162) iASL Compiler/Disassembler and Tools: 9917 9918Fixed a problem with the use of the Switch operator where execution of 9919the 9920containing method by multiple concurrent threads could cause an 9921AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 9922actual Switch opcode, it must be simulated with local named temporary 9923variables and if/else pairs. The solution chosen was to mark any method 9924that 9925uses Switch as Serialized, thus preventing multiple thread entries. BZ 9926469. 9927 9928---------------------------------------- 992913 February 2008. Summary of changes for version 20080213: 9930 99311) ACPI CA Core Subsystem: 9932 9933Implemented another MS compatibility design change for GPE/Notify 9934handling. 9935GPEs are now cleared/enabled asynchronously to allow all pending notifies 9936to 9937complete first. It is expected that the OSL will queue the enable request 9938behind all pending notify requests (may require changes to the local host 9939OSL 9940in AcpiOsExecute). Alexey Starikovskiy. 9941 9942Fixed a problem where buffer and package objects passed as arguments to a 9943control method via the external AcpiEvaluateObject interface could cause 9944an 9945AE_AML_INTERNAL exception depending on the order and type of operators 9946executed by the target control method. 9947 9948Fixed a problem where resource descriptor size optimization could cause a 9949problem when a _CRS resource template is passed to a _SRS method. The 9950_SRS 9951resource template must use the same descriptors (with the same size) as 9952returned from _CRS. This change affects the following resource 9953descriptors: 9954IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 99559487) 9956 9957Fixed a problem where a CopyObject to RegionField, BankField, and 9958IndexField 9959objects did not perform an implicit conversion as it should. These types 9960must 9961retain their initial type permanently as per the ACPI specification. 9962However, 9963a CopyObject to all other object types should not perform an implicit 9964conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 9965 9966Fixed a problem with the AcpiGetDevices interface where the mechanism to 9967match device CIDs did not examine the entire list of available CIDs, but 9968instead aborted on the first non-matching CID. Andrew Patterson. 9969 9970Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 9971was 9972inadvertently changed to return a 16-bit value instead of a 32-bit value, 9973truncating the upper dword of a 64-bit value. This macro is only used to 9974display debug output, so no incorrect calculations were made. Also, 9975reimplemented the macro so that a 64-bit shift is not performed by 9976inefficient compilers. 9977 9978Added missing va_end statements that should correspond with each va_start 9979statement. 9980 9981Example Code and Data Size: These are the sizes for the OS-independent 9982acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9983debug version of the code includes the debug output trace mechanism and 9984has 9985a much larger code and data size. 9986 9987 Previous Release: 9988 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9989 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9990 Current Release: 9991 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9992 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9993 99942) iASL Compiler/Disassembler and Tools: 9995 9996Implemented full disassembler support for the following new ACPI tables: 9997BERT, EINJ, and ERST. Implemented partial disassembler support for the 9998complicated HEST table. These tables support the Windows Hardware Error 9999Architecture (WHEA). 10000 10001---------------------------------------- 1000223 January 2008. Summary of changes for version 20080123: 10003 100041) ACPI CA Core Subsystem: 10005 10006Added the 2008 copyright to all module headers and signons. This affects 10007virtually every file in the ACPICA core subsystem, the iASL compiler, and 10008the tools/utilities. 10009 10010Fixed a problem with the SizeOf operator when used with Package and 10011Buffer 10012objects. These objects have deferred execution for some arguments, and 10013the 10014execution is now completed before the SizeOf is executed. This problem 10015caused 10016unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 10017BZ 100189558 10019 10020Implemented an enhancement to the interpreter "slack mode". In the 10021absence 10022of 10023an explicit return or an implicitly returned object from the last 10024executed 10025opcode, a control method will now implicitly return an integer of value 0 10026for 10027Microsoft compatibility. (Lin Ming) BZ 392 10028 10029Fixed a problem with the Load operator where an exception was not 10030returned 10031in 10032the case where the table is already loaded. (Lin Ming) BZ 463 10033 10034Implemented support for the use of DDBHandles as an Indexed Reference, as 10035per 10036the ACPI spec. (Lin Ming) BZ 486 10037 10038Implemented support for UserTerm (Method invocation) for the Unload 10039operator 10040as per the ACPI spec. (Lin Ming) BZ 580 10041 10042Fixed a problem with the LoadTable operator where the OemId and 10043OemTableId 10044input strings could cause unexpected failures if they were shorter than 10045the 10046maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 10047 10048Implemented support for UserTerm (Method invocation) for the Unload 10049operator 10050as per the ACPI spec. (Lin Ming) BZ 580 10051 10052Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 10053HEST, 10054IBFT, UEFI, WDAT. Disassembler support is forthcoming. 10055 10056Example Code and Data Size: These are the sizes for the OS-independent 10057acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10058debug version of the code includes the debug output trace mechanism and 10059has 10060a much larger code and data size. 10061 10062 Previous Release: 10063 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10064 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10065 Current Release: 10066 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10067 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10068 100692) iASL Compiler/Disassembler and Tools: 10070 10071Implemented support in the disassembler for checksum validation on 10072incoming 10073binary DSDTs and SSDTs. If incorrect, a message is displayed within the 10074table 10075header dump at the start of the disassembly. 10076 10077Implemented additional debugging information in the namespace listing 10078file 10079created during compilation. In addition to the namespace hierarchy, the 10080full 10081pathname to each namespace object is displayed. 10082 10083Fixed a problem with the disassembler where invalid ACPI tables could 10084cause 10085faults or infinite loops. 10086 10087Fixed an unexpected parse error when using the optional "parameter types" 10088list in a control method declaration. (Lin Ming) BZ 397 10089 10090Fixed a problem where two External declarations with the same name did 10091not 10092cause an error (Lin Ming) BZ 509 10093 10094Implemented support for full TermArgs (adding Argx, Localx and method 10095invocation) for the ParameterData parameter to the LoadTable operator. 10096(Lin 10097Ming) BZ 583,587 10098 10099---------------------------------------- 1010019 December 2007. Summary of changes for version 20071219: 10101 101021) ACPI CA Core Subsystem: 10103 10104Implemented full support for deferred execution for the TermArg string 10105arguments for DataTableRegion. This enables forward references and full 10106operand resolution for the three string arguments. Similar to 10107OperationRegion 10108deferred argument execution.) Lin Ming. BZ 430 10109 10110Implemented full argument resolution support for the BankValue argument 10111to 10112BankField. Previously, only constants were supported, now any TermArg may 10113be 10114used. Lin Ming BZ 387, 393 10115 10116Fixed a problem with AcpiGetDevices where the search of a branch of the 10117device tree could be terminated prematurely. In accordance with the ACPI 10118specification, the search down the current branch is terminated if a 10119device 10120is both not present and not functional (instead of just not present.) 10121Yakui 10122Zhao. 10123 10124Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 10125if 10126the underlying AML code changed the GPE enable registers. Now, any 10127unknown 10128incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 10129disabled 10130instead of simply ignored. Rui Zhang. 10131 10132Fixed a problem with Index Fields where the Index register was 10133incorrectly 10134limited to a maximum of 32 bits. Now any size may be used. 10135 10136Fixed a couple memory leaks associated with "implicit return" objects 10137when 10138the AML Interpreter slack mode is enabled. Lin Ming BZ 349 10139 10140Example Code and Data Size: These are the sizes for the OS-independent 10141acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10142debug version of the code includes the debug output trace mechanism and 10143has 10144a much larger code and data size. 10145 10146 Previous Release: 10147 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10148 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10149 Current Release: 10150 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10151 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10152 10153---------------------------------------- 1015414 November 2007. Summary of changes for version 20071114: 10155 101561) ACPI CA Core Subsystem: 10157 10158Implemented event counters for each of the Fixed Events, the ACPI SCI 10159(interrupt) itself, and control methods executed. Named 10160AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 10161These 10162should be useful for debugging and statistics. 10163 10164Implemented a new external interface, AcpiGetStatistics, to retrieve the 10165contents of the various event counters. Returns the current values for 10166AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 10167AcpiMethodCount. The interface can be expanded in the future if new 10168counters 10169are added. Device drivers should use this interface rather than access 10170the 10171counters directly. 10172 10173Fixed a problem with the FromBCD and ToBCD operators. With some 10174compilers, 10175the ShortDivide function worked incorrectly, causing problems with the 10176BCD 10177functions with large input values. A truncation from 64-bit to 32-bit 10178inadvertently occurred. Internal BZ 435. Lin Ming 10179 10180Fixed a problem with Index references passed as method arguments. 10181References 10182passed as arguments to control methods were dereferenced immediately 10183(before 10184control was passed to the called method). The references are now 10185correctly 10186passed directly to the called method. BZ 5389. Lin Ming 10187 10188Fixed a problem with CopyObject used in conjunction with the Index 10189operator. 10190The reference was incorrectly dereferenced before the copy. The reference 10191is 10192now correctly copied. BZ 5391. Lin Ming 10193 10194Fixed a problem with Control Method references within Package objects. 10195These 10196references are now correctly generated. This completes the package 10197construction overhaul that began in version 20071019. 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.8K Code, 17.2K Data, 96.0K Total 10207 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10208 Current Release: 10209 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10210 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10211 10212 102132) iASL Compiler/Disassembler and Tools: 10214 10215The AcpiExec utility now installs handlers for all of the predefined 10216Operation Region types. New types supported are: PCI_Config, CMOS, and 10217PCIBARTarget. 10218 10219Fixed a problem with the 64-bit version of AcpiExec where the extended 10220(64- 10221bit) address fields for the DSDT and FACS within the FADT were not being 10222used, causing truncation of the upper 32-bits of these addresses. Lin 10223Ming 10224and Bob Moore 10225 10226---------------------------------------- 1022719 October 2007. Summary of changes for version 20071019: 10228 102291) ACPI CA Core Subsystem: 10230 10231Fixed a problem with the Alias operator when the target of the alias is a 10232named ASL operator that opens a new scope -- Scope, Device, 10233PowerResource, 10234Processor, and ThermalZone. In these cases, any children of the original 10235operator could not be accessed via the alias, potentially causing 10236unexpected 10237AE_NOT_FOUND exceptions. (BZ 9067) 10238 10239Fixed a problem with the Package operator where all named references were 10240created as object references and left otherwise unresolved. According to 10241the 10242ACPI specification, a Package can only contain Data Objects or references 10243to 10244control methods. The implication is that named references to Data Objects 10245(Integer, Buffer, String, Package, BufferField, Field) should be resolved 10246immediately upon package creation. This is the approach taken with this 10247change. References to all other named objects (Methods, Devices, Scopes, 10248etc.) are all now properly created as reference objects. (BZ 5328) 10249 10250Reverted a change to Notify handling that was introduced in version 1025120070508. This version changed the Notify handling from asynchronous to 10252fully synchronous (Device driver Notify handling with respect to the 10253Notify 10254ASL operator). It was found that this change caused more problems than it 10255solved and was removed by most users. 10256 10257Fixed a problem with the Increment and Decrement operators where the type 10258of 10259the target object could be unexpectedly and incorrectly changed. (BZ 353) 10260Lin Ming. 10261 10262Fixed a problem with the Load and LoadTable operators where the table 10263location within the namespace was ignored. Instead, the table was always 10264loaded into the root or current scope. Lin Ming. 10265 10266Fixed a problem with the Load operator when loading a table from a buffer 10267object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 10268 10269Fixed a problem with the Debug object where a store of a DdbHandle 10270reference 10271object to the Debug object could cause a fault. 10272 10273Added a table checksum verification for the Load operator, in the case 10274where 10275the load is from a buffer. (BZ 578). 10276 10277Implemented additional parameter validation for the LoadTable operator. 10278The 10279length of the input strings SignatureString, OemIdString, and OemTableId 10280are 10281now checked for maximum lengths. (BZ 582) Lin Ming. 10282 10283Example Code and Data Size: These are the sizes for the OS-independent 10284acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10285debug version of the code includes the debug output trace mechanism and 10286has 10287a much larger code and data size. 10288 10289 Previous Release: 10290 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10291 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10292 Current Release: 10293 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10294 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10295 10296 102972) iASL Compiler/Disassembler: 10298 10299Fixed a problem where if a single file was specified and the file did not 10300exist, no error message was emitted. (Introduced with wildcard support in 10301version 20070917.) 10302 10303---------------------------------------- 1030419 September 2007. Summary of changes for version 20070919: 10305 103061) ACPI CA Core Subsystem: 10307 10308Designed and implemented new external interfaces to install and remove 10309handlers for ACPI table-related events. Current events that are defined 10310are 10311LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 10312they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 10313AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 10314 10315Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 10316(acpi_serialized option on Linux) could cause some systems to hang during 10317initialization. (Bob Moore) BZ 8171 10318 10319Fixed a problem where objects of certain types (Device, ThermalZone, 10320Processor, PowerResource) can be not found if they are declared and 10321referenced from within the same control method (Lin Ming) BZ 341 10322 10323Example Code and Data Size: These are the sizes for the OS-independent 10324acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10325debug version of the code includes the debug output trace mechanism and 10326has 10327a much larger code and data size. 10328 10329 Previous Release: 10330 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10331 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10332 Current Release: 10333 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10334 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10335 10336 103372) iASL Compiler/Disassembler: 10338 10339Implemented support to allow multiple files to be compiled/disassembled 10340in 10341a 10342single invocation. This includes command line wildcard support for both 10343the 10344Windows and Unix versions of the compiler. This feature simplifies the 10345disassembly and compilation of multiple ACPI tables in a single 10346directory. 10347 10348---------------------------------------- 1034908 May 2007. Summary of changes for version 20070508: 10350 103511) ACPI CA Core Subsystem: 10352 10353Implemented a Microsoft compatibility design change for the handling of 10354the 10355Notify AML operator. Previously, notify handlers were dispatched and 10356executed completely asynchronously in a deferred thread. The new design 10357still executes the notify handlers in a different thread, but the 10358original 10359thread that executed the Notify() now waits at a synchronization point 10360for 10361the notify handler to complete. Some machines depend on a synchronous 10362Notify 10363operator in order to operate correctly. 10364 10365Implemented support to allow Package objects to be passed as method 10366arguments to the external AcpiEvaluateObject interface. Previously, this 10367would return the AE_NOT_IMPLEMENTED exception. This feature had not been 10368implemented since there were no reserved control methods that required it 10369until recently. 10370 10371Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 10372that 10373contained invalid non-zero values in reserved fields could cause later 10374failures because these fields have meaning in later revisions of the 10375FADT. 10376For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 10377fields 10378are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 10379 10380Fixed a problem where the Global Lock handle was not properly updated if 10381a 10382thread that acquired the Global Lock via executing AML code then 10383attempted 10384to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 10385Joe 10386Liu. 10387 10388Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 10389could be corrupted if the interrupt being removed was at the head of the 10390list. Reported by Linn Crosetto. 10391 10392Example Code and Data Size: These are the sizes for the OS-independent 10393acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10394debug version of the code includes the debug output trace mechanism and 10395has 10396a much larger code and data size. 10397 10398 Previous Release: 10399 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10400 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10401 Current Release: 10402 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10403 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10404 10405---------------------------------------- 1040620 March 2007. Summary of changes for version 20070320: 10407 104081) ACPI CA Core Subsystem: 10409 10410Implemented a change to the order of interpretation and evaluation of AML 10411operand objects within the AML interpreter. The interpreter now evaluates 10412operands in the order that they appear in the AML stream (and the 10413corresponding ASL code), instead of in the reverse order (after the 10414entire 10415operand list has been parsed). The previous behavior caused several 10416subtle 10417incompatibilities with the Microsoft AML interpreter as well as being 10418somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 10419 10420Implemented a change to the ACPI Global Lock support. All interfaces to 10421the 10422global lock now allow the same thread to acquire the lock multiple times. 10423This affects the AcpiAcquireGlobalLock external interface to the global 10424lock 10425as well as the internal use of the global lock to support AML fields -- a 10426control method that is holding the global lock can now simultaneously 10427access 10428AML fields that require global lock protection. Previously, in both 10429cases, 10430this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 10431to 10432AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 10433Controller. There is no change to the behavior of the AML Acquire 10434operator, 10435as this can already be used to acquire a mutex multiple times by the same 10436thread. BZ 8066. With assistance from Alexey Starikovskiy. 10437 10438Fixed a problem where invalid objects could be referenced in the AML 10439Interpreter after error conditions. During operand evaluation, ensure 10440that 10441the internal "Return Object" field is cleared on error and only valid 10442pointers are stored there. Caused occasional access to deleted objects 10443that 10444resulted in "large reference count" warning messages. Valery Podrezov. 10445 10446Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 10447on 10448deeply nested control method invocations. BZ 7873, local BZ 487. Valery 10449Podrezov. 10450 10451Fixed an internal problem with the handling of result objects on the 10452interpreter result stack. BZ 7872. Valery Podrezov. 10453 10454Removed obsolete code that handled the case where AML_NAME_OP is the 10455target 10456of a reference (Reference.Opcode). This code was no longer necessary. BZ 104577874. Valery Podrezov. 10458 10459Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 10460was 10461a 10462remnant from the previously discontinued 16-bit support. 10463 10464Example Code and Data Size: These are the sizes for the OS-independent 10465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10466debug version of the code includes the debug output trace mechanism and 10467has 10468a much larger code and data size. 10469 10470 Previous Release: 10471 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10472 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10473 Current Release: 10474 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10475 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10476 10477---------------------------------------- 1047826 January 2007. Summary of changes for version 20070126: 10479 104801) ACPI CA Core Subsystem: 10481 10482Added the 2007 copyright to all module headers and signons. This affects 10483virtually every file in the ACPICA core subsystem, the iASL compiler, and 10484the utilities. 10485 10486Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 10487during a table load. A bad pointer was passed in the case where the DSDT 10488is 10489overridden, causing a fault in this case. 10490 10491Example Code and Data Size: These are the sizes for the OS-independent 10492acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10493debug version of the code includes the debug output trace mechanism and 10494has 10495a much larger code and data size. 10496 10497 Previous Release: 10498 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10499 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10500 Current Release: 10501 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10502 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10503 10504---------------------------------------- 1050515 December 2006. Summary of changes for version 20061215: 10506 105071) ACPI CA Core Subsystem: 10508 10509Support for 16-bit ACPICA has been completely removed since it is no 10510longer 10511necessary and it clutters the code. All 16-bit macros, types, and 10512conditional compiles have been removed, cleaning up and simplifying the 10513code 10514across the entire subsystem. DOS support is no longer needed since the 10515bootable Linux firmware kit is now available. 10516 10517The handler for the Global Lock is now removed during AcpiTerminate to 10518enable a clean subsystem restart, via the implementation of the 10519AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 10520HP) 10521 10522Implemented enhancements to the multithreading support within the 10523debugger 10524to enable improved multithreading debugging and evaluation of the 10525subsystem. 10526(Valery Podrezov) 10527 10528Debugger: Enhanced the Statistics/Memory command to emit the total 10529(maximum) 10530memory used during the execution, as well as the maximum memory consumed 10531by 10532each of the various object types. (Valery Podrezov) 10533 10534Example Code and Data Size: These are the sizes for the OS-independent 10535acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10536debug version of the code includes the debug output trace mechanism and 10537has 10538a much larger code and data size. 10539 10540 Previous Release: 10541 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10542 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10543 Current Release: 10544 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10545 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10546 10547 105482) iASL Compiler/Disassembler and Tools: 10549 10550AcpiExec: Implemented a new option (-m) to display full memory use 10551statistics upon subsystem/program termination. (Valery Podrezov) 10552 10553---------------------------------------- 1055409 November 2006. Summary of changes for version 20061109: 10555 105561) ACPI CA Core Subsystem: 10557 10558Optimized the Load ASL operator in the case where the source operand is 10559an 10560operation region. Simply map the operation region memory, instead of 10561performing a bytewise read. (Region must be of type SystemMemory, see 10562below.) 10563 10564Fixed the Load ASL operator for the case where the source operand is a 10565region field. A buffer object is also allowed as the source operand. BZ 10566480 10567 10568Fixed a problem where the Load ASL operator allowed the source operand to 10569be 10570an operation region of any type. It is now restricted to regions of type 10571SystemMemory, as per the ACPI specification. BZ 481 10572 10573Additional cleanup and optimizations for the new Table Manager code. 10574 10575AcpiEnable will now fail if all of the required ACPI tables are not 10576loaded 10577(FADT, FACS, DSDT). BZ 477 10578 10579Added #pragma pack(8/4) to acobject.h to ensure that the structures in 10580this 10581header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 10582manually optimized to be aligned and will not work if it is byte-packed. 10583 10584Example Code and Data Size: These are the sizes for the OS-independent 10585acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10586debug version of the code includes the debug output trace mechanism and 10587has 10588a much larger code and data size. 10589 10590 Previous Release: 10591 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10592 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10593 Current Release: 10594 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10595 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10596 10597 105982) iASL Compiler/Disassembler and Tools: 10599 10600Fixed a problem where the presence of the _OSI predefined control method 10601within complex expressions could cause an internal compiler error. 10602 10603AcpiExec: Implemented full region support for multiple address spaces. 10604SpaceId is now part of the REGION object. BZ 429 10605 10606---------------------------------------- 1060711 October 2006. Summary of changes for version 20061011: 10608 106091) ACPI CA Core Subsystem: 10610 10611Completed an AML interpreter performance enhancement for control method 10612execution. Previously a 2-pass parse/execution, control methods are now 10613completely parsed and executed in a single pass. This improves overall 10614interpreter performance by ~25%, reduces code size, and reduces CPU stack 10615use. (Valery Podrezov + interpreter changes in version 20051202 that 10616eliminated namespace loading during the pass one parse.) 10617 10618Implemented _CID support for PCI Root Bridge detection. If the _HID does 10619not 10620match the predefined PCI Root Bridge IDs, the _CID list (if present) is 10621now 10622obtained and also checked for an ID match. 10623 10624Implemented additional support for the PCI _ADR execution: upsearch until 10625a 10626device scope is found before executing _ADR. This allows PCI_Config 10627operation regions to be declared locally within control methods 10628underneath 10629PCI device objects. 10630 10631Fixed a problem with a possible race condition between threads executing 10632AcpiWalkNamespace and the AML interpreter. This condition was removed by 10633modifying AcpiWalkNamespace to (by default) ignore all temporary 10634namespace 10635entries created during any concurrent control method execution. An 10636additional namespace race condition is known to exist between 10637AcpiWalkNamespace and the Load/Unload ASL operators and is still under 10638investigation. 10639 10640Restructured the AML ParseLoop function, breaking it into several 10641subfunctions in order to reduce CPU stack use and improve 10642maintainability. 10643(Mikhail Kouzmich) 10644 10645AcpiGetHandle: Fix for parameter validation to detect invalid 10646combinations 10647of prefix handle and pathname. BZ 478 10648 10649Example Code and Data Size: These are the sizes for the OS-independent 10650acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10651debug version of the code includes the debug output trace mechanism and 10652has 10653a much larger code and data size. 10654 10655 Previous Release: 10656 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10657 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10658 Current Release: 10659 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10660 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10661 106622) iASL Compiler/Disassembler and Tools: 10663 10664Ported the -g option (get local ACPI tables) to the new ACPICA Table 10665Manager 10666to restore original behavior. 10667 10668---------------------------------------- 1066927 September 2006. Summary of changes for version 20060927: 10670 106711) ACPI CA Core Subsystem: 10672 10673Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 10674These functions now use a spinlock for mutual exclusion and the interrupt 10675level indication flag is not needed. 10676 10677Fixed a problem with the Global Lock where the lock could appear to be 10678obtained before it is actually obtained. The global lock semaphore was 10679inadvertently created with one unit instead of zero units. (BZ 464) 10680Fiodor 10681Suietov. 10682 10683Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 10684during 10685a read from a buffer or region field. (BZ 458) Fiodor Suietov. 10686 10687Example Code and Data Size: These are the sizes for the OS-independent 10688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10689debug version of the code includes the debug output trace mechanism and 10690has 10691a much larger code and data size. 10692 10693 Previous Release: 10694 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10695 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10696 Current Release: 10697 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10698 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10699 10700 107012) iASL Compiler/Disassembler and Tools: 10702 10703Fixed a compilation problem with the pre-defined Resource Descriptor 10704field 10705names where an "object does not exist" error could be incorrectly 10706generated 10707if the parent ResourceTemplate pathname places the template within a 10708different namespace scope than the current scope. (BZ 7212) 10709 10710Fixed a problem where the compiler could hang after syntax errors 10711detected 10712in an ElseIf construct. (BZ 453) 10713 10714Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 10715operator. An incorrect output filename was produced when this parameter 10716was 10717a null string (""). Now, the original input filename is used as the AML 10718output filename, with an ".aml" extension. 10719 10720Implemented a generic batch command mode for the AcpiExec utility 10721(execute 10722any AML debugger command) (Valery Podrezov). 10723 10724---------------------------------------- 1072512 September 2006. Summary of changes for version 20060912: 10726 107271) ACPI CA Core Subsystem: 10728 10729Enhanced the implementation of the "serialized mode" of the interpreter 10730(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 10731specified, instead of creating a serialization semaphore per control 10732method, 10733the interpreter lock is simply no longer released before a blocking 10734operation during control method execution. This effectively makes the AML 10735Interpreter single-threaded. The overhead of a semaphore per-method is 10736eliminated. 10737 10738Fixed a regression where an error was no longer emitted if a control 10739method 10740attempts to create 2 objects of the same name. This once again returns 10741AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 10742that 10743will dynamically serialize the control method to possible prevent future 10744errors. (BZ 440) 10745 10746Integrated a fix for a problem with PCI Express HID detection in the PCI 10747Config Space setup procedure. (BZ 7145) 10748 10749Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 10750AcpiHwInitialize function - the FADT registers are now validated when the 10751table is loaded. 10752 10753Added two new warnings during FADT verification - 1) if the FADT is 10754larger 10755than the largest known FADT version, and 2) if there is a mismatch 10756between 10757a 1075832-bit block address and the 64-bit X counterpart (when both are non- 10759zero.) 10760 10761Example Code and Data Size: These are the sizes for the OS-independent 10762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10763debug version of the code includes the debug output trace mechanism and 10764has 10765a much larger code and data size. 10766 10767 Previous Release: 10768 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10769 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10770 Current Release: 10771 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10772 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10773 10774 107752) iASL Compiler/Disassembler and Tools: 10776 10777Fixed a problem with the implementation of the Switch() operator where 10778the 10779temporary variable was declared too close to the actual Switch, instead 10780of 10781at method level. This could cause a problem if the Switch() operator is 10782within a while loop, causing an error on the second iteration. (BZ 460) 10783 10784Disassembler - fix for error emitted for unknown type for target of scope 10785operator. Now, ignore it and continue. 10786 10787Disassembly of an FADT now verifies the input FADT and reports any errors 10788found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 10789 10790Disassembly of raw data buffers with byte initialization data now 10791prefixes 10792each output line with the current buffer offset. 10793 10794Disassembly of ASF! table now includes all variable-length data fields at 10795the end of some of the subtables. 10796 10797The disassembler now emits a comment if a buffer appears to be a 10798ResourceTemplate, but cannot be disassembled as such because the EndTag 10799does 10800not appear at the very end of the buffer. 10801 10802AcpiExec - Added the "-t" command line option to enable the serialized 10803mode 10804of the AML interpreter. 10805 10806---------------------------------------- 1080731 August 2006. Summary of changes for version 20060831: 10808 108091) ACPI CA Core Subsystem: 10810 10811Miscellaneous fixes for the Table Manager: 10812- Correctly initialize internal common FADT for all 64-bit "X" fields 10813- Fixed a couple table mapping issues during table load 10814- Fixed a couple alignment issues for IA64 10815- Initialize input array to zero in AcpiInitializeTables 10816- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 10817AcpiGetTableByIndex 10818 10819Change for GPE support: when a "wake" GPE is received, all wake GPEs are 10820now 10821immediately disabled to prevent the waking GPE from firing again and to 10822prevent other wake GPEs from interrupting the wake process. 10823 10824Added the AcpiGpeCount global that tracks the number of processed GPEs, 10825to 10826be used for debugging systems with a large number of ACPI interrupts. 10827 10828Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 10829both the ACPICA headers and the disassembler. 10830 10831Example Code and Data Size: These are the sizes for the OS-independent 10832acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10833debug version of the code includes the debug output trace mechanism and 10834has 10835a much larger code and data size. 10836 10837 Previous Release: 10838 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10839 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10840 Current Release: 10841 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10842 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10843 10844 108452) iASL Compiler/Disassembler and Tools: 10846 10847Disassembler support for the DMAR ACPI table. 10848 10849---------------------------------------- 1085023 August 2006. Summary of changes for version 20060823: 10851 108521) ACPI CA Core Subsystem: 10853 10854The Table Manager component has been completely redesigned and 10855reimplemented. The new design is much simpler, and reduces the overall 10856code 10857and data size of the kernel-resident ACPICA by approximately 5%. Also, it 10858is 10859now possible to obtain the ACPI tables very early during kernel 10860initialization, even before dynamic memory management is initialized. 10861(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 10862 10863Obsolete ACPICA interfaces: 10864 10865- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 10866init 10867time). 10868- AcpiLoadTable: Not needed. 10869- AcpiUnloadTable: Not needed. 10870 10871New ACPICA interfaces: 10872 10873- AcpiInitializeTables: Must be called before the table manager can be 10874used. 10875- AcpiReallocateRootTable: Used to transfer the root table to dynamically 10876allocated memory after it becomes available. 10877- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 10878tables 10879in the RSDT/XSDT. 10880 10881Other ACPICA changes: 10882 10883- AcpiGetTableHeader returns the actual mapped table header, not a copy. 10884Use 10885AcpiOsUnmapMemory to free this mapping. 10886- AcpiGetTable returns the actual mapped table. The mapping is managed 10887internally and must not be deleted by the caller. Use of this interface 10888causes no additional dynamic memory allocation. 10889- AcpiFindRootPointer: Support for physical addressing has been 10890eliminated, 10891it appeared to be unused. 10892- The interface to AcpiOsMapMemory has changed to be consistent with the 10893other allocation interfaces. 10894- The interface to AcpiOsGetRootPointer has changed to eliminate 10895unnecessary 10896parameters. 10897- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1089864- 10899bit platforms. Was previously 64 bits on all platforms. 10900- The interface to the ACPI Global Lock acquire/release macros have 10901changed 10902slightly since ACPICA no longer keeps a local copy of the FACS with a 10903constructed pointer to the actual global lock. 10904 10905Porting to the new table manager: 10906 10907- AcpiInitializeTables: Must be called once, and can be called anytime 10908during the OS initialization process. It allows the host to specify an 10909area 10910of memory to be used to store the internal version of the RSDT/XSDT (root 10911table). This allows the host to access ACPI tables before memory 10912management 10913is initialized and running. 10914- AcpiReallocateRootTable: Can be called after memory management is 10915running 10916to copy the root table to a dynamically allocated array, freeing up the 10917scratch memory specified in the call to AcpiInitializeTables. 10918- AcpiSubsystemInitialize: This existing interface is independent of the 10919Table Manager, and does not have to be called before the Table Manager 10920can 10921be used, it only must be called before the rest of ACPICA can be used. 10922- ACPI Tables: Some changes have been made to the names and structure of 10923the 10924actbl.h and actbl1.h header files and may require changes to existing 10925code. 10926For example, bitfields have been completely removed because of their lack 10927of 10928portability across C compilers. 10929- Update interfaces to the Global Lock acquire/release macros if local 10930versions are used. (see acwin.h) 10931 10932Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 10933 10934New files: tbfind.c 10935 10936Example Code and Data Size: These are the sizes for the OS-independent 10937acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10938debug version of the code includes the debug output trace mechanism and 10939has 10940a much larger code and data size. 10941 10942 Previous Release: 10943 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10944 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10945 Current Release: 10946 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10947 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10948 10949 109502) iASL Compiler/Disassembler and Tools: 10951 10952No changes for this release. 10953 10954---------------------------------------- 1095521 July 2006. Summary of changes for version 20060721: 10956 109571) ACPI CA Core Subsystem: 10958 10959The full source code for the ASL test suite used to validate the iASL 10960compiler and the ACPICA core subsystem is being released with the ACPICA 10961source for the first time. The source is contained in a separate package 10962and 10963consists of over 1100 files that exercise all ASL/AML operators. The 10964package 10965should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 10966Fiodor 10967Suietov) 10968 10969Completed a new design and implementation for support of the ACPI Global 10970Lock. On the OS side, the global lock is now treated as a standard AML 10971mutex. Previously, multiple OS threads could "acquire" the global lock 10972simultaneously. However, this could cause the BIOS to be starved out of 10973the 10974lock - especially in cases such as the Embedded Controller driver where 10975there is a tight coupling between the OS and the BIOS. 10976 10977Implemented an optimization for the ACPI Global Lock interrupt mechanism. 10978The Global Lock interrupt handler no longer queues the execution of a 10979separate thread to signal the global lock semaphore. Instead, the 10980semaphore 10981is signaled directly from the interrupt handler. 10982 10983Implemented support within the AML interpreter for package objects that 10984contain a larger AML length (package list length) than the package 10985element 10986count. In this case, the length of the package is truncated to match the 10987package element count. Some BIOS code apparently modifies the package 10988length 10989on the fly, and this change supports this behavior. Provides 10990compatibility 10991with the MS AML interpreter. (With assistance from Fiodor Suietov) 10992 10993Implemented a temporary fix for the BankValue parameter of a Bank Field 10994to 10995support all constant values, now including the Zero and One opcodes. 10996Evaluation of this parameter must eventually be converted to a full 10997TermArg 10998evaluation. A not-implemented error is now returned (temporarily) for 10999non- 11000constant values for this parameter. 11001 11002Fixed problem reports (Fiodor Suietov) integrated: 11003- Fix for premature object deletion after CopyObject on Operation Region 11004(BZ 11005350) 11006 11007Example Code and Data Size: These are the sizes for the OS-independent 11008acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11009debug version of the code includes the debug output trace mechanism and 11010has 11011a much larger code and data size. 11012 11013 Previous Release: 11014 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 11015 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 11016 Current Release: 11017 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11018 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11019 11020 110212) iASL Compiler/Disassembler and Tools: 11022 11023No changes for this release. 11024 11025---------------------------------------- 1102607 July 2006. Summary of changes for version 20060707: 11027 110281) ACPI CA Core Subsystem: 11029 11030Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 11031that do not allow the initialization of address pointers within packed 11032structures - even though the hardware itself may support misaligned 11033transfers. Some of the debug data structures are packed by default to 11034minimize size. 11035 11036Added an error message for the case where AcpiOsGetThreadId() returns 11037zero. 11038A non-zero value is required by the core ACPICA code to ensure the proper 11039operation of AML mutexes and recursive control methods. 11040 11041The DSDT is now the only ACPI table that determines whether the AML 11042interpreter is in 32-bit or 64-bit mode. Not really a functional change, 11043but 11044the hooks for per-table 32/64 switching have been removed from the code. 11045A 11046clarification to the ACPI specification is forthcoming in ACPI 3.0B. 11047 11048Fixed a possible leak of an OwnerID in the error path of 11049AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 11050deletion to a single place in AcpiTbUninstallTable to correct possible 11051leaks 11052when using the AcpiTbDeleteTablesByType interface (with assistance from 11053Lance Ortiz.) 11054 11055Fixed a problem with Serialized control methods where the semaphore 11056associated with the method could be over-signaled after multiple method 11057invocations. 11058 11059Fixed two issues with the locking of the internal namespace data 11060structure. 11061Both the Unload() operator and AcpiUnloadTable interface now lock the 11062namespace during the namespace deletion associated with the table unload 11063(with assistance from Linn Crosetto.) 11064 11065Fixed problem reports (Valery Podrezov) integrated: 11066- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 11067 11068Fixed problem reports (Fiodor Suietov) integrated: 11069- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 11070- On Address Space handler deletion, needless deactivation call (BZ 374) 11071- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 11072375) 11073- Possible memory leak, Notify sub-objects of Processor, Power, 11074ThermalZone 11075(BZ 376) 11076- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 11077- Minimum Length of RSDT should be validated (BZ 379) 11078- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 11079Handler (BZ (380) 11080- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 11081loaded 11082(BZ 381) 11083 11084Example Code and Data Size: These are the sizes for the OS-independent 11085acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11086debug version of the code includes the debug output trace mechanism and 11087has 11088a much larger code and data size. 11089 11090 Previous Release: 11091 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11092 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11093 Current Release: 11094 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11095 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11096 11097 110982) iASL Compiler/Disassembler and Tools: 11099 11100Fixed problem reports: 11101Compiler segfault when ASL contains a long (>1024) String declaration (BZ 11102436) 11103 11104---------------------------------------- 1110523 June 2006. Summary of changes for version 20060623: 11106 111071) ACPI CA Core Subsystem: 11108 11109Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 11110allows the type to be customized to the host OS for improved efficiency 11111(since a spinlock is usually a very small object.) 11112 11113Implemented support for "ignored" bits in the ACPI registers. According 11114to 11115the ACPI specification, these bits should be preserved when writing the 11116registers via a read/modify/write cycle. There are 3 bits preserved in 11117this 11118manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 11119 11120Implemented the initial deployment of new OSL mutex interfaces. Since 11121some 11122host operating systems have separate mutex and semaphore objects, this 11123feature was requested. The base code now uses mutexes (and the new mutex 11124interfaces) wherever a binary semaphore was used previously. However, for 11125the current release, the mutex interfaces are defined as macros to map 11126them 11127to the existing semaphore interfaces. Therefore, no OSL changes are 11128required 11129at this time. (See acpiosxf.h) 11130 11131Fixed several problems with the support for the control method SyncLevel 11132parameter. The SyncLevel now works according to the ACPI specification 11133and 11134in concert with the Mutex SyncLevel parameter, since the current 11135SyncLevel 11136is a property of the executing thread. Mutual exclusion for control 11137methods 11138is now implemented with a mutex instead of a semaphore. 11139 11140Fixed three instances of the use of the C shift operator in the bitfield 11141support code (exfldio.c) to avoid the use of a shift value larger than 11142the 11143target data width. The behavior of C compilers is undefined in this case 11144and 11145can cause unpredictable results, and therefore the case must be detected 11146and 11147avoided. (Fiodor Suietov) 11148 11149Added an info message whenever an SSDT or OEM table is loaded dynamically 11150via the Load() or LoadTable() ASL operators. This should improve 11151debugging 11152capability since it will show exactly what tables have been loaded 11153(beyond 11154the tables present in the RSDT/XSDT.) 11155 11156Example Code and Data Size: These are the sizes for the OS-independent 11157acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11158debug version of the code includes the debug output trace mechanism and 11159has 11160a much larger code and data size. 11161 11162 Previous Release: 11163 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11164 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11165 Current Release: 11166 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11167 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11168 11169 111702) iASL Compiler/Disassembler and Tools: 11171 11172No changes for this release. 11173 11174---------------------------------------- 1117508 June 2006. Summary of changes for version 20060608: 11176 111771) ACPI CA Core Subsystem: 11178 11179Converted the locking mutex used for the ACPI hardware to a spinlock. 11180This 11181change should eliminate all problems caused by attempting to acquire a 11182semaphore at interrupt level, and it means that all ACPICA external 11183interfaces that directly access the ACPI hardware can be safely called 11184from 11185interrupt level. OSL code that implements the semaphore interfaces should 11186be 11187able to eliminate any workarounds for being called at interrupt level. 11188 11189Fixed a regression introduced in 20060526 where the ACPI device 11190initialization could be prematurely aborted with an AE_NOT_FOUND if a 11191device 11192did not have an optional _INI method. 11193 11194Fixed an IndexField issue where a write to the Data Register should be 11195limited in size to the AccessSize (width) of the IndexField itself. (BZ 11196433, 11197Fiodor Suietov) 11198 11199Fixed problem reports (Valery Podrezov) integrated: 11200- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 11201 11202Fixed problem reports (Fiodor Suietov) integrated: 11203- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 11204 11205Removed four global mutexes that were obsolete and were no longer being 11206used. 11207 11208Example Code and Data Size: These are the sizes for the OS-independent 11209acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11210debug version of the code includes the debug output trace mechanism and 11211has 11212a much larger code and data size. 11213 11214 Previous Release: 11215 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11216 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11217 Current Release: 11218 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11219 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11220 11221 112222) iASL Compiler/Disassembler and Tools: 11223 11224Fixed a fault when using -g option (get tables from registry) on Windows 11225machines. 11226 11227Fixed problem reports integrated: 11228- Generate error if CreateField NumBits parameter is zero. (BZ 405) 11229- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 11230Suietov) 11231- Global table revision override (-r) is ignored (BZ 413) 11232 11233---------------------------------------- 1123426 May 2006. Summary of changes for version 20060526: 11235 112361) ACPI CA Core Subsystem: 11237 11238Restructured, flattened, and simplified the internal interfaces for 11239namespace object evaluation - resulting in smaller code, less CPU stack 11240use, 11241and fewer interfaces. (With assistance from Mikhail Kouzmich) 11242 11243Fixed a problem with the CopyObject operator where the first parameter 11244was 11245not typed correctly for the parser, interpreter, compiler, and 11246disassembler. 11247Caused various errors and unexpected behavior. 11248 11249Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 11250produced incorrect results with some C compilers. Since the behavior of C 11251compilers when the shift value is larger than the datatype width is 11252apparently not well defined, the interpreter now detects this condition 11253and 11254simply returns zero as expected in all such cases. (BZ 395) 11255 11256Fixed problem reports (Valery Podrezov) integrated: 11257- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 11258- Allow interpreter to handle nested method declarations (BZ 5361) 11259 11260Fixed problem reports (Fiodor Suietov) integrated: 11261- AcpiTerminate doesn't free debug memory allocation list objects (BZ 11262355) 11263- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 11264356) 11265- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 11266- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 11267- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 11268- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 11269- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 11270- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 11271- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 11272365) 11273- Status of the Global Initialization Handler call not used (BZ 366) 11274- Incorrect object parameter to Global Initialization Handler (BZ 367) 11275 11276Example Code and Data Size: These are the sizes for the OS-independent 11277acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11278debug version of the code includes the debug output trace mechanism and 11279has 11280a much larger code and data size. 11281 11282 Previous Release: 11283 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11284 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11285 Current Release: 11286 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11287 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11288 11289 112902) iASL Compiler/Disassembler and Tools: 11291 11292Modified the parser to allow the names IO, DMA, and IRQ to be used as 11293namespace identifiers with no collision with existing resource descriptor 11294macro names. This provides compatibility with other ASL compilers and is 11295most useful for disassembly/recompilation of existing tables without 11296parse 11297errors. (With assistance from Thomas Renninger) 11298 11299Disassembler: fixed an incorrect disassembly problem with the 11300DataTableRegion and CopyObject operators. Fixed a possible fault during 11301disassembly of some Alias operators. 11302 11303---------------------------------------- 1130412 May 2006. Summary of changes for version 20060512: 11305 113061) ACPI CA Core Subsystem: 11307 11308Replaced the AcpiOsQueueForExecution interface with a new interface named 11309AcpiOsExecute. The major difference is that the new interface does not 11310have 11311a Priority parameter, this appeared to be useless and has been replaced 11312by 11313a 11314Type parameter. The Type tells the host what type of execution is being 11315requested, such as global lock handler, notify handler, GPE handler, etc. 11316This allows the host to queue and execute the request as appropriate for 11317the 11318request type, possibly using different work queues and different 11319priorities 11320for the various request types. This enables fixes for multithreading 11321deadlock problems such as BZ #5534, and will require changes to all 11322existing 11323OS interface layers. (Alexey Starikovskiy and Bob Moore) 11324 11325Fixed a possible memory leak associated with the support for the so- 11326called 11327"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 11328Suietov) 11329 11330Fixed a problem with the Load() operator where a table load from an 11331operation region could overwrite an internal table buffer by up to 7 11332bytes 11333and cause alignment faults on IPF systems. (With assistance from Luming 11334Yu) 11335 11336Example Code and Data Size: These are the sizes for the OS-independent 11337acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11338debug version of the code includes the debug output trace mechanism and 11339has 11340a much larger code and data size. 11341 11342 Previous Release: 11343 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11344 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11345 Current Release: 11346 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11347 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11348 11349 11350 113512) iASL Compiler/Disassembler and Tools: 11352 11353Disassembler: Implemented support to cross reference the internal 11354namespace 11355and automatically generate ASL External() statements for symbols not 11356defined 11357within the current table being disassembled. This will simplify the 11358disassembly and recompilation of interdependent tables such as SSDTs 11359since 11360these statements will no longer have to be added manually. 11361 11362Disassembler: Implemented experimental support to automatically detect 11363invocations of external control methods and generate appropriate 11364External() 11365statements. This is problematic because the AML cannot be correctly 11366parsed 11367until the number of arguments for each control method is known. 11368Currently, 11369standalone method invocations and invocations as the source operand of a 11370Store() statement are supported. 11371 11372Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 11373LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 11374LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 11375more readable and likely closer to the original ASL source. 11376 11377---------------------------------------- 1137821 April 2006. Summary of changes for version 20060421: 11379 113801) ACPI CA Core Subsystem: 11381 11382Removed a device initialization optimization introduced in 20051216 where 11383the _STA method was not run unless an _INI was also present for the same 11384device. This optimization could cause problems because it could allow 11385_INI 11386methods to be run within a not-present device subtree. (If a not-present 11387device had no _INI, _STA would not be run, the not-present status would 11388not 11389be discovered, and the children of the device would be incorrectly 11390traversed.) 11391 11392Implemented a new _STA optimization where namespace subtrees that do not 11393contain _INI are identified and ignored during device initialization. 11394Selectively running _STA can significantly improve boot time on large 11395machines (with assistance from Len Brown.) 11396 11397Implemented support for the device initialization case where the returned 11398_STA flags indicate a device not-present but functioning. In this case, 11399_INI 11400is not run, but the device children are examined for presence, as per the 11401ACPI specification. 11402 11403Implemented an additional change to the IndexField support in order to 11404conform to MS behavior. The value written to the Index Register is not 11405simply a byte offset, it is a byte offset in units of the access width of 11406the parent Index Field. (Fiodor Suietov) 11407 11408Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 11409interface is called during the creation of all AML operation regions, and 11410allows the host OS to exert control over what addresses it will allow the 11411AML code to access. Operation Regions whose addresses are disallowed will 11412cause a runtime exception when they are actually accessed (will not 11413affect 11414or abort table loading.) See oswinxf or osunixxf for an example 11415implementation. 11416 11417Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 11418interface allows the host OS to match the various "optional" 11419interface/behavior strings for the _OSI predefined control method as 11420appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 11421for an example implementation. 11422 11423Restructured and corrected various problems in the exception handling 11424code 11425paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 11426(with assistance from Takayoshi Kochi.) 11427 11428Modified the Linux source converter to ignore quoted string literals 11429while 11430converting identifiers from mixed to lower case. This will correct 11431problems 11432with the disassembler and other areas where such strings must not be 11433modified. 11434 11435The ACPI_FUNCTION_* macros no longer require quotes around the function 11436name. This allows the Linux source converter to convert the names, now 11437that 11438the converter ignores quoted strings. 11439 11440Example Code and Data Size: These are the sizes for the OS-independent 11441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11442debug version of the code includes the debug output trace mechanism and 11443has 11444a much larger code and data size. 11445 11446 Previous Release: 11447 11448 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11449 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11450 Current Release: 11451 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11452 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11453 11454 114552) iASL Compiler/Disassembler and Tools: 11456 11457Implemented 3 new warnings for iASL, and implemented multiple warning 11458levels 11459(w2 flag). 11460 114611) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 11462not 11463WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 11464check for the possible timeout, a warning is issued. 11465 114662) Useless operators: If an ASL operator does not specify an optional 11467target 11468operand and it also does not use the function return value from the 11469operator, a warning is issued since the operator effectively does 11470nothing. 11471 114723) Unreferenced objects: If a namespace object is created, but never 11473referenced, a warning is issued. This is a warning level 2 since there 11474are 11475cases where this is ok, such as when a secondary table is loaded that 11476uses 11477the unreferenced objects. Even so, care is taken to only flag objects 11478that 11479don't look like they will ever be used. For example, the reserved methods 11480(starting with an underscore) are usually not referenced because it is 11481expected that the OS will invoke them. 11482 11483---------------------------------------- 1148431 March 2006. Summary of changes for version 20060331: 11485 114861) ACPI CA Core Subsystem: 11487 11488Implemented header file support for the following additional ACPI tables: 11489ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 11490support, 11491all current and known ACPI tables are now defined in the ACPICA headers 11492and 11493are available for use by device drivers and other software. 11494 11495Implemented support to allow tables that contain ACPI names with invalid 11496characters to be loaded. Previously, this would cause the table load to 11497fail, but since there are several known cases of such tables on existing 11498machines, this change was made to enable ACPI support for them. Also, 11499this 11500matches the behavior of the Microsoft ACPI implementation. 11501 11502Fixed a couple regressions introduced during the memory optimization in 11503the 1150420060317 release. The namespace node definition required additional 11505reorganization and an internal datatype that had been changed to 8-bit 11506was 11507restored to 32-bit. (Valery Podrezov) 11508 11509Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 11510could be passed through to AcpiOsReleaseObject which is unexpected. Such 11511null pointers are now trapped and ignored, matching the behavior of the 11512previous implementation before the deployment of AcpiOsReleaseObject. 11513(Valery Podrezov, Fiodor Suietov) 11514 11515Fixed a memory mapping leak during the deletion of a SystemMemory 11516operation 11517region where a cached memory mapping was not deleted. This became a 11518noticeable problem for operation regions that are defined within 11519frequently 11520used control methods. (Dana Meyers) 11521 11522Reorganized the ACPI table header files into two main files: one for the 11523ACPI tables consumed by the ACPICA core, and another for the 11524miscellaneous 11525ACPI tables that are consumed by the drivers and other software. The 11526various 11527FADT definitions were merged into one common section and three different 11528tables (ACPI 1.0, 1.0+, and 2.0) 11529 11530Example Code and Data Size: These are the sizes for the OS-independent 11531acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11532debug version of the code includes the debug output trace mechanism and 11533has 11534a much larger code and data size. 11535 11536 Previous Release: 11537 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11538 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11539 Current Release: 11540 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11541 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11542 11543 115442) iASL Compiler/Disassembler and Tools: 11545 11546Disassembler: Implemented support to decode and format all non-AML ACPI 11547tables (tables other than DSDTs and SSDTs.) This includes the new tables 11548added to the ACPICA headers, therefore all current and known ACPI tables 11549are 11550supported. 11551 11552Disassembler: The change to allow ACPI names with invalid characters also 11553enables the disassembly of such tables. Invalid characters within names 11554are 11555changed to '*' to make the name printable; the iASL compiler will still 11556generate an error for such names, however, since this is an invalid ACPI 11557character. 11558 11559Implemented an option for AcpiXtract (-a) to extract all tables found in 11560the 11561input file. The default invocation extracts only the DSDTs and SSDTs. 11562 11563Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 11564makefile for the AcpiXtract utility. 11565 11566---------------------------------------- 1156717 March 2006. Summary of changes for version 20060317: 11568 115691) ACPI CA Core Subsystem: 11570 11571Implemented the use of a cache object for all internal namespace nodes. 11572Since there are about 1000 static nodes in a typical system, this will 11573decrease memory use for cache implementations that minimize per- 11574allocation 11575overhead (such as a slab allocator.) 11576 11577Removed the reference count mechanism for internal namespace nodes, since 11578it 11579was deemed unnecessary. This reduces the size of each namespace node by 11580about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 11581case, 11582and 32 bytes for the 64-bit case. 11583 11584Optimized several internal data structures to reduce object size on 64- 11585bit 11586platforms by packing data within the 64-bit alignment. This includes the 11587frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 11588instances corresponding to the namespace objects. 11589 11590Added two new strings for the predefined _OSI method: "Windows 2001.1 11591SP1" 11592and "Windows 2006". 11593 11594Split the allocation tracking mechanism out to a separate file, from 11595utalloc.c to uttrack.c. This mechanism appears to be only useful for 11596application-level code. Kernels may wish to not include uttrack.c in 11597distributions. 11598 11599Removed all remnants of the obsolete ACPI_REPORT_* macros and the 11600associated 11601code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 11602macros.) 11603 11604Code and Data Size: These are the sizes for the acpica.lib produced by 11605the 11606Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11607ACPI 11608driver or OSPM code. The debug version of the code includes the debug 11609output 11610trace mechanism and has a much larger code and data size. Note that these 11611values will vary depending on the efficiency of the compiler and the 11612compiler options used during generation. 11613 11614 Previous Release: 11615 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11616 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11617 Current Release: 11618 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11619 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11620 11621 116222) iASL Compiler/Disassembler and Tools: 11623 11624Implemented an ANSI C version of the acpixtract utility. This version 11625will 11626automatically extract the DSDT and all SSDTs from the input acpidump text 11627file and dump the binary output to separate files. It can also display a 11628summary of the input file including the headers for each table found and 11629will extract any single ACPI table, with any signature. (See 11630source/tools/acpixtract) 11631 11632---------------------------------------- 1163310 March 2006. Summary of changes for version 20060310: 11634 116351) ACPI CA Core Subsystem: 11636 11637Tagged all external interfaces to the subsystem with the new 11638ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 11639assist 11640kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 11641macro. The default definition is NULL. 11642 11643Added the ACPI_THREAD_ID type for the return value from 11644AcpiOsGetThreadId. 11645This allows the host to define this as necessary to simplify kernel 11646integration. The default definition is ACPI_NATIVE_UINT. 11647 11648Fixed two interpreter problems related to error processing, the deletion 11649of 11650objects, and placing invalid pointers onto the internal operator result 11651stack. BZ 6028, 6151 (Valery Podrezov) 11652 11653Increased the reference count threshold where a warning is emitted for 11654large 11655reference counts in order to eliminate unnecessary warnings on systems 11656with 11657large namespaces (especially 64-bit.) Increased the value from 0x400 to 116580x800. 11659 11660Due to universal disagreement as to the meaning of the 'c' in the 11661calloc() 11662function, the ACPI_MEM_CALLOCATE macro has been renamed to 11663ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 11664ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 11665ACPI_FREE. 11666 11667Code and Data Size: These are the sizes for the acpica.lib produced by 11668the 11669Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11670ACPI 11671driver or OSPM code. The debug version of the code includes the debug 11672output 11673trace mechanism and has a much larger code and data size. Note that these 11674values will vary depending on the efficiency of the compiler and the 11675compiler options used during generation. 11676 11677 Previous Release: 11678 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11679 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11680 Current Release: 11681 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11682 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11683 11684 116852) iASL Compiler/Disassembler: 11686 11687Disassembler: implemented support for symbolic resource descriptor 11688references. If a CreateXxxxField operator references a fixed offset 11689within 11690a 11691resource descriptor, a name is assigned to the descriptor and the offset 11692is 11693translated to the appropriate resource tag and pathname. The addition of 11694this support brings the disassembled code very close to the original ASL 11695source code and helps eliminate run-time errors when the disassembled 11696code 11697is modified (and recompiled) in such a way as to invalidate the original 11698fixed offsets. 11699 11700Implemented support for a Descriptor Name as the last parameter to the 11701ASL 11702Register() macro. This parameter was inadvertently left out of the ACPI 11703specification, and will be added for ACPI 3.0b. 11704 11705Fixed a problem where the use of the "_OSI" string (versus the full path 11706"\_OSI") caused an internal compiler error. ("No back ptr to op") 11707 11708Fixed a problem with the error message that occurs when an invalid string 11709is 11710used for a _HID object (such as one with an embedded asterisk: 11711"*PNP010A".) 11712The correct message is now displayed. 11713 11714---------------------------------------- 1171517 February 2006. Summary of changes for version 20060217: 11716 117171) ACPI CA Core Subsystem: 11718 11719Implemented a change to the IndexField support to match the behavior of 11720the 11721Microsoft AML interpreter. The value written to the Index register is now 11722a 11723byte offset, no longer an index based upon the width of the Data 11724register. 11725This should fix IndexField problems seen on some machines where the Data 11726register is not exactly one byte wide. The ACPI specification will be 11727clarified on this point. 11728 11729Fixed a problem where several resource descriptor types could overrun the 11730internal descriptor buffer due to size miscalculation: VendorShort, 11731VendorLong, and Interrupt. This was noticed on IA64 machines, but could 11732affect all platforms. 11733 11734Fixed a problem where individual resource descriptors were misaligned 11735within 11736the internal buffer, causing alignment faults on IA64 platforms. 11737 11738Code and Data Size: These are the sizes for the acpica.lib produced by 11739the 11740Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11741ACPI 11742driver or OSPM code. The debug version of the code includes the debug 11743output 11744trace mechanism and has a much larger code and data size. Note that these 11745values will vary depending on the efficiency of the compiler and the 11746compiler options used during generation. 11747 11748 Previous Release: 11749 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11750 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11751 Current Release: 11752 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11753 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11754 11755 117562) iASL Compiler/Disassembler: 11757 11758Implemented support for new reserved names: _WDG and _WED are Microsoft 11759extensions for Windows Instrumentation Management, _TDL is a new ACPI- 11760defined method (Throttling Depth Limit.) 11761 11762Fixed a problem where a zero-length VendorShort or VendorLong resource 11763descriptor was incorrectly emitted as a descriptor of length one. 11764 11765---------------------------------------- 1176610 February 2006. Summary of changes for version 20060210: 11767 117681) ACPI CA Core Subsystem: 11769 11770Removed a couple of extraneous ACPI_ERROR messages that appeared during 11771normal execution. These became apparent after the conversion from 11772ACPI_DEBUG_PRINT. 11773 11774Fixed a problem where the CreateField operator could hang if the BitIndex 11775or 11776NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 11777 11778Fixed a problem where a DeRefOf operation on a buffer object incorrectly 11779failed with an exception. This also fixes a couple of related RefOf and 11780DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 11781 11782Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 11783of 11784AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 11785BZ 117865480) 11787 11788Implemented a memory cleanup at the end of the execution of each 11789iteration 11790of an AML While() loop, preventing the accumulation of outstanding 11791objects. 11792(Valery Podrezov, BZ 5427) 11793 11794Eliminated a chunk of duplicate code in the object resolution code. 11795(Valery 11796Podrezov, BZ 5336) 11797 11798Fixed several warnings during the 64-bit code generation. 11799 11800The AcpiSrc source code conversion tool now inserts one line of 11801whitespace 11802after an if() statement that is followed immediately by a comment, 11803improving 11804readability of the Linux code. 11805 11806Code and Data Size: The current and previous library sizes for the core 11807subsystem are shown below. These are the code and data sizes for the 11808acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11809These 11810values do not include any ACPI driver or OSPM code. The debug version of 11811the 11812code includes the debug output trace mechanism and has a much larger code 11813and data size. Note that these values will vary depending on the 11814efficiency 11815of the compiler and the compiler options used during generation. 11816 11817 Previous Release: 11818 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11819 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11820 Current Release: 11821 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11822 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11823 11824 118252) iASL Compiler/Disassembler: 11826 11827Fixed a problem with the disassembly of a BankField operator with a 11828complex 11829expression for the BankValue parameter. 11830 11831---------------------------------------- 1183227 January 2006. Summary of changes for version 20060127: 11833 118341) ACPI CA Core Subsystem: 11835 11836Implemented support in the Resource Manager to allow unresolved 11837namestring 11838references within resource package objects for the _PRT method. This 11839support 11840is in addition to the previously implemented unresolved reference support 11841within the AML parser. If the interpreter slack mode is enabled, these 11842unresolved references will be passed through to the caller as a NULL 11843package 11844entry. 11845 11846Implemented and deployed new macros and functions for error and warning 11847messages across the subsystem. These macros are simpler and generate less 11848code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 11849ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 11850macros remain defined to allow ACPI drivers time to migrate to the new 11851macros. 11852 11853Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 11854the 11855Acquire/Release Lock OSL interfaces. 11856 11857Fixed a problem where Alias ASL operators are sometimes not correctly 11858resolved, in both the interpreter and the iASL compiler. 11859 11860Fixed several problems with the implementation of the 11861ConcatenateResTemplate 11862ASL operator. As per the ACPI specification, zero length buffers are now 11863treated as a single EndTag. One-length buffers always cause a fatal 11864exception. Non-zero length buffers that do not end with a full 2-byte 11865EndTag 11866cause a fatal exception. 11867 11868Fixed a possible structure overwrite in the AcpiGetObjectInfo external 11869interface. (With assistance from Thomas Renninger) 11870 11871Code and Data Size: The current and previous library sizes for the core 11872subsystem are shown below. These are the code and data sizes for the 11873acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11874These 11875values do not include any ACPI driver or OSPM code. The debug version of 11876the 11877code includes the debug output trace mechanism and has a much larger code 11878and data size. Note that these values will vary depending on the 11879efficiency 11880of the compiler and the compiler options used during generation. 11881 11882 Previous Release: 11883 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11884 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11885 Current Release: 11886 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11887 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11888 11889 118902) iASL Compiler/Disassembler: 11891 11892Fixed an internal error that was generated for any forward references to 11893ASL 11894Alias objects. 11895 11896---------------------------------------- 1189713 January 2006. Summary of changes for version 20060113: 11898 118991) ACPI CA Core Subsystem: 11900 11901Added 2006 copyright to all module headers and signons. This affects 11902virtually every file in the ACPICA core subsystem, iASL compiler, and the 11903utilities. 11904 11905Enhanced the ACPICA error reporting in order to simplify user migration 11906to 11907the non-debug version of ACPICA. Replaced all instances of the 11908ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 11909debug 11910levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 11911respectively. This preserves all error and warning messages in the non- 11912debug 11913version of the ACPICA code (this has been referred to as the "debug lite" 11914option.) Over 200 cases were converted to create a total of over 380 11915error/warning messages across the ACPICA code. This increases the code 11916and 11917data size of the default non-debug version of the code somewhat (about 1191813K), 11919but all error/warning reporting may be disabled if desired (and code 11920eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 11921configuration option. The size of the debug version of ACPICA remains 11922about 11923the same. 11924 11925Fixed a memory leak within the AML Debugger "Set" command. One object was 11926not properly deleted for every successful invocation of the command. 11927 11928Code and Data Size: The current and previous library sizes for the core 11929subsystem are shown below. These are the code and data sizes for the 11930acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11931These 11932values do not include any ACPI driver or OSPM code. The debug version of 11933the 11934code includes the debug output trace mechanism and has a much larger code 11935and data size. Note that these values will vary depending on the 11936efficiency 11937of the compiler and the compiler options used during generation. 11938 11939 Previous Release: 11940 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11941 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11942 Current Release: 11943 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11944 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11945 11946 119472) iASL Compiler/Disassembler: 11948 11949The compiler now officially supports the ACPI 3.0a specification that was 11950released on December 30, 2005. (Specification is available at 11951www.acpi.info) 11952 11953---------------------------------------- 1195416 December 2005. Summary of changes for version 20051216: 11955 119561) ACPI CA Core Subsystem: 11957 11958Implemented optional support to allow unresolved names within ASL Package 11959objects. A null object is inserted in the package when a named reference 11960cannot be located in the current namespace. Enabled via the interpreter 11961slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 11962machines 11963that contain such code. 11964 11965Implemented an optimization to the initialization sequence that can 11966improve 11967boot time. During ACPI device initialization, the _STA method is now run 11968if 11969and only if the _INI method exists. The _STA method is used to determine 11970if 11971the device is present; An _INI can only be run if _STA returns present, 11972but 11973it is a waste of time to run the _STA method if the _INI does not exist. 11974(Prototype and assistance from Dong Wei) 11975 11976Implemented use of the C99 uintptr_t for the pointer casting macros if it 11977is 11978available in the current compiler. Otherwise, the default (void *) cast 11979is 11980used as before. 11981 11982Fixed some possible memory leaks found within the execution path of the 11983Break, Continue, If, and CreateField operators. (Valery Podrezov) 11984 11985Fixed a problem introduced in the 20051202 release where an exception is 11986generated during method execution if a control method attempts to declare 11987another method. 11988 11989Moved resource descriptor string constants that are used by both the AML 11990disassembler and AML debugger to the common utilities directory so that 11991these components are independent. 11992 11993Implemented support in the AcpiExec utility (-e switch) to globally 11994ignore 11995exceptions during control method execution (method is not aborted.) 11996 11997Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 11998generation. 11999 12000Code and Data Size: The current and previous library sizes for the core 12001subsystem are shown below. These are the code and data sizes for the 12002acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12003These 12004values do not include any ACPI driver or OSPM code. The debug version of 12005the 12006code includes the debug output trace mechanism and has a much larger code 12007and data size. Note that these values will vary depending on the 12008efficiency 12009of the compiler and the compiler options used during generation. 12010 12011 Previous Release: 12012 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12013 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12014 Current Release: 12015 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12016 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12017 12018 120192) iASL Compiler/Disassembler: 12020 12021Fixed a problem where a CPU stack overflow fault could occur if a 12022recursive 12023method call was made from within a Return statement. 12024 12025---------------------------------------- 1202602 December 2005. Summary of changes for version 20051202: 12027 120281) ACPI CA Core Subsystem: 12029 12030Modified the parsing of control methods to no longer create namespace 12031objects during the first pass of the parse. Objects are now created only 12032during the execute phase, at the moment the namespace creation operator 12033is 12034encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 12035This 12036should eliminate ALREADY_EXISTS exceptions seen on some machines where 12037reentrant control methods are protected by an AML mutex. The mutex will 12038now 12039correctly block multiple threads from attempting to create the same 12040object 12041more than once. 12042 12043Increased the number of available Owner Ids for namespace object tracking 12044from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 12045on 12046some machines with a large number of ACPI tables (either static or 12047dynamic). 12048 12049Fixed a problem with the AcpiExec utility where a fault could occur when 12050the 12051-b switch (batch mode) is used. 12052 12053Enhanced the namespace dump routine to output the owner ID for each 12054namespace object. 12055 12056Code and Data Size: The current and previous library sizes for the core 12057subsystem are shown below. These are the code and data sizes for the 12058acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12059These 12060values do not include any ACPI driver or OSPM code. The debug version of 12061the 12062code includes the debug output trace mechanism and has a much larger code 12063and data size. Note that these values will vary depending on the 12064efficiency 12065of the compiler and the compiler options used during generation. 12066 12067 Previous Release: 12068 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12069 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12070 Current Release: 12071 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12072 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12073 12074 120752) iASL Compiler/Disassembler: 12076 12077Fixed a parse error during compilation of certain Switch/Case constructs. 12078To 12079simplify the parse, the grammar now allows for multiple Default 12080statements 12081and this error is now detected and flagged during the analysis phase. 12082 12083Disassembler: The disassembly now includes the contents of the original 12084table header within a comment at the start of the file. This includes the 12085name and version of the original ASL compiler. 12086 12087---------------------------------------- 1208817 November 2005. Summary of changes for version 20051117: 12089 120901) ACPI CA Core Subsystem: 12091 12092Fixed a problem in the AML parser where the method thread count could be 12093decremented below zero if any errors occurred during the method parse 12094phase. 12095This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 12096machines. 12097This also fixed a related regression with the mechanism that detects and 12098corrects methods that cannot properly handle reentrancy (related to the 12099deployment of the new OwnerId mechanism.) 12100 12101Eliminated the pre-parsing of control methods (to detect errors) during 12102table load. Related to the problem above, this was causing unwind issues 12103if 12104any errors occurred during the parse, and it seemed to be overkill. A 12105table 12106load should not be aborted if there are problems with any single control 12107method, thus rendering this feature rather pointless. 12108 12109Fixed a problem with the new table-driven resource manager where an 12110internal 12111buffer overflow could occur for small resource templates. 12112 12113Implemented a new external interface, AcpiGetVendorResource. This 12114interface 12115will find and return a vendor-defined resource descriptor within a _CRS 12116or 12117_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 12118Helgaas. 12119 12120Removed the length limit (200) on string objects as per the upcoming ACPI 121213.0A specification. This affects the following areas of the interpreter: 121221) 12123any implicit conversion of a Buffer to a String, 2) a String object 12124result 12125of the ASL Concatenate operator, 3) the String object result of the ASL 12126ToString operator. 12127 12128Fixed a problem in the Windows OS interface layer (OSL) where a 12129WAIT_FOREVER 12130on a semaphore object would incorrectly timeout. This allows the 12131multithreading features of the AcpiExec utility to work properly under 12132Windows. 12133 12134Updated the Linux makefiles for the iASL compiler and AcpiExec to include 12135the recently added file named "utresrc.c". 12136 12137Code and Data Size: The current and previous library sizes for the core 12138subsystem are shown below. These are the code and data sizes for the 12139acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12140These 12141values do not include any ACPI driver or OSPM code. The debug version of 12142the 12143code includes the debug output trace mechanism and has a much larger code 12144and data size. Note that these values will vary depending on the 12145efficiency 12146of the compiler and the compiler options used during generation. 12147 12148 Previous Release: 12149 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12150 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12151 Current Release: 12152 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12153 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12154 12155 121562) iASL Compiler/Disassembler: 12157 12158Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 12159specification. For the iASL compiler, this means that string literals 12160within 12161the source ASL can be of any length. 12162 12163Enhanced the listing output to dump the AML code for resource descriptors 12164immediately after the ASL code for each descriptor, instead of in a block 12165at 12166the end of the entire resource template. 12167 12168Enhanced the compiler debug output to dump the entire original parse tree 12169constructed during the parse phase, before any transforms are applied to 12170the 12171tree. The transformed tree is dumped also. 12172 12173---------------------------------------- 1217402 November 2005. Summary of changes for version 20051102: 12175 121761) ACPI CA Core Subsystem: 12177 12178Modified the subsystem initialization sequence to improve GPE support. 12179The 12180GPE initialization has been split into two parts in order to defer 12181execution 12182of the _PRW methods (Power Resources for Wake) until after the hardware 12183is 12184fully initialized and the SCI handler is installed. This allows the _PRW 12185methods to access fields protected by the Global Lock. This will fix 12186systems 12187where a NO_GLOBAL_LOCK exception has been seen during initialization. 12188 12189Converted the ACPI internal object disassemble and display code within 12190the 12191AML debugger to fully table-driven operation, reducing code size and 12192increasing maintainability. 12193 12194Fixed a regression with the ConcatenateResTemplate() ASL operator 12195introduced 12196in the 20051021 release. 12197 12198Implemented support for "local" internal ACPI object types within the 12199debugger "Object" command and the AcpiWalkNamespace external interfaces. 12200These local types include RegionFields, BankFields, IndexFields, Alias, 12201and 12202reference objects. 12203 12204Moved common AML resource handling code into a new file, "utresrc.c". 12205This 12206code is shared by both the Resource Manager and the AML Debugger. 12207 12208Code and Data Size: The current and previous library sizes for the core 12209subsystem are shown below. These are the code and data sizes for the 12210acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12211These 12212values do not include any ACPI driver or OSPM code. The debug version of 12213the 12214code includes the debug output trace mechanism and has a much larger code 12215and data size. Note that these values will vary depending on the 12216efficiency 12217of the compiler and the compiler options used during generation. 12218 12219 Previous Release: 12220 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12221 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12222 Current Release: 12223 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12224 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12225 12226 122272) iASL Compiler/Disassembler: 12228 12229Fixed a problem with very large initializer lists (more than 4000 12230elements) 12231for both Buffer and Package objects where the parse stack could overflow. 12232 12233Enhanced the pre-compile source code scan for non-ASCII characters to 12234ignore 12235characters within comment fields. The scan is now always performed and is 12236no 12237longer optional, detecting invalid characters within a source file 12238immediately rather than during the parse phase or later. 12239 12240Enhanced the ASL grammar definition to force early reductions on all 12241list- 12242style grammar elements so that the overall parse stack usage is greatly 12243reduced. This should improve performance and reduce the possibility of 12244parse 12245stack overflow. 12246 12247Eliminated all reduce/reduce conflicts in the iASL parser generation. 12248Also, 12249with the addition of a %expected statement, the compiler generates from 12250source with no warnings. 12251 12252Fixed a possible segment fault in the disassembler if the input filename 12253does not contain a "dot" extension (Thomas Renninger). 12254 12255---------------------------------------- 1225621 October 2005. Summary of changes for version 20051021: 12257 122581) ACPI CA Core Subsystem: 12259 12260Implemented support for the EM64T and other x86-64 processors. This 12261essentially entails recognizing that these processors support non-aligned 12262memory transfers. Previously, all 64-bit processors were assumed to lack 12263hardware support for non-aligned transfers. 12264 12265Completed conversion of the Resource Manager to nearly full table-driven 12266operation. Specifically, the resource conversion code (convert AML to 12267internal format and the reverse) and the debug code to dump internal 12268resource descriptors are fully table-driven, reducing code and data size 12269and 12270improving maintainability. 12271 12272The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 12273word 12274on 64-bit processors instead of a fixed 32-bit word. (With assistance 12275from 12276Alexey Starikovskiy) 12277 12278Implemented support within the resource conversion code for the Type- 12279Specific byte within the various ACPI 3.0 *WordSpace macros. 12280 12281Fixed some issues within the resource conversion code for the type- 12282specific 12283flags for both Memory and I/O address resource descriptors. For Memory, 12284implemented support for the MTP and TTP flags. For I/O, split the TRS and 12285TTP flags into two separate fields. 12286 12287Code and Data Size: The current and previous library sizes for the core 12288subsystem are shown below. These are the code and data sizes for the 12289acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12290These 12291values do not include any ACPI driver or OSPM code. The debug version of 12292the 12293code includes the debug output trace mechanism and has a much larger code 12294and data size. Note that these values will vary depending on the 12295efficiency 12296of the compiler and the compiler options used during generation. 12297 12298 Previous Release: 12299 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12300 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12301 Current Release: 12302 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12303 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12304 12305 12306 123072) iASL Compiler/Disassembler: 12308 12309Relaxed a compiler restriction that disallowed a ResourceIndex byte if 12310the 12311corresponding ResourceSource string was not also present in a resource 12312descriptor declaration. This restriction caused problems with existing 12313AML/ASL code that includes the Index byte without the string. When such 12314AML 12315was disassembled, it could not be compiled without modification. Further, 12316the modified code created a resource template with a different size than 12317the 12318original, breaking code that used fixed offsets into the resource 12319template 12320buffer. 12321 12322Removed a recent feature of the disassembler to ignore a lone 12323ResourceIndex 12324byte. This byte is now emitted if present so that the exact AML can be 12325reproduced when the disassembled code is recompiled. 12326 12327Improved comments and text alignment for the resource descriptor code 12328emitted by the disassembler. 12329 12330Implemented disassembler support for the ACPI 3.0 AccessSize field within 12331a 12332Register() resource descriptor. 12333 12334---------------------------------------- 1233530 September 2005. Summary of changes for version 20050930: 12336 123371) ACPI CA Core Subsystem: 12338 12339Completed a major overhaul of the Resource Manager code - specifically, 12340optimizations in the area of the AML/internal resource conversion code. 12341The 12342code has been optimized to simplify and eliminate duplicated code, CPU 12343stack 12344use has been decreased by optimizing function parameters and local 12345variables, and naming conventions across the manager have been 12346standardized 12347for clarity and ease of maintenance (this includes function, parameter, 12348variable, and struct/typedef names.) The update may force changes in some 12349driver code, depending on how resources are handled by the host OS. 12350 12351All Resource Manager dispatch and information tables have been moved to a 12352single location for clarity and ease of maintenance. One new file was 12353created, named "rsinfo.c". 12354 12355The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 12356guarantee that the argument is not evaluated twice, making them less 12357prone 12358to macro side-effects. However, since there exists the possibility of 12359additional stack use if a particular compiler cannot optimize them (such 12360as 12361in the debug generation case), the original macros are optionally 12362available. 12363Note that some invocations of the return_VALUE macro may now cause size 12364mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 12365to 12366eliminate these. (From Randy Dunlap) 12367 12368Implemented a new mechanism to enable debug tracing for individual 12369control 12370methods. A new external interface, AcpiDebugTrace, is provided to enable 12371this mechanism. The intent is to allow the host OS to easily enable and 12372disable tracing for problematic control methods. This interface can be 12373easily exposed to a user or debugger interface if desired. See the file 12374psxface.c for details. 12375 12376AcpiUtCallocate will now return a valid pointer if a length of zero is 12377specified - a length of one is used and a warning is issued. This matches 12378the behavior of AcpiUtAllocate. 12379 12380Code and Data Size: The current and previous library sizes for the core 12381subsystem are shown below. These are the code and data sizes for the 12382acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12383These 12384values do not include any ACPI driver or OSPM code. The debug version of 12385the 12386code includes the debug output trace mechanism and has a much larger code 12387and data size. Note that these values will vary depending on the 12388efficiency 12389of the compiler and the compiler options used during generation. 12390 12391 Previous Release: 12392 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12393 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12394 Current Release: 12395 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12396 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12397 12398 123992) iASL Compiler/Disassembler: 12400 12401A remark is issued if the effective compile-time length of a package or 12402buffer is zero. Previously, this was a warning. 12403 12404---------------------------------------- 1240516 September 2005. Summary of changes for version 20050916: 12406 124071) ACPI CA Core Subsystem: 12408 12409Fixed a problem within the Resource Manager where support for the Generic 12410Register descriptor was not fully implemented. This descriptor is now 12411fully 12412recognized, parsed, disassembled, and displayed. 12413 12414Completely restructured the Resource Manager code to utilize table-driven 12415dispatch and lookup, eliminating many of the large switch() statements. 12416This 12417reduces overall subsystem code size and code complexity. Affects the 12418resource parsing and construction, disassembly, and debug dump output. 12419 12420Cleaned up and restructured the debug dump output for all resource 12421descriptors. Improved readability of the output and reduced code size. 12422 12423Fixed a problem where changes to internal data structures caused the 12424optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 12425 12426Code and Data Size: The current and previous library sizes for the core 12427subsystem are shown below. These are the code and data sizes for the 12428acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12429These 12430values do not include any ACPI driver or OSPM code. The debug version of 12431the 12432code includes the debug output trace mechanism and has a much larger code 12433and data size. Note that these values will vary depending on the 12434efficiency 12435of the compiler and the compiler options used during generation. 12436 12437 Previous Release: 12438 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12439 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12440 Current Release: 12441 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12442 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12443 12444 124452) iASL Compiler/Disassembler: 12446 12447Updated the disassembler to automatically insert an EndDependentFn() 12448macro 12449into the ASL stream if this macro is missing in the original AML code, 12450simplifying compilation of the resulting ASL module. 12451 12452Fixed a problem in the disassembler where a disassembled ResourceSource 12453string (within a large resource descriptor) was not surrounded by quotes 12454and 12455not followed by a comma, causing errors when the resulting ASL module was 12456compiled. Also, escape sequences within a ResourceSource string are now 12457handled correctly (especially "\\") 12458 12459---------------------------------------- 1246002 September 2005. Summary of changes for version 20050902: 12461 124621) ACPI CA Core Subsystem: 12463 12464Fixed a problem with the internal Owner ID allocation and deallocation 12465mechanisms for control method execution and recursive method invocation. 12466This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 12467messages seen on some systems. Recursive method invocation depth is 12468currently limited to 255. (Alexey Starikovskiy) 12469 12470Completely eliminated all vestiges of support for the "module-level 12471executable code" until this support is fully implemented and debugged. 12472This 12473should eliminate the NO_RETURN_VALUE exceptions seen during table load on 12474some systems that invoke this support. 12475 12476Fixed a problem within the resource manager code where the transaction 12477flags 12478for a 64-bit address descriptor were handled incorrectly in the type- 12479specific flag byte. 12480 12481Consolidated duplicate code within the address descriptor resource 12482manager 12483code, reducing overall subsystem code size. 12484 12485Fixed a fault when using the AML debugger "disassemble" command to 12486disassemble individual control methods. 12487 12488Removed references to the "release_current" directory within the Unix 12489release package. 12490 12491Code and Data Size: The current and previous core subsystem library sizes 12492are shown below. These are the code and data sizes for the acpica.lib 12493produced by the Microsoft Visual C++ 6.0 compiler. These values do not 12494include any ACPI driver or OSPM code. The debug version of the code 12495includes 12496the debug output trace mechanism and has a much larger code and data 12497size. 12498Note that these values will vary depending on the efficiency of the 12499compiler 12500and the compiler options used during generation. 12501 12502 Previous Release: 12503 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12504 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12505 Current Release: 12506 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12507 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12508 12509 125102) iASL Compiler/Disassembler: 12511 12512Implemented an error check for illegal duplicate values in the interrupt 12513and 12514dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 12515Interrupt(). 12516 12517Implemented error checking for the Irq() and IrqNoFlags() macros to 12518detect 12519too many values in the interrupt list (16 max) and invalid values in the 12520list (range 0 - 15) 12521 12522The maximum length string literal within an ASL file is now restricted to 12523200 characters as per the ACPI specification. 12524 12525Fixed a fault when using the -ln option (generate namespace listing). 12526 12527Implemented an error check to determine if a DescriptorName within a 12528resource descriptor has already been used within the current scope. 12529 12530---------------------------------------- 1253115 August 2005. Summary of changes for version 20050815: 12532 125331) ACPI CA Core Subsystem: 12534 12535Implemented a full bytewise compare to determine if a table load request 12536is 12537attempting to load a duplicate table. The compare is performed if the 12538table 12539signatures and table lengths match. This will allow different tables with 12540the same OEM Table ID and revision to be loaded - probably against the 12541ACPI 12542specification, but discovered in the field nonetheless. 12543 12544Added the changes.txt logfile to each of the zipped release packages. 12545 12546Code and Data Size: Current and previous core subsystem library sizes are 12547shown below. These are the code and data sizes for the acpica.lib 12548produced 12549by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12550any ACPI driver or OSPM code. The debug version of the code includes the 12551debug output trace mechanism and has a much larger code and data size. 12552Note 12553that these values will vary depending on the efficiency of the compiler 12554and 12555the compiler options used during generation. 12556 12557 Previous Release: 12558 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12559 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12560 Current Release: 12561 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12562 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12563 12564 125652) iASL Compiler/Disassembler: 12566 12567Fixed a problem where incorrect AML code could be generated for Package 12568objects if optimization is disabled (via the -oa switch). 12569 12570Fixed a problem with where incorrect AML code is generated for variable- 12571length packages when the package length is not specified and the number 12572of 12573initializer values is greater than 255. 12574 12575 12576---------------------------------------- 1257729 July 2005. Summary of changes for version 20050729: 12578 125791) ACPI CA Core Subsystem: 12580 12581Implemented support to ignore an attempt to install/load a particular 12582ACPI 12583table more than once. Apparently there exists BIOS code that repeatedly 12584attempts to load the same SSDT upon certain events. With assistance from 12585Venkatesh Pallipadi. 12586 12587Restructured the main interface to the AML parser in order to correctly 12588handle all exceptional conditions. This will prevent leakage of the 12589OwnerId 12590resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 12591some 12592machines. With assistance from Alexey Starikovskiy. 12593 12594Support for "module level code" has been disabled in this version due to 12595a 12596number of issues that have appeared on various machines. The support can 12597be 12598enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 12599compilation. When the issues are fully resolved, the code will be enabled 12600by 12601default again. 12602 12603Modified the internal functions for debug print support to define the 12604FunctionName parameter as a (const char *) for compatibility with 12605compiler 12606built-in macros such as __FUNCTION__, etc. 12607 12608Linted the entire ACPICA source tree for both 32-bit and 64-bit. 12609 12610Implemented support to display an object count summary for the AML 12611Debugger 12612commands Object and Methods. 12613 12614Code and Data Size: Current and previous core subsystem library sizes are 12615shown below. These are the code and data sizes for the acpica.lib 12616produced 12617by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12618any ACPI driver or OSPM code. The debug version of the code includes the 12619debug output trace mechanism and has a much larger code and data size. 12620Note 12621that these values will vary depending on the efficiency of the compiler 12622and 12623the compiler options used during generation. 12624 12625 Previous Release: 12626 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12627 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12628 Current Release: 12629 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12630 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12631 12632 126332) iASL Compiler/Disassembler: 12634 12635Fixed a regression that appeared in the 20050708 version of the compiler 12636where an error message was inadvertently emitted for invocations of the 12637_OSI 12638reserved control method. 12639 12640---------------------------------------- 1264108 July 2005. Summary of changes for version 20050708: 12642 126431) ACPI CA Core Subsystem: 12644 12645The use of the CPU stack in the debug version of the subsystem has been 12646considerably reduced. Previously, a debug structure was declared in every 12647function that used the debug macros. This structure has been removed in 12648favor of declaring the individual elements as parameters to the debug 12649functions. This reduces the cumulative stack use during nested execution 12650of 12651ACPI function calls at the cost of a small increase in the code size of 12652the 12653debug version of the subsystem. With assistance from Alexey Starikovskiy 12654and 12655Len Brown. 12656 12657Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 12658headers to define a macro that will return the current function name at 12659runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 12660by 12661the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 12662compiler-dependent header, the function name is saved on the CPU stack 12663(one 12664pointer per function.) This mechanism is used because apparently there 12665exists no standard ANSI-C defined macro that that returns the function 12666name. 12667 12668Redesigned and reimplemented the "Owner ID" mechanism used to track 12669namespace objects created/deleted by ACPI tables and control method 12670execution. A bitmap is now used to allocate and free the IDs, thus 12671solving 12672the wraparound problem present in the previous implementation. The size 12673of 12674the namespace node descriptor was reduced by 2 bytes as a result (Alexey 12675Starikovskiy). 12676 12677Removed the UINT32_BIT and UINT16_BIT types that were used for the 12678bitfield 12679flag definitions within the headers for the predefined ACPI tables. These 12680have been replaced by UINT8_BIT in order to increase the code portability 12681of 12682the subsystem. If the use of UINT8 remains a problem, we may be forced to 12683eliminate bitfields entirely because of a lack of portability. 12684 12685Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 12686This 12687is a frequently used function and this improvement increases the 12688performance 12689of the entire subsystem (Alexey Starikovskiy). 12690 12691Fixed several possible memory leaks and the inverse - premature object 12692deletion (Alexey Starikovskiy). 12693 12694Code and Data Size: Current and previous core subsystem library sizes are 12695shown below. These are the code and data sizes for the acpica.lib 12696produced 12697by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12698any ACPI driver or OSPM code. The debug version of the code includes the 12699debug output trace mechanism and has a much larger code and data size. 12700Note 12701that these values will vary depending on the efficiency of the compiler 12702and 12703the compiler options used during generation. 12704 12705 Previous Release: 12706 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12707 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12708 Current Release: 12709 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12710 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12711 12712---------------------------------------- 1271324 June 2005. Summary of changes for version 20050624: 12714 127151) ACPI CA Core Subsystem: 12716 12717Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 12718the host-defined cache object. This allows the OSL implementation to 12719define 12720and type this object in any manner desired, simplifying the OSL 12721implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 12722Linux, and should be defined in the OS-specific header file for other 12723operating systems as required. 12724 12725Changed the interface to AcpiOsAcquireObject to directly return the 12726requested object as the function return (instead of ACPI_STATUS.) This 12727change was made for performance reasons, since this is the purpose of the 12728interface in the first place. AcpiOsAcquireObject is now similar to the 12729AcpiOsAllocate interface. 12730 12731Implemented a new AML debugger command named Businfo. This command 12732displays 12733information about all devices that have an associate _PRT object. The 12734_ADR, 12735_HID, _UID, and _CID are displayed for these devices. 12736 12737Modified the initialization sequence in AcpiInitializeSubsystem to call 12738the 12739OSL interface AcpiOslInitialize first, before any local initialization. 12740This 12741change was required because the global initialization now calls OSL 12742interfaces. 12743 12744Enhanced the Dump command to display the entire contents of Package 12745objects 12746(including all sub-objects and their values.) 12747 12748Restructured the code base to split some files because of size and/or 12749because the code logically belonged in a separate file. New files are 12750listed 12751below. All makefiles and project files included in the ACPI CA release 12752have 12753been updated. 12754 utilities/utcache.c /* Local cache interfaces */ 12755 utilities/utmutex.c /* Local mutex support */ 12756 utilities/utstate.c /* State object support */ 12757 interpreter/parser/psloop.c /* Main AML parse loop */ 12758 12759Code and Data Size: Current and previous core subsystem library sizes are 12760shown below. These are the code and data sizes for the acpica.lib 12761produced 12762by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12763any ACPI driver or OSPM code. The debug version of the code includes the 12764debug output trace mechanism and has a much larger code and data size. 12765Note 12766that these values will vary depending on the efficiency of the compiler 12767and 12768the compiler options used during generation. 12769 12770 Previous Release: 12771 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12772 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12773 Current Release: 12774 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12775 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12776 12777 127782) iASL Compiler/Disassembler: 12779 12780Fixed a regression introduced in version 20050513 where the use of a 12781Package 12782object within a Case() statement caused a compile time exception. The 12783original behavior has been restored (a Match() operator is emitted.) 12784 12785---------------------------------------- 1278617 June 2005. Summary of changes for version 20050617: 12787 127881) ACPI CA Core Subsystem: 12789 12790Moved the object cache operations into the OS interface layer (OSL) to 12791allow 12792the host OS to handle these operations if desired (for example, the Linux 12793OSL will invoke the slab allocator). This support is optional; the 12794compile 12795time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 12796cache 12797code in the ACPI CA core. The new OSL interfaces are shown below. See 12798utalloc.c for an example implementation, and acpiosxf.h for the exact 12799interface definitions. With assistance from Alexey Starikovskiy. 12800 AcpiOsCreateCache 12801 AcpiOsDeleteCache 12802 AcpiOsPurgeCache 12803 AcpiOsAcquireObject 12804 AcpiOsReleaseObject 12805 12806Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 12807return 12808and restore a flags parameter. This fits better with many OS lock models. 12809Note: the current execution state (interrupt handler or not) is no longer 12810passed to these interfaces. If necessary, the OSL must determine this 12811state 12812by itself, a simple and fast operation. With assistance from Alexey 12813Starikovskiy. 12814 12815Fixed a problem in the ACPI table handling where a valid XSDT was assumed 12816present if the revision of the RSDP was 2 or greater. According to the 12817ACPI 12818specification, the XSDT is optional in all cases, and the table manager 12819therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 12820Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 12821contain 12822only the RSDT. 12823 12824Fixed an interpreter problem with the Mid() operator in the case of an 12825input 12826string where the resulting output string is of zero length. It now 12827correctly 12828returns a valid, null terminated string object instead of a string object 12829with a null pointer. 12830 12831Fixed a problem with the control method argument handling to allow a 12832store 12833to an Arg object that already contains an object of type Device. The 12834Device 12835object is now correctly overwritten. Previously, an error was returned. 12836 12837 12838Enhanced the debugger Find command to emit object values in addition to 12839the 12840found object pathnames. The output format is the same as the dump 12841namespace 12842command. 12843 12844Enhanced the debugger Set command. It now has the ability to set the 12845value 12846of any Named integer object in the namespace (Previously, only method 12847locals 12848and args could be set.) 12849 12850Code and Data Size: Current and previous core subsystem library sizes are 12851shown below. These are the code and data sizes for the acpica.lib 12852produced 12853by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12854any ACPI driver or OSPM code. The debug version of the code includes the 12855debug output trace mechanism and has a much larger code and data size. 12856Note 12857that these values will vary depending on the efficiency of the compiler 12858and 12859the compiler options used during generation. 12860 12861 Previous Release: 12862 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12863 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12864 Current Release: 12865 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12866 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12867 12868 128692) iASL Compiler/Disassembler: 12870 12871Fixed a regression in the disassembler where if/else/while constructs 12872were 12873output incorrectly. This problem was introduced in the previous release 12874(20050526). This problem also affected the single-step disassembly in the 12875debugger. 12876 12877Fixed a problem where compiling the reserved _OSI method would randomly 12878(but 12879rarely) produce compile errors. 12880 12881Enhanced the disassembler to emit compilable code in the face of 12882incorrect 12883AML resource descriptors. If the optional ResourceSourceIndex is present, 12884but the ResourceSource is not, do not emit the ResourceSourceIndex in the 12885disassembly. Otherwise, the resulting code cannot be compiled without 12886errors. 12887 12888---------------------------------------- 1288926 May 2005. Summary of changes for version 20050526: 12890 128911) ACPI CA Core Subsystem: 12892 12893Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 12894the module level (not within a control method.) These opcodes are 12895executed 12896exactly once at the time the table is loaded. This type of code was legal 12897up 12898until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 12899in 12900order to provide backwards compatibility with earlier BIOS 12901implementations. 12902This eliminates the "Encountered executable code at module level" warning 12903that was previously generated upon detection of such code. 12904 12905Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 12906inadvertently be generated during the lookup of namespace objects in the 12907second pass parse of ACPI tables and control methods. It appears that 12908this 12909problem could occur during the resolution of forward references to 12910namespace 12911objects. 12912 12913Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 12914corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 12915allows the deadlock detection debug code to be compiled out in the normal 12916case, improving mutex performance (and overall subsystem performance) 12917considerably. 12918 12919Implemented a handful of miscellaneous fixes for possible memory leaks on 12920error conditions and error handling control paths. These fixes were 12921suggested by FreeBSD and the Coverity Prevent source code analysis tool. 12922 12923Added a check for a null RSDT pointer in AcpiGetFirmwareTable 12924(tbxfroot.c) 12925to prevent a fault in this error case. 12926 12927Code and Data Size: Current and previous core subsystem library sizes are 12928shown below. These are the code and data sizes for the acpica.lib 12929produced 12930by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12931any ACPI driver or OSPM code. The debug version of the code includes the 12932debug output trace mechanism and has a much larger code and data size. 12933Note 12934that these values will vary depending on the efficiency of the compiler 12935and 12936the compiler options used during generation. 12937 12938 Previous Release: 12939 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12940 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12941 Current Release: 12942 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12943 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12944 12945 129462) iASL Compiler/Disassembler: 12947 12948Implemented support to allow Type 1 and Type 2 ASL operators to appear at 12949the module level (not within a control method.) These operators will be 12950executed once at the time the table is loaded. This type of code was 12951legal 12952up until the release of ACPI 2.0B (2002) and is now supported by the iASL 12953compiler in order to provide backwards compatibility with earlier BIOS 12954ASL 12955code. 12956 12957The ACPI integer width (specified via the table revision ID or the -r 12958override, 32 or 64 bits) is now used internally during compile-time 12959constant 12960folding to ensure that constants are truncated to 32 bits if necessary. 12961Previously, the revision ID value was only emitted in the AML table 12962header. 12963 12964An error message is now generated for the Mutex and Method operators if 12965the 12966SyncLevel parameter is outside the legal range of 0 through 15. 12967 12968Fixed a problem with the Method operator ParameterTypes list handling 12969(ACPI 129703.0). Previously, more than 2 types or 2 arguments generated a syntax 12971error. 12972The actual underlying implementation of method argument typechecking is 12973still under development, however. 12974 12975---------------------------------------- 1297613 May 2005. Summary of changes for version 20050513: 12977 129781) ACPI CA Core Subsystem: 12979 12980Implemented support for PCI Express root bridges -- added support for 12981device 12982PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 12983 12984The interpreter now automatically truncates incoming 64-bit constants to 1298532 12986bits if currently executing out of a 32-bit ACPI table (Revision < 2). 12987This 12988also affects the iASL compiler constant folding. (Note: as per below, the 12989iASL compiler no longer allows 64-bit constants within 32-bit tables.) 12990 12991Fixed a problem where string and buffer objects with "static" pointers 12992(pointers to initialization data within an ACPI table) were not handled 12993consistently. The internal object copy operation now always copies the 12994data 12995to a newly allocated buffer, regardless of whether the source object is 12996static or not. 12997 12998Fixed a problem with the FromBCD operator where an implicit result 12999conversion was improperly performed while storing the result to the 13000target 13001operand. Since this is an "explicit conversion" operator, the implicit 13002conversion should never be performed on the output. 13003 13004Fixed a problem with the CopyObject operator where a copy to an existing 13005named object did not always completely overwrite the existing object 13006stored 13007at name. Specifically, a buffer-to-buffer copy did not delete the 13008existing 13009buffer. 13010 13011Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 13012and 13013structs for consistency. 13014 13015Code and Data Size: Current and previous core subsystem library sizes are 13016shown below. These are the code and data sizes for the acpica.lib 13017produced 13018by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13019any ACPI driver or OSPM code. The debug version of the code includes the 13020debug output trace mechanism and has a much larger code and data size. 13021Note 13022that these values will vary depending on the efficiency of the compiler 13023and 13024the compiler options used during generation. 13025 13026 Previous Release: 13027 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13028 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13029 Current Release: (Same sizes) 13030 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13031 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13032 13033 130342) iASL Compiler/Disassembler: 13035 13036The compiler now emits a warning if an attempt is made to generate a 64- 13037bit 13038integer constant from within a 32-bit ACPI table (Revision < 2). The 13039integer 13040is truncated to 32 bits. 13041 13042Fixed a problem with large package objects: if the static length of the 13043package is greater than 255, the "variable length package" opcode is 13044emitted. Previously, this caused an error. This requires an update to the 13045ACPI spec, since it currently (incorrectly) states that packages larger 13046than 13047255 elements are not allowed. 13048 13049The disassembler now correctly handles variable length packages and 13050packages 13051larger than 255 elements. 13052 13053---------------------------------------- 1305408 April 2005. Summary of changes for version 20050408: 13055 130561) ACPI CA Core Subsystem: 13057 13058Fixed three cases in the interpreter where an "index" argument to an ASL 13059function was still (internally) 32 bits instead of the required 64 bits. 13060This was the Index argument to the Index, Mid, and Match operators. 13061 13062The "strupr" function is now permanently local (AcpiUtStrupr), since this 13063is 13064not a POSIX-defined function and not present in most kernel-level C 13065libraries. All references to the C library strupr function have been 13066removed 13067from the headers. 13068 13069Completed the deployment of static functions/prototypes. All prototypes 13070with 13071the static attribute have been moved from the headers to the owning C 13072file. 13073 13074Implemented an extract option (-e) for the AcpiBin utility (AML binary 13075utility). This option allows the utility to extract individual ACPI 13076tables 13077from the output of AcpiDmp. It provides the same functionality of the 13078acpixtract.pl perl script without the worry of setting the correct perl 13079options. AcpiBin runs on Windows and has not yet been generated/validated 13080in 13081the Linux/Unix environment (but should be soon). 13082 13083Updated and fixed the table dump option for AcpiBin (-d). This option 13084converts a single ACPI table to a hex/ascii file, similar to the output 13085of 13086AcpiDmp. 13087 13088Code and Data Size: Current and previous core subsystem library sizes are 13089shown below. These are the code and data sizes for the acpica.lib 13090produced 13091by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13092any ACPI driver or OSPM code. The debug version of the code includes the 13093debug output trace mechanism and has a much larger code and data size. 13094Note 13095that these values will vary depending on the efficiency of the compiler 13096and 13097the compiler options used during generation. 13098 13099 Previous Release: 13100 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13101 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13102 Current Release: 13103 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13104 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13105 13106 131072) iASL Compiler/Disassembler: 13108 13109Disassembler fix: Added a check to ensure that the table length found in 13110the 13111ACPI table header within the input file is not longer than the actual 13112input 13113file size. This indicates some kind of file or table corruption. 13114 13115---------------------------------------- 1311629 March 2005. Summary of changes for version 20050329: 13117 131181) ACPI CA Core Subsystem: 13119 13120An error is now generated if an attempt is made to create a Buffer Field 13121of 13122length zero (A CreateField with a length operand of zero.) 13123 13124The interpreter now issues a warning whenever executable code at the 13125module 13126level is detected during ACPI table load. This will give some idea of the 13127prevalence of this type of code. 13128 13129Implemented support for references to named objects (other than control 13130methods) within package objects. 13131 13132Enhanced package object output for the debug object. Package objects are 13133now 13134completely dumped, showing all elements. 13135 13136Enhanced miscellaneous object output for the debug object. Any object can 13137now be written to the debug object (for example, a device object can be 13138written, and the type of the object will be displayed.) 13139 13140The "static" qualifier has been added to all local functions across both 13141the 13142core subsystem and the iASL compiler. 13143 13144The number of "long" lines (> 80 chars) within the source has been 13145significantly reduced, by about 1/3. 13146 13147Cleaned up all header files to ensure that all CA/iASL functions are 13148prototyped (even static functions) and the formatting is consistent. 13149 13150Two new header files have been added, acopcode.h and acnames.h. 13151 13152Removed several obsolete functions that were no longer used. 13153 13154Code and Data Size: Current and previous core subsystem library sizes are 13155shown below. These are the code and data sizes for the acpica.lib 13156produced 13157by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13158any ACPI driver or OSPM code. The debug version of the code includes the 13159debug output trace mechanism and has a much larger code and data size. 13160Note 13161that these values will vary depending on the efficiency of the compiler 13162and 13163the compiler options used during generation. 13164 13165 Previous Release: 13166 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13167 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13168 Current Release: 13169 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13170 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13171 13172 13173 131742) iASL Compiler/Disassembler: 13175 13176Fixed a problem with the resource descriptor generation/support. For the 13177ResourceSourceIndex and the ResourceSource fields, both must be present, 13178or 13179both must be not present - can't have one without the other. 13180 13181The compiler now returns non-zero from the main procedure if any errors 13182have 13183occurred during the compilation. 13184 13185 13186---------------------------------------- 1318709 March 2005. Summary of changes for version 20050309: 13188 131891) ACPI CA Core Subsystem: 13190 13191The string-to-buffer implicit conversion code has been modified again 13192after 13193a change to the ACPI specification. In order to match the behavior of 13194the 13195other major ACPI implementation, the target buffer is no longer truncated 13196if 13197the source string is smaller than an existing target buffer. This change 13198requires an update to the ACPI spec, and should eliminate the recent 13199AE_AML_BUFFER_LIMIT issues. 13200 13201The "implicit return" support was rewritten to a new algorithm that 13202solves 13203the general case. Rather than attempt to determine when a method is about 13204to 13205exit, the result of every ASL operator is saved momentarily until the 13206very 13207next ASL operator is executed. Therefore, no matter how the method exits, 13208there will always be a saved implicit return value. This feature is only 13209enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 13210eliminate 13211AE_AML_NO_RETURN_VALUE errors when enabled. 13212 13213Implemented implicit conversion support for the predicate (operand) of 13214the 13215If, Else, and While operators. String and Buffer arguments are 13216automatically 13217converted to Integers. 13218 13219Changed the string-to-integer conversion behavior to match the new ACPI 13220errata: "If no integer object exists, a new integer is created. The ASCII 13221string is interpreted as a hexadecimal constant. Each string character is 13222interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 13223with the first character as the most significant digit, and ending with 13224the 13225first non-hexadecimal character or end-of-string." This means that the 13226first 13227non-hex character terminates the conversion and this is the code that was 13228changed. 13229 13230Fixed a problem where the ObjectType operator would fail (fault) when 13231used 13232on an Index of a Package which pointed to a null package element. The 13233operator now properly returns zero (Uninitialized) in this case. 13234 13235Fixed a problem where the While operator used excessive memory by not 13236properly popping the result stack during execution. There was no memory 13237leak 13238after execution, however. (Code provided by Valery Podrezov.) 13239 13240Fixed a problem where references to control methods within Package 13241objects 13242caused the method to be invoked, instead of producing a reference object 13243pointing to the method. 13244 13245Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 13246to 13247improve performance and reduce code size. (Code provided by Alexey 13248Starikovskiy.) 13249 13250Code and Data Size: Current and previous core subsystem library sizes are 13251shown below. These are the code and data sizes for the acpica.lib 13252produced 13253by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13254any ACPI driver or OSPM code. The debug version of the code includes the 13255debug output trace mechanism and has a much larger code and data size. 13256Note 13257that these values will vary depending on the efficiency of the compiler 13258and 13259the compiler options used during generation. 13260 13261 Previous Release: 13262 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13263 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13264 Current Release: 13265 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13266 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13267 13268 132692) iASL Compiler/Disassembler: 13270 13271Fixed a problem with the Return operator with no arguments. Since the AML 13272grammar for the byte encoding requires an operand for the Return opcode, 13273the 13274compiler now emits a Return(Zero) for this case. An ACPI specification 13275update has been written for this case. 13276 13277For tables other than the DSDT, namepath optimization is automatically 13278disabled. This is because SSDTs can be loaded anywhere in the namespace, 13279the 13280compiler has no knowledge of where, and thus cannot optimize namepaths. 13281 13282Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 13283inadvertently omitted from the ACPI specification, and will require an 13284update to the spec. 13285 13286The source file scan for ASCII characters is now optional (-a). This 13287change 13288was made because some vendors place non-ascii characters within comments. 13289However, the scan is simply a brute-force byte compare to ensure all 13290characters in the file are in the range 0x00 to 0x7F. 13291 13292Fixed a problem with the CondRefOf operator where the compiler was 13293inappropriately checking for the existence of the target. Since the point 13294of 13295the operator is to check for the existence of the target at run-time, the 13296compiler no longer checks for the target existence. 13297 13298Fixed a problem where errors generated from the internal AML interpreter 13299during constant folding were not handled properly, causing a fault. 13300 13301Fixed a problem with overly aggressive range checking for the Stall 13302operator. The valid range (max 255) is now only checked if the operand is 13303of 13304type Integer. All other operand types cannot be statically checked. 13305 13306Fixed a problem where control method references within the RefOf, 13307DeRefOf, 13308and ObjectType operators were not treated properly. They are now treated 13309as 13310actual references, not method invocations. 13311 13312Fixed and enhanced the "list namespace" option (-ln). This option was 13313broken 13314a number of releases ago. 13315 13316Improved error handling for the Field, IndexField, and BankField 13317operators. 13318The compiler now cleanly reports and recovers from errors in the field 13319component (FieldUnit) list. 13320 13321Fixed a disassembler problem where the optional ResourceDescriptor fields 13322TRS and TTP were not always handled correctly. 13323 13324Disassembler - Comments in output now use "//" instead of "/*" 13325 13326---------------------------------------- 1332728 February 2005. Summary of changes for version 20050228: 13328 133291) ACPI CA Core Subsystem: 13330 13331Fixed a problem where the result of an Index() operator (an object 13332reference) must increment the reference count on the target object for 13333the 13334life of the object reference. 13335 13336Implemented AML Interpreter and Debugger support for the new ACPI 3.0 13337Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 13338WordSpace 13339resource descriptors. 13340 13341Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 13342Space Descriptor" string, indicating interpreter support for the 13343descriptors 13344above. 13345 13346Implemented header support for the new ACPI 3.0 FADT flag bits. 13347 13348Implemented header support for the new ACPI 3.0 PCI Express bits for the 13349PM1 13350status/enable registers. 13351 13352Updated header support for the MADT processor local Apic struct and MADT 13353platform interrupt source struct for new ACPI 3.0 fields. 13354 13355Implemented header support for the SRAT and SLIT ACPI tables. 13356 13357Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 13358flag 13359at runtime. 13360 13361Code and Data Size: Current and previous core subsystem library sizes are 13362shown below. These are the code and data sizes for the acpica.lib 13363produced 13364by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13365any ACPI driver or OSPM code. The debug version of the code includes the 13366debug output trace mechanism and has a much larger code and data size. 13367Note 13368that these values will vary depending on the efficiency of the compiler 13369and 13370the compiler options used during generation. 13371 13372 Previous Release: 13373 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13374 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13375 Current Release: 13376 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13377 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13378 13379 133802) iASL Compiler/Disassembler: 13381 13382Fixed a problem with the internal 64-bit String-to-integer conversion 13383with 13384strings less than two characters long. 13385 13386Fixed a problem with constant folding where the result of the Index() 13387operator can not be considered a constant. This means that Index() cannot 13388be 13389a type3 opcode and this will require an update to the ACPI specification. 13390 13391Disassembler: Implemented support for the TTP, MTP, and TRS resource 13392descriptor fields. These fields were inadvertently ignored and not output 13393in 13394the disassembly of the resource descriptor. 13395 13396 13397 ---------------------------------------- 1339811 February 2005. Summary of changes for version 20050211: 13399 134001) ACPI CA Core Subsystem: 13401 13402Implemented ACPI 3.0 support for implicit conversion within the Match() 13403operator. MatchObjects can now be of type integer, buffer, or string 13404instead 13405of just type integer. Package elements are implicitly converted to the 13406type 13407of the MatchObject. This change aligns the behavior of Match() with the 13408behavior of the other logical operators (LLess(), etc.) It also requires 13409an 13410errata change to the ACPI specification as this support was intended for 13411ACPI 3.0, but was inadvertently omitted. 13412 13413Fixed a problem with the internal implicit "to buffer" conversion. 13414Strings 13415that are converted to buffers will cause buffer truncation if the string 13416is 13417smaller than the target buffer. Integers that are converted to buffers 13418will 13419not cause buffer truncation, only zero extension (both as per the ACPI 13420spec.) The problem was introduced when code was added to truncate the 13421buffer, but this should not be performed in all cases, only the string 13422case. 13423 13424Fixed a problem with the Buffer and Package operators where the 13425interpreter 13426would get confused if two such operators were used as operands to an ASL 13427operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 13428stack was not being popped after the execution of these operators, 13429resulting 13430in an AE_NO_RETURN_VALUE exception. 13431 13432Fixed a problem with constructs of the form Store(Index(...),...). The 13433reference object returned from Index was inadvertently resolved to an 13434actual 13435value. This problem was introduced in version 20050114 when the behavior 13436of 13437Store() was modified to restrict the object types that can be used as the 13438source operand (to match the ACPI specification.) 13439 13440Reduced excessive stack use within the AcpiGetObjectInfo procedure. 13441 13442Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 13443 13444Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 13445 13446Code and Data Size: Current and previous core subsystem library sizes are 13447shown below. These are the code and data sizes for the acpica.lib 13448produced 13449by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13450any ACPI driver or OSPM code. The debug version of the code includes the 13451debug output trace mechanism and has a much larger code and data size. 13452Note 13453that these values will vary depending on the efficiency of the compiler 13454and 13455the compiler options used during generation. 13456 13457 Previous Release: 13458 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13459 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13460 Current Release: 13461 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13462 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13463 13464 134652) iASL Compiler/Disassembler: 13466 13467Fixed a code generation problem in the constant folding optimization code 13468where incorrect code was generated if a constant was reduced to a buffer 13469object (i.e., a reduced type 5 opcode.) 13470 13471Fixed a typechecking problem for the ToBuffer operator. Caused by an 13472incorrect return type in the internal opcode information table. 13473 13474---------------------------------------- 1347525 January 2005. Summary of changes for version 20050125: 13476 134771) ACPI CA Core Subsystem: 13478 13479Fixed a recently introduced problem with the Global Lock where the 13480underlying semaphore was not created. This problem was introduced in 13481version 20050114, and caused an AE_AML_NO_OPERAND exception during an 13482Acquire() operation on _GL. 13483 13484The local object cache is now optional, and is disabled by default. Both 13485AcpiExec and the iASL compiler enable the cache because they run in user 13486mode and this enhances their performance. #define 13487ACPI_ENABLE_OBJECT_CACHE 13488to enable the local cache. 13489 13490Fixed an issue in the internal function AcpiUtEvaluateObject concerning 13491the 13492optional "implicit return" support where an error was returned if no 13493return 13494object was expected, but one was implicitly returned. AE_OK is now 13495returned 13496in this case and the implicitly returned object is deleted. 13497AcpiUtEvaluateObject is only occasionally used, and only to execute 13498reserved 13499methods such as _STA and _INI where the return type is known up front. 13500 13501Fixed a few issues with the internal convert-to-integer code. It now 13502returns 13503an error if an attempt is made to convert a null string, a string of only 13504blanks/tabs, or a zero-length buffer. This affects both implicit 13505conversion 13506and explicit conversion via the ToInteger() operator. 13507 13508The internal debug code in AcpiUtAcquireMutex has been commented out. It 13509is 13510not needed for normal operation and should increase the performance of 13511the 13512entire subsystem. The code remains in case it is needed for debug 13513purposes 13514again. 13515 13516The AcpiExec source and makefile are included in the Unix/Linux package 13517for 13518the first time. 13519 13520Code and Data Size: Current and previous core subsystem library sizes are 13521shown below. These are the code and data sizes for the acpica.lib 13522produced 13523by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13524any ACPI driver or OSPM code. The debug version of the code includes the 13525debug output trace mechanism and has a much larger code and data size. 13526Note 13527that these values will vary depending on the efficiency of the compiler 13528and 13529the compiler options used during generation. 13530 13531 Previous Release: 13532 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13533 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13534 Current Release: 13535 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13536 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13537 135382) iASL Compiler/Disassembler: 13539 13540Switch/Case support: A warning is now issued if the type of the Switch 13541value 13542cannot be determined at compile time. For example, Switch(Arg0) will 13543generate the warning, and the type is assumed to be an integer. As per 13544the 13545ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 13546the 13547warning. 13548 13549Switch/Case support: Implemented support for buffer and string objects as 13550the switch value. This is an ACPI 3.0 feature, now that LEqual supports 13551buffers and strings. 13552 13553Switch/Case support: The emitted code for the LEqual() comparisons now 13554uses 13555the switch value as the first operand, not the second. The case value is 13556now 13557the second operand, and this allows the case value to be implicitly 13558converted to the type of the switch value, not the other way around. 13559 13560Switch/Case support: Temporary variables are now emitted immediately 13561within 13562the control method, not at the global level. This means that there are 13563now 1356436 temps available per-method, not 36 temps per-module as was the case 13565with 13566the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 13567 13568---------------------------------------- 1356914 January 2005. Summary of changes for version 20050114: 13570 13571Added 2005 copyright to all module headers. This affects every module in 13572the core subsystem, iASL compiler, and the utilities. 13573 135741) ACPI CA Core Subsystem: 13575 13576Fixed an issue with the String-to-Buffer conversion code where the string 13577null terminator was not included in the buffer after conversion, but 13578there 13579is existing ASL that assumes the string null terminator is included. This 13580is 13581the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 13582introduced in the previous version when the code was updated to correctly 13583set the converted buffer size as per the ACPI specification. The ACPI 13584spec 13585is ambiguous and will be updated to specify that the null terminator must 13586be 13587included in the converted buffer. This also affects the ToBuffer() ASL 13588operator. 13589 13590Fixed a problem with the Mid() ASL/AML operator where it did not work 13591correctly on Buffer objects. Newly created sub-buffers were not being 13592marked 13593as initialized. 13594 13595 13596Fixed a problem in AcpiTbFindTable where incorrect string compares were 13597performed on the OemId and OemTableId table header fields. These fields 13598are 13599not null terminated, so strncmp is now used instead of strcmp. 13600 13601Implemented a restriction on the Store() ASL/AML operator to align the 13602behavior with the ACPI specification. Previously, any object could be 13603used 13604as the source operand. Now, the only objects that may be used are 13605Integers, 13606Buffers, Strings, Packages, Object References, and DDB Handles. If 13607necessary, the original behavior can be restored by enabling the 13608EnableInterpreterSlack flag. 13609 13610Enhanced the optional "implicit return" support to allow an implicit 13611return 13612value from methods that are invoked externally via the AcpiEvaluateObject 13613interface. This enables implicit returns from the _STA and _INI methods, 13614for example. 13615 13616Changed the Revision() ASL/AML operator to return the current version of 13617the 13618AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 13619returned 13620the supported ACPI version (This is the function of the _REV method). 13621 13622Updated the _REV predefined method to return the currently supported 13623version 13624of ACPI, now 3. 13625 13626Implemented batch mode option for the AcpiExec utility (-b). 13627 13628Code and Data Size: Current and previous core subsystem library sizes are 13629shown below. These are the code and data sizes for the acpica.lib 13630produced 13631by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13632any ACPI driver or OSPM code. The debug version of the code includes the 13633debug output trace mechanism and has a much larger code and data size. 13634Note 13635that these values will vary depending on the efficiency of the compiler 13636and 13637the compiler options used during generation. 13638 13639 Previous Release: 13640 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13641 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13642 Current Release: 13643 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13644 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13645 13646---------------------------------------- 1364710 December 2004. Summary of changes for version 20041210: 13648 13649ACPI 3.0 support is nearing completion in both the iASL compiler and the 13650ACPI CA core subsystem. 13651 136521) ACPI CA Core Subsystem: 13653 13654Fixed a problem in the ToDecimalString operator where the resulting 13655string 13656length was incorrectly calculated. The length is now calculated exactly, 13657eliminating incorrect AE_STRING_LIMIT exceptions. 13658 13659Fixed a problem in the ToHexString operator to allow a maximum 200 13660character 13661string to be produced. 13662 13663Fixed a problem in the internal string-to-buffer and buffer-to-buffer 13664copy 13665routine where the length of the resulting buffer was not truncated to the 13666new size (if the target buffer already existed). 13667 13668Code and Data Size: Current and previous core subsystem library sizes are 13669shown below. These are the code and data sizes for the acpica.lib 13670produced 13671by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13672any ACPI driver or OSPM code. The debug version of the code includes the 13673debug output trace mechanism and has a much larger code and data size. 13674Note 13675that these values will vary depending on the efficiency of the compiler 13676and 13677the compiler options used during generation. 13678 13679 Previous Release: 13680 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13681 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13682 Current Release: 13683 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13684 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13685 13686 136872) iASL Compiler/Disassembler: 13688 13689Implemented the new ACPI 3.0 resource template macros - DWordSpace, 13690ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 13691Includes support in the disassembler. 13692 13693Implemented support for the new (ACPI 3.0) parameter to the Register 13694macro, 13695AccessSize. 13696 13697Fixed a problem where the _HE resource name for the Interrupt macro was 13698referencing bit 0 instead of bit 1. 13699 13700Implemented check for maximum 255 interrupts in the Interrupt macro. 13701 13702Fixed a problem with the predefined resource descriptor names where 13703incorrect AML code was generated if the offset within the resource buffer 13704was 0 or 1. The optimizer shortened the AML code to a single byte opcode 13705but did not update the surrounding package lengths. 13706 13707Changes to the Dma macro: All channels within the channel list must be 13708in 13709the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 13710optional (default is BusMaster). 13711 13712Implemented check for maximum 7 data bytes for the VendorShort macro. 13713 13714The ReadWrite parameter is now optional for the Memory32 and similar 13715macros. 13716 13717---------------------------------------- 1371803 December 2004. Summary of changes for version 20041203: 13719 137201) ACPI CA Core Subsystem: 13721 13722The low-level field insertion/extraction code (exfldio) has been 13723completely 13724rewritten to eliminate unnecessary complexity, bugs, and boundary 13725conditions. 13726 13727Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 13728ToDecimalString 13729operators where the input operand could be inadvertently deleted if no 13730conversion was necessary (e.g., if the input to ToInteger was an Integer 13731object.) 13732 13733Fixed a problem with the ToDecimalString and ToHexString where an 13734incorrect 13735exception code was returned if the resulting string would be > 200 chars. 13736AE_STRING_LIMIT is now returned. 13737 13738Fixed a problem with the Concatenate operator where AE_OK was always 13739returned, even if the operation failed. 13740 13741Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 13742semaphores to be allocated. 13743 13744Code and Data Size: Current and previous core subsystem library sizes are 13745shown below. These are the code and data sizes for the acpica.lib 13746produced 13747by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13748any ACPI driver or OSPM code. The debug version of the code includes the 13749debug output trace mechanism and has a much larger code and data size. 13750Note 13751that these values will vary depending on the efficiency of the compiler 13752and 13753the compiler options used during generation. 13754 13755 Previous Release: 13756 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13757 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13758 Current Release: 13759 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13760 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13761 13762 137632) iASL Compiler/Disassembler: 13764 13765Fixed typechecking for the ObjectType and SizeOf operators. Problem was 13766recently introduced in 20041119. 13767 13768Fixed a problem with the ToUUID macro where the upper nybble of each 13769buffer 13770byte was inadvertently set to zero. 13771 13772---------------------------------------- 1377319 November 2004. Summary of changes for version 20041119: 13774 137751) ACPI CA Core Subsystem: 13776 13777Fixed a problem in the internal ConvertToInteger routine where new 13778integers 13779were not truncated to 32 bits for 32-bit ACPI tables. This routine 13780converts 13781buffers and strings to integers. 13782 13783Implemented support to store a value to an Index() on a String object. 13784This 13785is an ACPI 2.0 feature that had not yet been implemented. 13786 13787Implemented new behavior for storing objects to individual package 13788elements 13789(via the Index() operator). The previous behavior was to invoke the 13790implicit 13791conversion rules if an object was already present at the index. The new 13792behavior is to simply delete any existing object and directly store the 13793new 13794object. Although the ACPI specification seems unclear on this subject, 13795other 13796ACPI implementations behave in this manner. (This is the root of the 13797AE_BAD_HEX_CONSTANT issue.) 13798 13799Modified the RSDP memory scan mechanism to support the extended checksum 13800for 13801ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 13802RSDP signature is found with a valid checksum. 13803 13804Code and Data Size: Current and previous core subsystem library sizes are 13805shown below. These are the code and data sizes for the acpica.lib 13806produced 13807by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13808any ACPI driver or OSPM code. The debug version of the code includes the 13809debug output trace mechanism and has a much larger code and data size. 13810Note 13811that these values will vary depending on the efficiency of the compiler 13812and 13813the compiler options used during generation. 13814 13815 Previous Release: 13816 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13817 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13818 Current Release: 13819 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13820 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13821 13822 138232) iASL Compiler/Disassembler: 13824 13825Fixed a missing semicolon in the aslcompiler.y file. 13826 13827---------------------------------------- 1382805 November 2004. Summary of changes for version 20041105: 13829 138301) ACPI CA Core Subsystem: 13831 13832Implemented support for FADT revision 2. This was an interim table 13833(between 13834ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 13835 13836Implemented optional support to allow uninitialized LocalX and ArgX 13837variables in a control method. The variables are initialized to an 13838Integer 13839object with a value of zero. This support is enabled by setting the 13840AcpiGbl_EnableInterpreterSlack flag to TRUE. 13841 13842Implemented support for Integer objects for the SizeOf operator. Either 138434 13844or 8 is returned, depending on the current integer size (32-bit or 64- 13845bit, 13846depending on the parent table revision). 13847 13848Fixed a problem in the implementation of the SizeOf and ObjectType 13849operators 13850where the operand was resolved to a value too early, causing incorrect 13851return values for some objects. 13852 13853Fixed some possible memory leaks during exceptional conditions. 13854 13855Code and Data Size: Current and previous core subsystem library sizes are 13856shown below. These are the code and data sizes for the acpica.lib 13857produced 13858by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13859any ACPI driver or OSPM code. The debug version of the code includes the 13860debug output trace mechanism and has a much larger code and data size. 13861Note 13862that these values will vary depending on the efficiency of the compiler 13863and 13864the compiler options used during generation. 13865 13866 Previous Release: 13867 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13868 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13869 Current Release: 13870 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13871 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13872 13873 138742) iASL Compiler/Disassembler: 13875 13876Implemented support for all ACPI 3.0 reserved names and methods. 13877 13878Implemented all ACPI 3.0 grammar elements in the front-end, including 13879support for semicolons. 13880 13881Implemented the ACPI 3.0 Function() and ToUUID() macros 13882 13883Fixed a problem in the disassembler where a Scope() operator would not be 13884emitted properly if the target of the scope was in another table. 13885 13886---------------------------------------- 1388715 October 2004. Summary of changes for version 20041015: 13888 13889Note: ACPI CA is currently undergoing an in-depth and complete formal 13890evaluation to test/verify the following areas. Other suggestions are 13891welcome. This will result in an increase in the frequency of releases and 13892the number of bug fixes in the next few months. 13893 - Functional tests for all ASL/AML operators 13894 - All implicit/explicit type conversions 13895 - Bit fields and operation regions 13896 - 64-bit math support and 32-bit-only "truncated" math support 13897 - Exceptional conditions, both compiler and interpreter 13898 - Dynamic object deletion and memory leaks 13899 - ACPI 3.0 support when implemented 13900 - External interfaces to the ACPI subsystem 13901 13902 139031) ACPI CA Core Subsystem: 13904 13905Fixed two alignment issues on 64-bit platforms - within debug statements 13906in 13907AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 13908Address 13909field within the non-aligned ACPI generic address structure. 13910 13911Fixed a problem in the Increment and Decrement operators where incorrect 13912operand resolution could result in the inadvertent modification of the 13913original integer when the integer is passed into another method as an 13914argument and the arg is then incremented/decremented. 13915 13916Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 13917bit 13918BCD number were truncated during conversion. 13919 13920Fixed a problem in the ToDecimal operator where the length of the 13921resulting 13922string could be set incorrectly too long if the input operand was a 13923Buffer 13924object. 13925 13926Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 13927(0) 13928within a buffer would prematurely terminate a compare between buffer 13929objects. 13930 13931Added a check for string overflow (>200 characters as per the ACPI 13932specification) during the Concatenate operator with two string operands. 13933 13934Code and Data Size: Current and previous core subsystem library sizes are 13935shown below. These are the code and data sizes for the acpica.lib 13936produced 13937by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13938any ACPI driver or OSPM code. The debug version of the code includes the 13939debug output trace mechanism and has a much larger code and data size. 13940Note 13941that these values will vary depending on the efficiency of the compiler 13942and 13943the compiler options used during generation. 13944 13945 Previous Release: 13946 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13947 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13948 Current Release: 13949 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13950 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13951 13952 13953 139542) iASL Compiler/Disassembler: 13955 13956Allow the use of the ObjectType operator on uninitialized Locals and Args 13957(returns 0 as per the ACPI specification). 13958 13959Fixed a problem where the compiler would fault if there was a syntax 13960error 13961in the FieldName of all of the various CreateXXXField operators. 13962 13963Disallow the use of lower case letters within the EISAID macro, as per 13964the 13965ACPI specification. All EISAID strings must be of the form "UUUNNNN" 13966Where 13967U is an uppercase letter and N is a hex digit. 13968 13969 13970---------------------------------------- 1397106 October 2004. Summary of changes for version 20041006: 13972 139731) ACPI CA Core Subsystem: 13974 13975Implemented support for the ACPI 3.0 Timer operator. This ASL function 13976implements a 64-bit timer with 100 nanosecond granularity. 13977 13978Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 13979implement the ACPI 3.0 Timer operator. This allows the host OS to 13980implement 13981the timer with the best clock available. Also, it keeps the core 13982subsystem 13983out of the clock handling business, since the host OS (usually) performs 13984this function. 13985 13986Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 13987functions use a 64-bit address which is part of the packed ACPI Generic 13988Address Structure. Since the structure is non-aligned, the alignment 13989macros 13990are now used to extract the address to a local variable before use. 13991 13992Fixed a problem where the ToInteger operator assumed all input strings 13993were 13994hexadecimal. The operator now handles both decimal strings and hex 13995strings 13996(prefixed with "0x"). 13997 13998Fixed a problem where the string length in the string object created as a 13999result of the internal ConvertToString procedure could be incorrect. This 14000potentially affected all implicit conversions and also the 14001ToDecimalString 14002and ToHexString operators. 14003 14004Fixed two problems in the ToString operator. If the length parameter was 14005zero, an incorrect string object was created and the value of the input 14006length parameter was inadvertently changed from zero to Ones. 14007 14008Fixed a problem where the optional ResourceSource string in the 14009ExtendedIRQ 14010resource macro was ignored. 14011 14012Simplified the interfaces to the internal division functions, reducing 14013code 14014size and complexity. 14015 14016Code and Data Size: Current and previous core subsystem library sizes are 14017shown below. These are the code and data sizes for the acpica.lib 14018produced 14019by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14020any ACPI driver or OSPM code. The debug version of the code includes the 14021debug output trace mechanism and has a much larger code and data size. 14022Note 14023that these values will vary depending on the efficiency of the compiler 14024and 14025the compiler options used during generation. 14026 14027 Previous Release: 14028 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14029 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14030 Current Release: 14031 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14032 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14033 14034 140352) iASL Compiler/Disassembler: 14036 14037Implemented support for the ACPI 3.0 Timer operator. 14038 14039Fixed a problem where the Default() operator was inadvertently ignored in 14040a 14041Switch/Case block. This was a problem in the translation of the Switch 14042statement to If...Else pairs. 14043 14044Added support to allow a standalone Return operator, with no parentheses 14045(or 14046operands). 14047 14048Fixed a problem with code generation for the ElseIf operator where the 14049translated Else...If parse tree was improperly constructed leading to the 14050loss of some code. 14051 14052---------------------------------------- 1405322 September 2004. Summary of changes for version 20040922: 14054 140551) ACPI CA Core Subsystem: 14056 14057Fixed a problem with the implementation of the LNot() operator where 14058"Ones" 14059was not returned for the TRUE case. Changed the code to return Ones 14060instead 14061of (!Arg) which was usually 1. This change affects iASL constant folding 14062for 14063this operator also. 14064 14065Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 14066not 14067initialized properly -- Now zero the entire buffer in this case where the 14068buffer already exists. 14069 14070Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 14071Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 14072related code considerably. This will require changes/updates to all OS 14073interface layers (OSLs.) 14074 14075Implemented a new external interface, AcpiInstallExceptionHandler, to 14076allow 14077a system exception handler to be installed. This handler is invoked upon 14078any 14079run-time exception that occurs during control method execution. 14080 14081Added support for the DSDT in AcpiTbFindTable. This allows the 14082DataTableRegion() operator to access the local copy of the DSDT. 14083 14084Code and Data Size: Current and previous core subsystem library sizes are 14085shown below. These are the code and data sizes for the acpica.lib 14086produced 14087by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14088any ACPI driver or OSPM code. The debug version of the code includes the 14089debug output trace mechanism and has a much larger code and data size. 14090Note 14091that these values will vary depending on the efficiency of the compiler 14092and 14093the compiler options used during generation. 14094 14095 Previous Release: 14096 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14097 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14098 Current Release: 14099 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14100 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14101 14102 141032) iASL Compiler/Disassembler: 14104 14105Fixed a problem with constant folding and the LNot operator. LNot was 14106returning 1 in the TRUE case, not Ones as per the ACPI specification. 14107This 14108could result in the generation of an incorrect folded/reduced constant. 14109 14110End-Of-File is now allowed within a "//"-style comment. A parse error no 14111longer occurs if such a comment is at the very end of the input ASL 14112source 14113file. 14114 14115Implemented the "-r" option to override the Revision in the table header. 14116The initial use of this option will be to simplify the evaluation of the 14117AML 14118interpreter by allowing a single ASL source module to be compiled for 14119either 1412032-bit or 64-bit integers. 14121 14122 14123---------------------------------------- 1412427 August 2004. Summary of changes for version 20040827: 14125 141261) ACPI CA Core Subsystem: 14127 14128- Implemented support for implicit object conversion in the non-numeric 14129logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 14130and 14131LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 14132the second operand is implicitly converted on the fly to match the type 14133of 14134the first operand. For example: 14135 14136 LEqual (Source1, Source2) 14137 14138Source1 and Source2 must each evaluate to an integer, a string, or a 14139buffer. 14140The data type of Source1 dictates the required type of Source2. Source2 14141is 14142implicitly converted if necessary to match the type of Source1. 14143 14144- Updated and corrected the behavior of the string conversion support. 14145The 14146rules concerning conversion of buffers to strings (according to the ACPI 14147specification) are as follows: 14148 14149ToDecimalString - explicit byte-wise conversion of buffer to string of 14150decimal values (0-255) separated by commas. ToHexString - explicit byte- 14151wise 14152conversion of buffer to string of hex values (0-FF) separated by commas. 14153ToString - explicit byte-wise conversion of buffer to string. Byte-by- 14154byte 14155copy with no transform except NULL terminated. Any other implicit buffer- 14156to- 14157string conversion - byte-wise conversion of buffer to string of hex 14158values 14159(0-FF) separated by spaces. 14160 14161- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 14162 14163- Fixed a problem in AcpiNsGetPathnameLength where the returned length 14164was 14165one byte too short in the case of a node in the root scope. This could 14166cause a fault during debug output. 14167 14168- Code and Data Size: Current and previous core subsystem library sizes 14169are 14170shown below. These are the code and data sizes for the acpica.lib 14171produced 14172by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14173any ACPI driver or OSPM code. The debug version of the code includes the 14174debug output trace mechanism and has a much larger code and data size. 14175Note 14176that these values will vary depending on the efficiency of the compiler 14177and 14178the compiler options used during generation. 14179 14180 Previous Release: 14181 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14182 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14183 Current Release: 14184 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14185 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14186 14187 141882) iASL Compiler/Disassembler: 14189 14190- Fixed a Linux generation error. 14191 14192 14193---------------------------------------- 1419416 August 2004. Summary of changes for version 20040816: 14195 141961) ACPI CA Core Subsystem: 14197 14198Designed and implemented support within the AML interpreter for the so- 14199called "implicit return". This support returns the result of the last 14200ASL 14201operation within a control method, in the absence of an explicit Return() 14202operator. A few machines depend on this behavior, even though it is not 14203explicitly supported by the ASL language. It is optional support that 14204can 14205be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 14206 14207Removed support for the PCI_Config address space from the internal low 14208level 14209hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 14210support was not used internally, and would not work correctly anyway 14211because 14212the PCI bus number and segment number were not supported. There are 14213separate interfaces for PCI configuration space access because of the 14214unique 14215interface. 14216 14217Code and Data Size: Current and previous core subsystem library sizes are 14218shown below. These are the code and data sizes for the acpica.lib 14219produced 14220by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14221any ACPI driver or OSPM code. The debug version of the code includes the 14222debug output trace mechanism and has a much larger code and data size. 14223Note 14224that these values will vary depending on the efficiency of the compiler 14225and 14226the compiler options used during generation. 14227 14228 Previous Release: 14229 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14230 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14231 Current Release: 14232 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14233 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14234 14235 142362) iASL Compiler/Disassembler: 14237 14238Fixed a problem where constants in ASL expressions at the root level (not 14239within a control method) could be inadvertently truncated during code 14240generation. This problem was introduced in the 20040715 release. 14241 14242 14243---------------------------------------- 1424415 July 2004. Summary of changes for version 20040715: 14245 142461) ACPI CA Core Subsystem: 14247 14248Restructured the internal HW GPE interfaces to pass/track the current 14249state 14250of interrupts (enabled/disabled) in order to avoid possible deadlock and 14251increase flexibility of the interfaces. 14252 14253Implemented a "lexicographical compare" for String and Buffer objects 14254within 14255the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 14256- 14257as per further clarification to the ACPI specification. Behavior is 14258similar 14259to C library "strcmp". 14260 14261Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 14262external function. In the 32-bit non-debug case, the stack use has been 14263reduced from 168 bytes to 32 bytes. 14264 14265Deployed a new run-time configuration flag, 14266AcpiGbl_EnableInterpreterSlack, 14267whose purpose is to allow the AML interpreter to forgive certain bad AML 14268constructs. Default setting is FALSE. 14269 14270Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 14271IO 14272support code. If enabled, it allows field access to go beyond the end of 14273a 14274region definition if the field is within the region length rounded up to 14275the 14276next access width boundary (a common coding error.) 14277 14278Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 14279ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 14280these 14281symbols are lowercase by the latest version of the AcpiSrc tool. 14282 14283The prototypes for the PCI interfaces in acpiosxf.h have been updated to 14284rename "Register" to simply "Reg" to prevent certain compilers from 14285complaining. 14286 14287Code and Data Size: Current and previous core subsystem library sizes are 14288shown below. These are the code and data sizes for the acpica.lib 14289produced 14290by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14291any ACPI driver or OSPM code. The debug version of the code includes the 14292debug output trace mechanism and has a much larger code and data size. 14293Note 14294that these values will vary depending on the efficiency of the compiler 14295and 14296the compiler options used during generation. 14297 14298 Previous Release: 14299 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14300 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14301 Current Release: 14302 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14303 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14304 14305 143062) iASL Compiler/Disassembler: 14307 14308Implemented full support for Package objects within the Case() operator. 14309Note: The Break() operator is currently not supported within Case blocks 14310(TermLists) as there is some question about backward compatibility with 14311ACPI 143121.0 interpreters. 14313 14314 14315Fixed a problem where complex terms were not supported properly within 14316the 14317Switch() operator. 14318 14319Eliminated extraneous warning for compiler-emitted reserved names of the 14320form "_T_x". (Used in Switch/Case operators.) 14321 14322Eliminated optimization messages for "_T_x" objects and small constants 14323within the DefinitionBlock operator. 14324 14325 14326---------------------------------------- 1432715 June 2004. Summary of changes for version 20040615: 14328 143291) ACPI CA Core Subsystem: 14330 14331Implemented support for Buffer and String objects (as per ACPI 2.0) for 14332the 14333following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14334LLessEqual. 14335 14336All directory names in the entire source package are lower case, as they 14337were in earlier releases. 14338 14339Implemented "Disassemble" command in the AML debugger that will 14340disassemble 14341a single control method. 14342 14343Code and Data Size: Current and previous core subsystem library sizes are 14344shown below. These are the code and data sizes for the acpica.lib 14345produced 14346by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14347any ACPI driver or OSPM code. The debug version of the code includes the 14348debug output trace mechanism and has a much larger code and data size. 14349Note 14350that these values will vary depending on the efficiency of the compiler 14351and 14352the compiler options used during generation. 14353 14354 Previous Release: 14355 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14356 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14357 14358 Current Release: 14359 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14360 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14361 14362 143632) iASL Compiler/Disassembler: 14364 14365Implemented support for Buffer and String objects (as per ACPI 2.0) for 14366the 14367following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14368LLessEqual. 14369 14370All directory names in the entire source package are lower case, as they 14371were in earlier releases. 14372 14373Fixed a fault when using the -g or -d<nofilename> options if the FADT was 14374not found. 14375 14376Fixed an issue with the Windows version of the compiler where later 14377versions 14378of Windows place the FADT in the registry under the name "FADT" and not 14379"FACP" as earlier versions did. This applies when using the -g or - 14380d<nofilename> options. The compiler now looks for both strings as 14381necessary. 14382 14383Fixed a problem with compiler namepath optimization where a namepath 14384within 14385the Scope() operator could not be optimized if the namepath was a subpath 14386of 14387the current scope path. 14388 14389---------------------------------------- 1439027 May 2004. Summary of changes for version 20040527: 14391 143921) ACPI CA Core Subsystem: 14393 14394Completed a new design and implementation for EBDA (Extended BIOS Data 14395Area) 14396support in the RSDP scan code. The original code improperly scanned for 14397the 14398EBDA by simply scanning from memory location 0 to 0x400. The correct 14399method 14400is to first obtain the EBDA pointer from within the BIOS data area, then 14401scan 1K of memory starting at the EBDA pointer. There appear to be few 14402if 14403any machines that place the RSDP in the EBDA, however. 14404 14405Integrated a fix for a possible fault during evaluation of BufferField 14406arguments. Obsolete code that was causing the problem was removed. 14407 14408Found and fixed a problem in the Field Support Code where data could be 14409corrupted on a bit field read that starts on an aligned boundary but does 14410not end on an aligned boundary. Merged the read/write "datum length" 14411calculation code into a common procedure. 14412 14413Rolled in a couple of changes to the FreeBSD-specific header. 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.6K Code, 11.5K Data, 89.1K Total 14429 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14430 Current Release: 14431 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14432 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14433 14434 144352) iASL Compiler/Disassembler: 14436 14437Fixed a generation warning produced by some overly-verbose compilers for 14438a 1443964-bit constant. 14440 14441---------------------------------------- 1444214 May 2004. Summary of changes for version 20040514: 14443 144441) ACPI CA Core Subsystem: 14445 14446Fixed a problem where hardware GPE enable bits sometimes not set properly 14447during and after GPE method execution. Result of 04/27 changes. 14448 14449Removed extra "clear all GPEs" when sleeping/waking. 14450 14451Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 14452AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 14453to 14454the new AcpiEv* calls as appropriate. 14455 14456ACPI_OS_NAME was removed from the OS-specific headers. The default name 14457is 14458now "Microsoft Windows NT" for maximum compatibility. However this can 14459be 14460changed by modifying the acconfig.h file. 14461 14462Allow a single invocation of AcpiInstallNotifyHandler for a handler that 14463traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 14464 14465Run _INI methods on ThermalZone objects. This is against the ACPI 14466specification, but there is apparently ASL code in the field that has 14467these 14468_INI methods, and apparently "other" AML interpreters execute them. 14469 14470Performed a full 16/32/64 bit lint that resulted in some small changes. 14471 14472Added a sleep simulation command to the AML debugger to test sleep code. 14473 14474Code and Data Size: Current and previous core subsystem library sizes are 14475shown below. These are the code and data sizes for the acpica.lib 14476produced 14477by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14478any ACPI driver or OSPM code. The debug version of the code includes the 14479debug output trace mechanism and has a much larger code and data size. 14480Note 14481that these values will vary depending on the efficiency of the compiler 14482and 14483the compiler options used during generation. 14484 14485 Previous Release: 14486 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14487 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14488 Current Release: 14489 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14490 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14491 14492---------------------------------------- 1449327 April 2004. Summary of changes for version 20040427: 14494 144951) ACPI CA Core Subsystem: 14496 14497Completed a major overhaul of the GPE handling within ACPI CA. There are 14498now three types of GPEs: wake-only, runtime-only, and combination 14499wake/run. 14500The only GPEs allowed to be combination wake/run are for button-style 14501devices such as a control-method power button, control-method sleep 14502button, 14503or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 14504not 14505referenced by any _PRW methods are marked for "runtime" and hardware 14506enabled. Any GPE that is referenced by a _PRW method is marked for 14507"wake" 14508(and disabled at runtime). However, at sleep time, only those GPEs that 14509have been specifically enabled for wake via the AcpiEnableGpe interface 14510will 14511actually be hardware enabled. 14512 14513A new external interface has been added, AcpiSetGpeType(), that is meant 14514to 14515be used by device drivers to force a GPE to a particular type. It will 14516be 14517especially useful for the drivers for the button devices mentioned above. 14518 14519Completed restructuring of the ACPI CA initialization sequence so that 14520default operation region handlers are installed before GPEs are 14521initialized 14522and the _PRW methods are executed. This will prevent errors when the 14523_PRW 14524methods attempt to access system memory or I/O space. 14525 14526GPE enable/disable no longer reads the GPE enable register. We now keep 14527the 14528enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 14529thus no longer depend on the hardware to maintain these bits. 14530 14531Always clear the wake status and fixed/GPE status bits before sleep, even 14532for state S5. 14533 14534Improved the AML debugger output for displaying the GPE blocks and their 14535current status. 14536 14537Added new strings for the _OSI method, of the form "Windows 2001 SPx" 14538where 14539x = 0,1,2,3,4. 14540 14541Fixed a problem where the physical address was incorrectly calculated 14542when 14543the Load() operator was used to directly load from an Operation Region 14544(vs. 14545loading from a Field object.) Also added check for minimum table length 14546for 14547this case. 14548 14549Fix for multiple mutex acquisition. Restore original thread SyncLevel on 14550mutex release. 14551 14552Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 14553consistency with the other fields returned. 14554 14555Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 14556structure for each GPE in the system, so the size of this structure is 14557important. 14558 14559CPU stack requirement reduction: Cleaned up the method execution and 14560object 14561evaluation paths so that now a parameter structure is passed, instead of 14562copying the various method parameters over and over again. 14563 14564In evregion.c: Correctly exit and reenter the interpreter region if and 14565only if dispatching an operation region request to a user-installed 14566handler. 14567Do not exit/reenter when dispatching to a default handler (e.g., default 14568system memory or I/O handlers) 14569 14570 14571Notes for updating drivers for the new GPE support. The following 14572changes 14573must be made to ACPI-related device drivers that are attached to one or 14574more 14575GPEs: (This information will be added to the ACPI CA Programmer 14576Reference.) 14577 145781) AcpiInstallGpeHandler no longer automatically enables the GPE, you 14579must 14580explicitly call AcpiEnableGpe. 145812) There is a new interface called AcpiSetGpeType. This should be called 14582before enabling the GPE. Also, this interface will automatically disable 14583the GPE if it is currently enabled. 145843) AcpiEnableGpe no longer supports a GPE type flag. 14585 14586Specific drivers that must be changed: 145871) EC driver: 14588 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 14589AeGpeHandler, NULL); 14590 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 14591 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 14592 145932) Button Drivers (Power, Lid, Sleep): 14594Run _PRW method under parent device 14595If _PRW exists: /* This is a control-method button */ 14596 Extract GPE number and possibly GpeDevice 14597 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 14598 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 14599 14600For all other devices that have _PRWs, we automatically set the GPE type 14601to 14602ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 14603This 14604must be done on a selective basis, usually requiring some kind of user 14605app 14606to allow the user to pick the wake devices. 14607 14608 14609Code and Data Size: Current and previous core subsystem library sizes are 14610shown below. These are the code and data sizes for the acpica.lib 14611produced 14612by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14613any ACPI driver or OSPM code. The debug version of the code includes the 14614debug output trace mechanism and has a much larger code and data size. 14615Note 14616that these values will vary depending on the efficiency of the compiler 14617and 14618the compiler options used during generation. 14619 14620 Previous Release: 14621 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14622 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14623 Current Release: 14624 14625 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14626 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14627 14628 14629 14630---------------------------------------- 1463102 April 2004. Summary of changes for version 20040402: 14632 146331) ACPI CA Core Subsystem: 14634 14635Fixed an interpreter problem where an indirect store through an ArgX 14636parameter was incorrectly applying the "implicit conversion rules" during 14637the store. From the ACPI specification: "If the target is a method local 14638or 14639argument (LocalX or ArgX), no conversion is performed and the result is 14640stored directly to the target". The new behavior is to disable implicit 14641conversion during ALL stores to an ArgX. 14642 14643Changed the behavior of the _PRW method scan to ignore any and all errors 14644returned by a given _PRW. This prevents the scan from aborting from the 14645failure of any single _PRW. 14646 14647Moved the runtime configuration parameters from the global init procedure 14648to 14649static variables in acglobal.h. This will allow the host to override the 14650default values easily. 14651 14652Code and Data Size: Current and previous core subsystem library sizes are 14653shown below. These are the code and data sizes for the acpica.lib 14654produced 14655by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14656any ACPI driver or OSPM code. The debug version of the code includes the 14657debug output trace mechanism and has a much larger code and data size. 14658Note 14659that these values will vary depending on the efficiency of the compiler 14660and 14661the compiler options used during generation. 14662 14663 Previous Release: 14664 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14665 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14666 Current Release: 14667 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14668 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14669 14670 146712) iASL Compiler/Disassembler: 14672 14673iASL now fully disassembles SSDTs. However, External() statements are 14674not 14675generated automatically for unresolved symbols at this time. This is a 14676planned feature for future implementation. 14677 14678Fixed a scoping problem in the disassembler that occurs when the type of 14679the 14680target of a Scope() operator is overridden. This problem caused an 14681incorrectly nested internal namespace to be constructed. 14682 14683Any warnings or errors that are emitted during disassembly are now 14684commented 14685out automatically so that the resulting file can be recompiled without 14686any 14687hand editing. 14688 14689---------------------------------------- 1469026 March 2004. Summary of changes for version 20040326: 14691 146921) ACPI CA Core Subsystem: 14693 14694Implemented support for "wake" GPEs via interaction between GPEs and the 14695_PRW methods. Every GPE that is pointed to by one or more _PRWs is 14696identified as a WAKE GPE and by default will no longer be enabled at 14697runtime. Previously, we were blindly enabling all GPEs with a 14698corresponding 14699_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 14700We 14701believe this has been the cause of thousands of "spurious" GPEs on some 14702systems. 14703 14704This new GPE behavior is can be reverted to the original behavior (enable 14705ALL GPEs at runtime) via a runtime flag. 14706 14707Fixed a problem where aliased control methods could not access objects 14708properly. The proper scope within the namespace was not initialized 14709(transferred to the target of the aliased method) before executing the 14710target method. 14711 14712Fixed a potential race condition on internal object deletion on the 14713return 14714object in AcpiEvaluateObject. 14715 14716Integrated a fix for resource descriptors where both _MEM and _MTP were 14717being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 14718wide, 0x0F instead of 0x03.) 14719 14720Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 14721preventing 14722a 14723fault in some cases. 14724 14725Updated Notify() values for debug statements in evmisc.c 14726 14727Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 14728 14729Code and Data Size: Current and previous core subsystem library sizes are 14730shown below. These are the code and data sizes for the acpica.lib 14731produced 14732by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14733any ACPI driver or OSPM code. The debug version of the code includes the 14734debug output trace mechanism and has a much larger code and data size. 14735Note 14736that these values will vary depending on the efficiency of the compiler 14737and 14738the compiler options used during generation. 14739 14740 Previous Release: 14741 14742 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14743 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14744 Current Release: 14745 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14746 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14747 14748---------------------------------------- 1474911 March 2004. Summary of changes for version 20040311: 14750 147511) ACPI CA Core Subsystem: 14752 14753Fixed a problem where errors occurring during the parse phase of control 14754method execution did not abort cleanly. For example, objects created and 14755installed in the namespace were not deleted. This caused all subsequent 14756invocations of the method to return the AE_ALREADY_EXISTS exception. 14757 14758Implemented a mechanism to force a control method to "Serialized" 14759execution 14760if the method attempts to create namespace objects. (The root of the 14761AE_ALREADY_EXISTS problem.) 14762 14763Implemented support for the predefined _OSI "internal" control method. 14764Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 14765and 14766"Windows 2001.1", and can be easily upgraded for new strings as 14767necessary. 14768This feature will allow "other" operating systems to execute the fully 14769tested, "Windows" code path through the ASL code 14770 14771Global Lock Support: Now allows multiple acquires and releases with any 14772internal thread. Removed concept of "owning thread" for this special 14773mutex. 14774 14775Fixed two functions that were inappropriately declaring large objects on 14776the 14777CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 14778during 14779method execution considerably. 14780 14781Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 14782S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 14783 14784Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 14785defined on the machine. 14786 14787Implemented two runtime options: One to force all control method 14788execution 14789to "Serialized" to mimic Windows behavior, another to disable _OSI 14790support 14791if it causes problems on a given machine. 14792 14793Code and Data Size: Current and previous core subsystem library sizes are 14794shown below. These are the code and data sizes for the acpica.lib 14795produced 14796by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14797any ACPI driver or OSPM code. The debug version of the code includes the 14798debug output trace mechanism and has a much larger code and data size. 14799Note 14800that these values will vary depending on the efficiency of the compiler 14801and 14802the compiler options used during generation. 14803 14804 Previous Release: 14805 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14806 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14807 Current Release: 14808 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14809 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14810 148112) iASL Compiler/Disassembler: 14812 14813Fixed an array size problem for FreeBSD that would cause the compiler to 14814fault. 14815 14816---------------------------------------- 1481720 February 2004. Summary of changes for version 20040220: 14818 14819 148201) ACPI CA Core Subsystem: 14821 14822Implemented execution of _SxD methods for Device objects in the 14823GetObjectInfo interface. 14824 14825Fixed calls to _SST method to pass the correct arguments. 14826 14827Added a call to _SST on wake to restore to "working" state. 14828 14829Check for End-Of-Buffer failure case in the WalkResources interface. 14830 14831Integrated fix for 64-bit alignment issue in acglobal.h by moving two 14832structures to the beginning of the file. 14833 14834After wake, clear GPE status register(s) before enabling GPEs. 14835 14836After wake, clear/enable power button. (Perhaps we should clear/enable 14837all 14838fixed events upon wake.) 14839 14840Fixed a couple of possible memory leaks in the Namespace manager. 14841 14842Integrated latest acnetbsd.h file. 14843 14844---------------------------------------- 1484511 February 2004. Summary of changes for version 20040211: 14846 14847 148481) ACPI CA Core Subsystem: 14849 14850Completed investigation and implementation of the call-by-reference 14851mechanism for control method arguments. 14852 14853Fixed a problem where a store of an object into an indexed package could 14854fail if the store occurs within a different method than the method that 14855created the package. 14856 14857Fixed a problem where the ToDecimal operator could return incorrect 14858results. 14859 14860Fixed a problem where the CopyObject operator could fail on some of the 14861more 14862obscure objects (e.g., Reference objects.) 14863 14864Improved the output of the Debug object to display buffer, package, and 14865index objects. 14866 14867Fixed a problem where constructs of the form "RefOf (ArgX)" did not 14868return 14869the expected result. 14870 14871Added permanent ACPI_REPORT_ERROR macros for all instances of the 14872ACPI_AML_INTERNAL exception. 14873 14874Integrated latest version of acfreebsd.h 14875 14876---------------------------------------- 1487716 January 2004. Summary of changes for version 20040116: 14878 14879The purpose of this release is primarily to update the copyright years in 14880each module, thus causing a huge number of diffs. There are a few small 14881functional changes, however. 14882 148831) ACPI CA Core Subsystem: 14884 14885Improved error messages when there is a problem finding one or more of 14886the 14887required base ACPI tables 14888 14889Reintroduced the definition of APIC_HEADER in actbl.h 14890 14891Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 14892 14893Removed extraneous reference to NewObj in dsmthdat.c 14894 148952) iASL compiler 14896 14897Fixed a problem introduced in December that disabled the correct 14898disassembly 14899of Resource Templates 14900 14901 14902---------------------------------------- 1490303 December 2003. Summary of changes for version 20031203: 14904 149051) ACPI CA Core Subsystem: 14906 14907Changed the initialization of Operation Regions during subsystem 14908init to perform two entire walks of the ACPI namespace; The first 14909to initialize the regions themselves, the second to execute the 14910_REG methods. This fixed some interdependencies across _REG 14911methods found on some machines. 14912 14913Fixed a problem where a Store(Local0, Local1) could simply update 14914the object reference count, and not create a new copy of the 14915object if the Local1 is uninitialized. 14916 14917Implemented support for the _SST reserved method during sleep 14918transitions. 14919 14920Implemented support to clear the SLP_TYP and SLP_EN bits when 14921waking up, this is apparently required by some machines. 14922 14923When sleeping, clear the wake status only if SleepState is not S5. 14924 14925Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 14926pointer arithmetic advanced a string pointer too far. 14927 14928Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 14929could be returned if the requested table has not been loaded. 14930 14931Within the support for IRQ resources, restructured the handling of 14932the active and edge/level bits. 14933 14934Fixed a few problems in AcpiPsxExecute() where memory could be 14935leaked under certain error conditions. 14936 14937Improved error messages for the cases where the ACPI mode could 14938not be entered. 14939 14940Code and Data Size: Current and previous core subsystem library 14941sizes are shown below. These are the code and data sizes for the 14942acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14943these values do not include any ACPI driver or OSPM code. The 14944debug version of the code includes the debug output trace 14945mechanism and has a much larger code and data size. Note that 14946these values will vary depending on the efficiency of the compiler 14947and the compiler options used during generation. 14948 14949 Previous Release (20031029): 14950 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14951 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14952 Current Release: 14953 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14954 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14955 149562) iASL Compiler/Disassembler: 14957 14958Implemented a fix for the iASL disassembler where a bad index was 14959generated. This was most noticeable on 64-bit platforms 14960 14961 14962---------------------------------------- 1496329 October 2003. Summary of changes for version 20031029: 14964 149651) ACPI CA Core Subsystem: 14966 14967 14968Fixed a problem where a level-triggered GPE with an associated 14969_Lxx control method was incorrectly cleared twice. 14970 14971Fixed a problem with the Field support code where an access can 14972occur beyond the end-of-region if the field is non-aligned but 14973extends to the very end of the parent region (resulted in an 14974AE_AML_REGION_LIMIT exception.) 14975 14976Fixed a problem with ACPI Fixed Events where an RT Clock handler 14977would not get invoked on an RTC event. The RTC event bitmasks for 14978the PM1 registers were not being initialized properly. 14979 14980Implemented support for executing _STA and _INI methods for 14981Processor objects. Although this is currently not part of the 14982ACPI specification, there is existing ASL code that depends on the 14983init-time execution of these methods. 14984 14985Implemented and deployed a GetDescriptorName function to decode 14986the various types of internal descriptors. Guards against null 14987descriptors during debug output also. 14988 14989Implemented and deployed a GetNodeName function to extract the 4- 14990character namespace node name. This function simplifies the debug 14991and error output, as well as guarding against null pointers during 14992output. 14993 14994Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 14995simplify the debug and error output of 64-bit integers. This 14996macro replaces the HIDWORD and LODWORD macros for dumping these 14997integers. 14998 14999Updated the implementation of the Stall() operator to only call 15000AcpiOsStall(), and also return an error if the operand is larger 15001than 255. This preserves the required behavior of not 15002relinquishing the processor, as would happen if AcpiOsSleep() was 15003called for "long stalls". 15004 15005Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 15006initialized are now treated as NOOPs. 15007 15008Cleaned up a handful of warnings during 64-bit generation. 15009 15010Fixed a reported error where and incorrect GPE number was passed 15011to the GPE dispatch handler. This value is only used for error 15012output, however. Used this opportunity to clean up and streamline 15013the GPE dispatch code. 15014 15015Code and Data Size: Current and previous core subsystem library 15016sizes are shown below. These are the code and data sizes for the 15017acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15018these values do not include any ACPI driver or OSPM code. The 15019 15020debug version of the code includes the debug output trace 15021mechanism and has a much larger code and data size. Note that 15022these values will vary depending on the efficiency of the compiler 15023and the compiler options used during generation. 15024 15025 Previous Release (20031002): 15026 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15027 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15028 Current Release: 15029 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15030 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15031 15032 150332) iASL Compiler/Disassembler: 15034 15035Updated the iASL compiler to return an error if the operand to the 15036Stall() operator is larger than 255. 15037 15038 15039---------------------------------------- 1504002 October 2003. Summary of changes for version 20031002: 15041 15042 150431) ACPI CA Core Subsystem: 15044 15045Fixed a problem with Index Fields where the index was not 15046incremented for fields that require multiple writes to the 15047index/data registers (Fields that are wider than the data 15048register.) 15049 15050Fixed a problem with all Field objects where a write could go 15051beyond the end-of-field if the field was larger than the access 15052granularity and therefore required multiple writes to complete the 15053request. An extra write beyond the end of the field could happen 15054inadvertently. 15055 15056Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 15057would incorrectly be returned if the width of the Data Register 15058was larger than the specified field access width. 15059 15060Completed fixes for LoadTable() and Unload() and verified their 15061operation. Implemented full support for the "DdbHandle" object 15062throughout the ACPI CA subsystem. 15063 15064Implemented full support for the MADT and ECDT tables in the ACPI 15065CA header files. Even though these tables are not directly 15066consumed by ACPI CA, the header definitions are useful for ACPI 15067device drivers. 15068 15069Integrated resource descriptor fixes posted to the Linux ACPI 15070list. This included checks for minimum descriptor length, and 15071support for trailing NULL strings within descriptors that have 15072optional string elements. 15073 15074Code and Data Size: Current and previous core subsystem library 15075sizes are shown below. These are the code and data sizes for the 15076acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15077these values do not include any ACPI driver or OSPM code. The 15078debug version of the code includes the debug output trace 15079mechanism and has a much larger code and data size. Note that 15080these values will vary depending on the efficiency of the compiler 15081and the compiler options used during generation. 15082 15083 Previous Release (20030918): 15084 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15085 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15086 Current Release: 15087 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15088 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15089 15090 150912) iASL Compiler: 15092 15093Implemented detection of non-ASCII characters within the input 15094source ASL file. This catches attempts to compile binary (AML) 15095files early in the compile, with an informative error message. 15096 15097Fixed a problem where the disassembler would fault if the output 15098filename could not be generated or if the output file could not be 15099opened. 15100 15101---------------------------------------- 1510218 September 2003. Summary of changes for version 20030918: 15103 15104 151051) ACPI CA Core Subsystem: 15106 15107Found and fixed a longstanding problem with the late execution of 15108the various deferred AML opcodes (such as Operation Regions, 15109Buffer Fields, Buffers, and Packages). If the name string 15110specified for the name of the new object placed the object in a 15111scope other than the current scope, the initialization/execution 15112of the opcode failed. The solution to this problem was to 15113implement a mechanism where the late execution of such opcodes 15114does not attempt to lookup/create the name a second time in an 15115incorrect scope. This fixes the "region size computed 15116incorrectly" problem. 15117 15118Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 15119Global Lock AE_BAD_PARAMETER error. 15120 15121Fixed several 64-bit issues with prototypes, casting and data 15122types. 15123 15124Removed duplicate prototype from acdisasm.h 15125 15126Fixed an issue involving EC Operation Region Detach (Shaohua Li) 15127 15128Code and Data Size: Current and previous core subsystem library 15129sizes are shown below. These are the code and data sizes for the 15130acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15131these values do not include any ACPI driver or OSPM code. The 15132debug version of the code includes the debug output trace 15133mechanism and has a much larger code and data size. Note that 15134these values will vary depending on the efficiency of the compiler 15135and the compiler options used during generation. 15136 15137 Previous Release: 15138 15139 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15140 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15141 Current Release: 15142 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15143 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15144 15145 151462) Linux: 15147 15148Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 15149correct sleep time in seconds. 15150 15151---------------------------------------- 1515214 July 2003. Summary of changes for version 20030619: 15153 151541) ACPI CA Core Subsystem: 15155 15156Parse SSDTs in order discovered, as opposed to reverse order 15157(Hrvoje Habjanic) 15158 15159Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 15160Klausner, 15161 Nate Lawson) 15162 15163 151642) Linux: 15165 15166Dynamically allocate SDT list (suggested by Andi Kleen) 15167 15168proc function return value cleanups (Andi Kleen) 15169 15170Correctly handle NMI watchdog during long stalls (Andrew Morton) 15171 15172Make it so acpismp=force works (reported by Andrew Morton) 15173 15174 15175---------------------------------------- 1517619 June 2003. Summary of changes for version 20030619: 15177 151781) ACPI CA Core Subsystem: 15179 15180Fix To/FromBCD, eliminating the need for an arch-specific #define. 15181 15182Do not acquire a semaphore in the S5 shutdown path. 15183 15184Fix ex_digits_needed for 0. (Takayoshi Kochi) 15185 15186Fix sleep/stall code reversal. (Andi Kleen) 15187 15188Revert a change having to do with control method calling 15189semantics. 15190 151912) Linux: 15192 15193acpiphp update (Takayoshi Kochi) 15194 15195Export acpi_disabled for sonypi (Stelian Pop) 15196 15197Mention acpismp=force in config help 15198 15199Re-add acpitable.c and acpismp=force. This improves backwards 15200 15201compatibility and also cleans up the code to a significant degree. 15202 15203Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 15204 15205---------------------------------------- 1520622 May 2003. Summary of changes for version 20030522: 15207 152081) ACPI CA Core Subsystem: 15209 15210Found and fixed a reported problem where an AE_NOT_FOUND error 15211occurred occasionally during _BST evaluation. This turned out to 15212be an Owner ID allocation issue where a called method did not get 15213a new ID assigned to it. Eventually, (after 64k calls), the Owner 15214ID UINT16 would wraparound so that the ID would be the same as the 15215caller's and the called method would delete the caller's 15216namespace. 15217 15218Implemented extended error reporting for control methods that are 15219aborted due to a run-time exception. Output includes the exact 15220AML instruction that caused the method abort, a dump of the method 15221locals and arguments at the time of the abort, and a trace of all 15222nested control method calls. 15223 15224Modified the interpreter to allow the creation of buffers of zero 15225length from the AML code. Implemented new code to ensure that no 15226attempt is made to actually allocate a memory buffer (of length 15227zero) - instead, a simple buffer object with a NULL buffer pointer 15228and length zero is created. A warning is no longer issued when 15229the AML attempts to create a zero-length buffer. 15230 15231Implemented a workaround for the "leading asterisk issue" in 15232_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 15233asterisk is automatically removed if present in any HID, UID, or 15234CID strings. The iASL compiler will still flag this asterisk as 15235an error, however. 15236 15237Implemented full support for _CID methods that return a package of 15238multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 15239now additionally returns a device _CID list if present. This 15240required a change to the external interface in order to pass an 15241ACPI_BUFFER object as a parameter since the _CID list is of 15242variable length. 15243 15244Fixed a problem with the new AE_SAME_HANDLER exception where 15245handler initialization code did not know about this exception. 15246 15247Code and Data Size: Current and previous core subsystem library 15248sizes are shown below. These are the code and data sizes for the 15249acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15250these values do not include any ACPI driver or OSPM code. The 15251debug version of the code includes the debug output trace 15252mechanism and has a much larger code and data size. Note that 15253these values will vary depending on the efficiency of the compiler 15254and the compiler options used during generation. 15255 15256 Previous Release (20030509): 15257 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15258 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15259 Current Release: 15260 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15261 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15262 15263 152642) Linux: 15265 15266Fixed a bug in which we would reinitialize the ACPI interrupt 15267after it was already working, thus disabling all ACPI and the IRQs 15268for any other device sharing the interrupt. (Thanks to Stian 15269Jordet) 15270 15271Toshiba driver update (John Belmonte) 15272 15273Return only 0 or 1 for our interrupt handler status (Andrew 15274Morton) 15275 15276 152773) iASL Compiler: 15278 15279Fixed a reported problem where multiple (nested) ElseIf() 15280statements were not handled correctly by the compiler, resulting 15281in incorrect warnings and incorrect AML code. This was a problem 15282in both the ASL parser and the code generator. 15283 15284 152854) Documentation: 15286 15287Added changes to existing interfaces, new exception codes, and new 15288text concerning reference count object management versus garbage 15289collection. 15290 15291---------------------------------------- 1529209 May 2003. Summary of changes for version 20030509. 15293 15294 152951) ACPI CA Core Subsystem: 15296 15297Changed the subsystem initialization sequence to hold off 15298installation of address space handlers until the hardware has been 15299initialized and the system has entered ACPI mode. This is because 15300the installation of space handlers can cause _REG methods to be 15301run. Previously, the _REG methods could potentially be run before 15302ACPI mode was enabled. 15303 15304Fixed some memory leak issues related to address space handler and 15305notify handler installation. There were some problems with the 15306reference count mechanism caused by the fact that the handler 15307objects are shared across several namespace objects. 15308 15309Fixed a reported problem where reference counts within the 15310namespace were not properly updated when named objects created by 15311method execution were deleted. 15312 15313Fixed a reported problem where multiple SSDTs caused a deletion 15314issue during subsystem termination. Restructured the table data 15315structures to simplify the linked lists and the related code. 15316 15317Fixed a problem where the table ID associated with secondary 15318tables (SSDTs) was not being propagated into the namespace objects 15319created by those tables. This would only present a problem for 15320tables that are unloaded at run-time, however. 15321 15322Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 15323type as the length parameter (instead of UINT32). 15324 15325Solved a long-standing problem where an ALREADY_EXISTS error 15326appears on various systems. This problem could happen when there 15327are multiple PCI_Config operation regions under a single PCI root 15328bus. This doesn't happen very frequently, but there are some 15329systems that do this in the ASL. 15330 15331Fixed a reported problem where the internal DeleteNode function 15332was incorrectly handling the case where a namespace node was the 15333first in the parent's child list, and had additional peers (not 15334the only child, but first in the list of children.) 15335 15336Code and Data Size: Current core subsystem library sizes are shown 15337below. These are the code and data sizes for the acpica.lib 15338produced by the Microsoft Visual C++ 6.0 compiler, and these 15339values do not include any ACPI driver or OSPM code. The debug 15340version of the code includes the debug output trace mechanism and 15341has a much larger code and data size. Note that these values will 15342vary depending on the efficiency of the compiler and the compiler 15343options used during generation. 15344 15345 Previous Release 15346 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15347 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15348 Current Release: 15349 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15350 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15351 15352 153532) Linux: 15354 15355Allow ":" in OS override string (Ducrot Bruno) 15356 15357Kobject fix (Greg KH) 15358 15359 153603 iASL Compiler/Disassembler: 15361 15362Fixed a problem in the generation of the C source code files (AML 15363is emitted in C source statements for BIOS inclusion) where the 15364Ascii dump that appears within a C comment at the end of each line 15365could cause a compile time error if the AML sequence happens to 15366have an open comment or close comment sequence embedded. 15367 15368 15369---------------------------------------- 1537024 April 2003. Summary of changes for version 20030424. 15371 15372 153731) ACPI CA Core Subsystem: 15374 15375Support for big-endian systems has been implemented. Most of the 15376support has been invisibly added behind big-endian versions of the 15377ACPI_MOVE_* macros. 15378 15379Fixed a problem in AcpiHwDisableGpeBlock() and 15380AcpiHwClearGpeBlock() where an incorrect offset was passed to the 15381low level hardware write routine. The offset parameter was 15382actually eliminated from the low level read/write routines because 15383they had become obsolete. 15384 15385Fixed a problem where a handler object was deleted twice during 15386the removal of a fixed event handler. 15387 15388 153892) Linux: 15390 15391A fix for SMP systems with link devices was contributed by 15392 15393Compaq's Dan Zink. 15394 15395(2.5) Return whether we handled the interrupt in our IRQ handler. 15396(Linux ISRs no longer return void, so we can propagate the handler 15397return value from the ACPI CA core back to the OS.) 15398 15399 15400 154013) Documentation: 15402 15403The ACPI CA Programmer Reference has been updated to reflect new 15404interfaces and changes to existing interfaces. 15405 15406---------------------------------------- 1540728 March 2003. Summary of changes for version 20030328. 15408 154091) ACPI CA Core Subsystem: 15410 15411The GPE Block Device support has been completed. New interfaces 15412are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 15413interfaces (enable, disable, clear, getstatus) have been split 15414into separate interfaces for Fixed Events and General Purpose 15415Events (GPEs) in order to support GPE Block Devices properly. 15416 15417Fixed a problem where the error message "Failed to acquire 15418semaphore" would appear during operations on the embedded 15419controller (EC). 15420 15421Code and Data Size: Current core subsystem library sizes are shown 15422below. These are the code and data sizes for the acpica.lib 15423produced by the Microsoft Visual C++ 6.0 compiler, and these 15424values do not include any ACPI driver or OSPM code. The debug 15425version of the code includes the debug output trace mechanism and 15426has a much larger code and data size. Note that these values will 15427vary depending on the efficiency of the compiler and the compiler 15428options used during generation. 15429 15430 Previous Release 15431 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15432 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15433 Current Release: 15434 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15435 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15436 15437 15438---------------------------------------- 1543928 February 2003. Summary of changes for version 20030228. 15440 15441 154421) ACPI CA Core Subsystem: 15443 15444The GPE handling and dispatch code has been completely overhauled 15445in preparation for support of GPE Block Devices (ID ACPI0006). 15446This affects internal data structures and code only; there should 15447be no differences visible externally. One new file has been 15448added, evgpeblk.c 15449 15450The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 15451fields that are used to determine the GPE block lengths. The 15452REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15453structures are ignored. This is per the ACPI specification but it 15454isn't very clear. The full 256 Block 0/1 GPEs are now supported 15455(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 15456 15457In the SCI interrupt handler, removed the read of the PM1_CONTROL 15458register to look at the SCI_EN bit. On some machines, this read 15459causes an SMI event and greatly slows down SCI events. (This may 15460in fact be the cause of slow battery status response on some 15461systems.) 15462 15463Fixed a problem where a store of a NULL string to a package object 15464could cause the premature deletion of the object. This was seen 15465during execution of the battery _BIF method on some systems, 15466resulting in no battery data being returned. 15467 15468Added AcpiWalkResources interface to simplify parsing of resource 15469lists. 15470 15471Code and Data Size: Current core subsystem library sizes are shown 15472below. These are the code and data sizes for the acpica.lib 15473produced by the Microsoft Visual C++ 6.0 compiler, and these 15474values do not include any ACPI driver or OSPM code. The debug 15475version of the code includes the debug output trace mechanism and 15476has a much larger code and data size. Note that these values will 15477vary depending on the efficiency of the compiler and the compiler 15478options used during generation. 15479 15480 Previous Release 15481 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15482 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15483 Current Release: 15484 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15485 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15486 15487 154882) Linux 15489 15490S3 fixes (Ole Rohne) 15491 15492Update ACPI PHP driver with to use new acpi_walk_resource API 15493(Bjorn Helgaas) 15494 15495Add S4BIOS support (Pavel Machek) 15496 15497Map in entire table before performing checksum (John Stultz) 15498 15499Expand the mem= cmdline to allow the specification of reserved and 15500ACPI DATA blocks (Pavel Machek) 15501 15502Never use ACPI on VISWS 15503 15504Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 15505 15506Revert a change that allowed P_BLK lengths to be 4 or 5. This is 15507causing us to think that some systems support C2 when they really 15508don't. 15509 15510Do not count processor objects for non-present CPUs (Thanks to 15511Dominik Brodowski) 15512 15513 155143) iASL Compiler: 15515 15516Fixed a problem where ASL include files could not be found and 15517opened. 15518 15519Added support for the _PDC reserved name. 15520 15521 15522---------------------------------------- 1552322 January 2003. Summary of changes for version 20030122. 15524 15525 155261) ACPI CA Core Subsystem: 15527 15528Added a check for constructs of the form: Store (Local0, Local0) 15529where Local0 is not initialized. Apparently, some BIOS 15530programmers believe that this is a NOOP. Since this store doesn't 15531do anything anyway, the new prototype behavior will ignore this 15532error. This is a case where we can relax the strict checking in 15533the interpreter in the name of compatibility. 15534 15535 155362) Linux 15537 15538The AcpiSrc Source Conversion Utility has been released with the 15539Linux package for the first time. This is the utility that is 15540used to convert the ACPI CA base source code to the Linux version. 15541 15542(Both) Handle P_BLK lengths shorter than 6 more gracefully 15543 15544(Both) Move more headers to include/acpi, and delete an unused 15545header. 15546 15547(Both) Move drivers/acpi/include directory to include/acpi 15548 15549(Both) Boot functions don't use cmdline, so don't pass it around 15550 15551(Both) Remove include of unused header (Adrian Bunk) 15552 15553(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 15554the 15555former now also includes the latter, acpiphp.h only needs the one, 15556now. 15557 15558(2.5) Make it possible to select method of bios restoring after S3 15559resume. [=> no more ugly ifdefs] (Pavel Machek) 15560 15561(2.5) Make proc write interfaces work (Pavel Machek) 15562 15563(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 15564 15565(2.5) Break out ACPI Perf code into its own module, under cpufreq 15566(Dominik Brodowski) 15567 15568(2.4) S4BIOS support (Ducrot Bruno) 15569 15570(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 15571Visinoni) 15572 15573 155743) iASL Compiler: 15575 15576Added support to disassemble SSDT and PSDTs. 15577 15578Implemented support to obtain SSDTs from the Windows registry if 15579available. 15580 15581 15582---------------------------------------- 1558309 January 2003. Summary of changes for version 20030109. 15584 155851) ACPI CA Core Subsystem: 15586 15587Changed the behavior of the internal Buffer-to-String conversion 15588function. The current ACPI specification states that the contents 15589of the buffer are "converted to a string of two-character 15590hexadecimal numbers, each separated by a space". Unfortunately, 15591this definition is not backwards compatible with existing ACPI 1.0 15592implementations (although the behavior was not defined in the ACPI 155931.0 specification). The new behavior simply copies data from the 15594buffer to the string until a null character is found or the end of 15595the buffer is reached. The new String object is always null 15596terminated. This problem was seen during the generation of _BIF 15597battery data where incorrect strings were returned for battery 15598type, etc. This will also require an errata to the ACPI 15599specification. 15600 15601Renamed all instances of NATIVE_UINT and NATIVE_INT to 15602ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 15603 15604Copyright in all module headers (both Linux and non-Linux) has be 15605updated to 2003. 15606 15607Code and Data Size: Current core subsystem library sizes are shown 15608below. These are the code and data sizes for the acpica.lib 15609produced by the Microsoft Visual C++ 6.0 compiler, and these 15610values do not include any ACPI driver or OSPM code. The debug 15611version of the code includes the debug output trace mechanism and 15612has a much larger code and data size. Note that these values will 15613vary depending on the efficiency of the compiler and the compiler 15614options used during generation. 15615 15616 Previous Release 15617 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15618 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15619 Current Release: 15620 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15621 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15622 15623 156242) Linux 15625 15626Fixed an oops on module insertion/removal (Matthew Tippett) 15627 15628(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 15629 15630(2.5) Replace pr_debug (Randy Dunlap) 15631 15632(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 15633 15634(Both) Eliminate spawning of thread from timer callback, in favor 15635of schedule_work() 15636 15637(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 15638 15639(Both) Added define for Fixed Function HW region (Matthew Wilcox) 15640 15641(Both) Add missing statics to button.c (Pavel Machek) 15642 15643Several changes have been made to the source code translation 15644utility that generates the Linux Code in order to make the code 15645more "Linux-like": 15646 15647All typedefs on structs and unions have been removed in keeping 15648with the Linux coding style. 15649 15650Removed the non-Linux SourceSafe module revision number from each 15651module header. 15652 15653Completed major overhaul of symbols to be lowercase for linux. 15654Doubled the number of symbols that are lowercase. 15655 15656Fixed a problem where identifiers within procedure headers and 15657within quotes were not fully lower cased (they were left with a 15658starting capital.) 15659 15660Some C macros whose only purpose is to allow the generation of 16- 15661bit code are now completely removed in the Linux code, increasing 15662readability and maintainability. 15663 15664---------------------------------------- 15665 1566612 December 2002. Summary of changes for version 20021212. 15667 15668 156691) ACPI CA Core Subsystem: 15670 15671Fixed a problem where the creation of a zero-length AML Buffer 15672would cause a fault. 15673 15674Fixed a problem where a Buffer object that pointed to a static AML 15675buffer (in an ACPI table) could inadvertently be deleted, causing 15676memory corruption. 15677 15678Fixed a problem where a user buffer (passed in to the external 15679ACPI CA interfaces) could be overwritten if the buffer was too 15680small to complete the operation, causing memory corruption. 15681 15682Fixed a problem in the Buffer-to-String conversion code where a 15683string of length one was always returned, regardless of the size 15684of the input Buffer object. 15685 15686Removed the NATIVE_CHAR data type across the entire source due to 15687lack of need and lack of consistent use. 15688 15689Code and Data Size: Current core subsystem library sizes are shown 15690below. These are the code and data sizes for the acpica.lib 15691produced by the Microsoft Visual C++ 6.0 compiler, and these 15692values do not include any ACPI driver or OSPM code. The debug 15693version of the code includes the debug output trace mechanism and 15694has a much larger code and data size. Note that these values will 15695vary depending on the efficiency of the compiler and the compiler 15696options used during generation. 15697 15698 Previous Release 15699 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15700 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15701 Current Release: 15702 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15703 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15704 15705 15706---------------------------------------- 1570705 December 2002. Summary of changes for version 20021205. 15708 157091) ACPI CA Core Subsystem: 15710 15711Fixed a problem where a store to a String or Buffer object could 15712cause corruption of the DSDT if the object type being stored was 15713the same as the target object type and the length of the object 15714being stored was equal to or smaller than the original (existing) 15715target object. This was seen to cause corruption of battery _BIF 15716buffers if the _BIF method modified the buffer on the fly. 15717 15718Fixed a problem where an internal error was generated if a control 15719method invocation was used in an OperationRegion, Buffer, or 15720Package declaration. This was caused by the deferred parsing of 15721the control method and thus the deferred creation of the internal 15722method object. The solution to this problem was to create the 15723internal method object at the moment the method is encountered in 15724the first pass - so that subsequent references to the method will 15725able to obtain the required parameter count and thus properly 15726parse the method invocation. This problem presented itself as an 15727AE_AML_INTERNAL during the pass 1 parse phase during table load. 15728 15729Fixed a problem where the internal String object copy routine did 15730not always allocate sufficient memory for the target String object 15731and caused memory corruption. This problem was seen to cause 15732"Allocation already present in list!" errors as memory allocation 15733became corrupted. 15734 15735Implemented a new function for the evaluation of namespace objects 15736that allows the specification of the allowable return object 15737types. This simplifies a lot of code that checks for a return 15738object of one or more specific objects returned from the 15739evaluation (such as _STA, etc.) This may become and external 15740function if it would be useful to ACPI-related drivers. 15741 15742Completed another round of prefixing #defines with "ACPI_" for 15743clarity. 15744 15745Completed additional code restructuring to allow more modular 15746linking for iASL compiler and AcpiExec. Several files were split 15747creating new files. New files: nsparse.c dsinit.c evgpe.c 15748 15749Implemented an abort mechanism to terminate an executing control 15750method via the AML debugger. This feature is useful for debugging 15751control methods that depend (wait) for specific hardware 15752responses. 15753 15754Code and Data Size: Current core subsystem library sizes are shown 15755below. These are the code and data sizes for the acpica.lib 15756produced by the Microsoft Visual C++ 6.0 compiler, and these 15757values do not include any ACPI driver or OSPM code. The debug 15758version of the code includes the debug output trace mechanism and 15759has a much larger code and data size. Note that these values will 15760vary depending on the efficiency of the compiler and the compiler 15761options used during generation. 15762 15763 Previous Release 15764 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15765 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15766 Current Release: 15767 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15768 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15769 15770 157712) iASL Compiler/Disassembler 15772 15773Fixed a compiler code generation problem for "Interrupt" Resource 15774Descriptors. If specified in the ASL, the optional "Resource 15775Source Index" and "Resource Source" fields were not inserted into 15776the correct location within the AML resource descriptor, creating 15777an invalid descriptor. 15778 15779Fixed a disassembler problem for "Interrupt" resource descriptors. 15780The optional "Resource Source Index" and "Resource Source" fields 15781were ignored. 15782 15783 15784---------------------------------------- 1578522 November 2002. Summary of changes for version 20021122. 15786 15787 157881) ACPI CA Core Subsystem: 15789 15790Fixed a reported problem where an object stored to a Method Local 15791or Arg was not copied to a new object during the store - the 15792object pointer was simply copied to the Local/Arg. This caused 15793all subsequent operations on the Local/Arg to also affect the 15794original source of the store operation. 15795 15796Fixed a problem where a store operation to a Method Local or Arg 15797was not completed properly if the Local/Arg contained a reference 15798(from RefOf) to a named field. The general-purpose store-to- 15799namespace-node code is now used so that this case is handled 15800automatically. 15801 15802Fixed a problem where the internal object copy routine would cause 15803a protection fault if the object being copied was a Package and 15804contained either 1) a NULL package element or 2) a nested sub- 15805package. 15806 15807Fixed a problem with the GPE initialization that resulted from an 15808ambiguity in the ACPI specification. One section of the 15809specification states that both the address and length of the GPE 15810block must be zero if the block is not supported. Another section 15811implies that only the address need be zero if the block is not 15812supported. The code has been changed so that both the address and 15813the length must be non-zero to indicate a valid GPE block (i.e., 15814if either the address or the length is zero, the GPE block is 15815invalid.) 15816 15817Code and Data Size: Current core subsystem library sizes are shown 15818below. These are the code and data sizes for the acpica.lib 15819produced by the Microsoft Visual C++ 6.0 compiler, and these 15820values do not include any ACPI driver or OSPM code. The debug 15821version of the code includes the debug output trace mechanism and 15822has a much larger code and data size. Note that these values will 15823vary depending on the efficiency of the compiler and the compiler 15824options used during generation. 15825 15826 Previous Release 15827 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15828 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15829 Current Release: 15830 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15831 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15832 15833 158342) Linux 15835 15836Cleaned up EC driver. Exported an external EC read/write 15837interface. By going through this, other drivers (most notably 15838sonypi) will be able to serialize access to the EC. 15839 15840 158413) iASL Compiler/Disassembler 15842 15843Implemented support to optionally generate include files for both 15844ASM and C (the -i switch). This simplifies BIOS development by 15845automatically creating include files that contain external 15846declarations for the symbols that are created within the 15847 15848(optionally generated) ASM and C AML source files. 15849 15850 15851---------------------------------------- 1585215 November 2002. Summary of changes for version 20021115. 15853 158541) ACPI CA Core Subsystem: 15855 15856Fixed a memory leak problem where an error during resolution of 15857 15858method arguments during a method invocation from another method 15859failed to cleanup properly by deleting all successfully resolved 15860argument objects. 15861 15862Fixed a problem where the target of the Index() operator was not 15863correctly constructed if the source object was a package. This 15864problem has not been detected because the use of a target operand 15865with Index() is very rare. 15866 15867Fixed a problem with the Index() operator where an attempt was 15868made to delete the operand objects twice. 15869 15870Fixed a problem where an attempt was made to delete an operand 15871twice during execution of the CondRefOf() operator if the target 15872did not exist. 15873 15874Implemented the first of perhaps several internal create object 15875functions that create and initialize a specific object type. This 15876consolidates duplicated code wherever the object is created, thus 15877shrinking the size of the subsystem. 15878 15879Implemented improved debug/error messages for errors that occur 15880during nested method invocations. All executing method pathnames 15881are displayed (with the error) as the call stack is unwound - thus 15882simplifying debug. 15883 15884Fixed a problem introduced in the 10/02 release that caused 15885premature deletion of a buffer object if a buffer was used as an 15886ASL operand where an integer operand is required (Thus causing an 15887implicit object conversion from Buffer to Integer.) The change in 15888the 10/02 release was attempting to fix a memory leak (albeit 15889incorrectly.) 15890 15891Code and Data Size: Current core subsystem library sizes are shown 15892below. These are the code and data sizes for the acpica.lib 15893produced by the Microsoft Visual C++ 6.0 compiler, and these 15894values do not include any ACPI driver or OSPM code. The debug 15895version of the code includes the debug output trace mechanism and 15896has a much larger code and data size. Note that these values will 15897vary depending on the efficiency of the compiler and the compiler 15898options used during generation. 15899 15900 Previous Release 15901 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15902 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15903 Current Release: 15904 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15905 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15906 15907 159082) Linux 15909 15910Changed the implementation of the ACPI semaphores to use down() 15911instead of down_interruptable(). It is important that the 15912execution of ACPI control methods not be interrupted by signals. 15913Methods must run to completion, or the system may be left in an 15914unknown/unstable state. 15915 15916Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 15917(Shawn Starr) 15918 15919 159203) iASL Compiler/Disassembler 15921 15922 15923Changed the default location of output files. All output files 15924are now placed in the current directory by default instead of in 15925the directory of the source file. This change may affect some 15926existing makefiles, but it brings the behavior of the compiler in 15927line with other similar tools. The location of the output files 15928can be overridden with the -p command line switch. 15929 15930 15931---------------------------------------- 1593211 November 2002. Summary of changes for version 20021111. 15933 15934 159350) ACPI Specification 2.0B is released and is now available at: 15936http://www.acpi.info/index.html 15937 15938 159391) ACPI CA Core Subsystem: 15940 15941Implemented support for the ACPI 2.0 SMBus Operation Regions. 15942This includes the early detection and handoff of the request to 15943the SMBus region handler (avoiding all of the complex field 15944support code), and support for the bidirectional return packet 15945from an SMBus write operation. This paves the way for the 15946development of SMBus drivers in each host operating system. 15947 15948Fixed a problem where the semaphore WAIT_FOREVER constant was 15949defined as 32 bits, but must be 16 bits according to the ACPI 15950specification. This had the side effect of causing ASL 15951Mutex/Event timeouts even though the ASL code requested a wait 15952forever. Changed all internal references to the ACPI timeout 15953parameter to 16 bits to prevent future problems. Changed the name 15954of WAIT_FOREVER to ACPI_WAIT_FOREVER. 15955 15956Code and Data Size: Current core subsystem library sizes are shown 15957below. These are the code and data sizes for the acpica.lib 15958produced by the Microsoft Visual C++ 6.0 compiler, and these 15959values do not include any ACPI driver or OSPM code. The debug 15960version of the code includes the debug output trace mechanism and 15961has a much larger code and data size. Note that these values will 15962vary depending on the efficiency of the compiler and the compiler 15963options used during generation. 15964 15965 Previous Release 15966 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15967 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15968 Current Release: 15969 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15970 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15971 15972 159732) Linux 15974 15975Module loading/unloading fixes (John Cagle) 15976 15977 159783) iASL Compiler/Disassembler 15979 15980Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 15981 15982Implemented support for the disassembly of all SMBus protocol 15983keywords (SMBQuick, SMBWord, etc.) 15984 15985---------------------------------------- 1598601 November 2002. Summary of changes for version 20021101. 15987 15988 159891) ACPI CA Core Subsystem: 15990 15991Fixed a problem where platforms that have a GPE1 block but no GPE0 15992block were not handled correctly. This resulted in a "GPE 15993overlap" error message. GPE0 is no longer required. 15994 15995Removed code added in the previous release that inserted nodes 15996into the namespace in alphabetical order. This caused some side- 15997effects on various machines. The root cause of the problem is 15998still under investigation since in theory, the internal ordering 15999of the namespace nodes should not matter. 16000 16001 16002Enhanced error reporting for the case where a named object is not 16003found during control method execution. The full ACPI namepath 16004(name reference) of the object that was not found is displayed in 16005this case. 16006 16007Note: as a result of the overhaul of the namespace object types in 16008the previous release, the namespace nodes for the predefined 16009scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 16010instead of ACPI_TYPE_ANY. This simplifies the namespace 16011management code but may affect code that walks the namespace tree 16012looking for specific object types. 16013 16014Code and Data Size: Current core subsystem library sizes are shown 16015below. These are the code and data sizes for the acpica.lib 16016produced by the Microsoft Visual C++ 6.0 compiler, and these 16017values do not include any ACPI driver or OSPM code. The debug 16018version of the code includes the debug output trace mechanism and 16019has a much larger code and data size. Note that these values will 16020vary depending on the efficiency of the compiler and the compiler 16021options used during generation. 16022 16023 Previous Release 16024 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16025 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16026 Current Release: 16027 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16028 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16029 16030 160312) Linux 16032 16033Fixed a problem introduced in the previous release where the 16034Processor and Thermal objects were not recognized and installed in 16035/proc. This was related to the scope type change described above. 16036 16037 160383) iASL Compiler/Disassembler 16039 16040Implemented the -g option to get all of the required ACPI tables 16041from the registry and save them to files (Windows version of the 16042compiler only.) The required tables are the FADT, FACS, and DSDT. 16043 16044Added ACPI table checksum validation during table disassembly in 16045order to catch corrupted tables. 16046 16047 16048---------------------------------------- 1604922 October 2002. Summary of changes for version 20021022. 16050 160511) ACPI CA Core Subsystem: 16052 16053Implemented a restriction on the Scope operator that the target 16054must already exist in the namespace at the time the operator is 16055encountered (during table load or method execution). In other 16056words, forward references are not allowed and Scope() cannot 16057create a new object. This changes the previous behavior where the 16058interpreter would create the name if not found. This new behavior 16059correctly enables the search-to-root algorithm during namespace 16060lookup of the target name. Because of this upsearch, this fixes 16061the known Compaq _SB_.OKEC problem and makes both the AML 16062interpreter and iASL compiler compatible with other ACPI 16063implementations. 16064 16065Completed a major overhaul of the internal ACPI object types for 16066the ACPI Namespace and the associated operand objects. Many of 16067these types had become obsolete with the introduction of the two- 16068pass namespace load. This cleanup simplifies the code and makes 16069the entire namespace load mechanism much clearer and easier to 16070understand. 16071 16072Improved debug output for tracking scope opening/closing to help 16073diagnose scoping issues. The old scope name as well as the new 16074scope name are displayed. Also improved error messages for 16075problems with ASL Mutex objects and error messages for GPE 16076problems. 16077 16078Cleaned up the namespace dump code, removed obsolete code. 16079 16080All string output (for all namespace/object dumps) now uses the 16081common ACPI string output procedure which handles escapes properly 16082and does not emit non-printable characters. 16083 16084Fixed some issues with constants in the 64-bit version of the 16085local C library (utclib.c) 16086 16087 160882) Linux 16089 16090EC Driver: No longer attempts to acquire the Global Lock at 16091interrupt level. 16092 16093 160943) iASL Compiler/Disassembler 16095 16096Implemented ACPI 2.0B grammar change that disallows all Type 1 and 160972 opcodes outside of a control method. This means that the 16098"executable" operators (versus the "namespace" operators) cannot 16099be used at the table level; they can only be used within a control 16100method. 16101 16102Implemented the restriction on the Scope() operator where the 16103target must already exist in the namespace at the time the 16104operator is encountered (during ASL compilation). In other words, 16105forward references are not allowed and Scope() cannot create a new 16106object. This makes the iASL compiler compatible with other ACPI 16107implementations and makes the Scope() implementation adhere to the 16108ACPI specification. 16109 16110Fixed a problem where namepath optimization for the Alias operator 16111was optimizing the wrong path (of the two namepaths.) This caused 16112a "Missing alias link" error message. 16113 16114Fixed a problem where an "unknown reserved name" warning could be 16115incorrectly generated for names like "_SB" when the trailing 16116underscore is not used in the original ASL. 16117 16118Fixed a problem where the reserved name check did not handle 16119NamePaths with multiple NameSegs correctly. The first nameseg of 16120the NamePath was examined instead of the last NameSeg. 16121 16122 16123---------------------------------------- 16124 1612502 October 2002. Summary of changes for this release. 16126 16127 161281) ACPI CA Core Subsystem version 20021002: 16129 16130Fixed a problem where a store/copy of a string to an existing 16131string did not always set the string length properly in the String 16132object. 16133 16134Fixed a reported problem with the ToString operator where the 16135behavior was identical to the ToHexString operator instead of just 16136simply converting a raw buffer to a string data type. 16137 16138Fixed a problem where CopyObject and the other "explicit" 16139conversion operators were not updating the internal namespace node 16140type as part of the store operation. 16141 16142Fixed a memory leak during implicit source operand conversion 16143where the original object was not deleted if it was converted to a 16144new object of a different type. 16145 16146Enhanced error messages for all problems associated with namespace 16147lookups. Common procedure generates and prints the lookup name as 16148well as the formatted status. 16149 16150Completed implementation of a new design for the Alias support 16151within the namespace. The existing design did not handle the case 16152where a new object was assigned to one of the two names due to the 16153use of an explicit conversion operator, resulting in the two names 16154pointing to two different objects. The new design simply points 16155the Alias name to the original name node - not to the object. 16156This results in a level of indirection that must be handled in the 16157name resolution mechanism. 16158 16159Code and Data Size: Current core subsystem library sizes are shown 16160below. These are the code and data sizes for the acpica.lib 16161produced by the Microsoft Visual C++ 6.0 compiler, and these 16162values do not include any ACPI driver or OSPM code. The debug 16163version of the code includes the debug output trace mechanism and 16164has a larger code and data size. Note that these values will vary 16165depending on the efficiency of the compiler and the compiler 16166options used during generation. 16167 16168 Previous Release 16169 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16170 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16171 Current Release: 16172 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16173 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16174 16175 161762) Linux 16177 16178Initialize thermal driver's timer before it is used. (Knut 16179Neumann) 16180 16181Allow handling negative celsius values. (Kochi Takayoshi) 16182 16183Fix thermal management and make trip points. R/W (Pavel Machek) 16184 16185Fix /proc/acpi/sleep. (P. Christeas) 16186 16187IA64 fixes. (David Mosberger) 16188 16189Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 16190 16191Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 16192Brodowski) 16193 16194 161953) iASL Compiler/Disassembler 16196 16197Clarified some warning/error messages. 16198 16199 16200---------------------------------------- 1620118 September 2002. Summary of changes for this release. 16202 16203 162041) ACPI CA Core Subsystem version 20020918: 16205 16206Fixed a reported problem with reference chaining (via the Index() 16207and RefOf() operators) in the ObjectType() and SizeOf() operators. 16208The definition of these operators includes the dereferencing of 16209all chained references to return information on the base object. 16210 16211Fixed a problem with stores to indexed package elements - the 16212existing code would not complete the store if an "implicit 16213conversion" was not performed. In other words, if the existing 16214object (package element) was to be replaced completely, the code 16215didn't handle this case. 16216 16217Relaxed typechecking on the ASL "Scope" operator to allow the 16218target name to refer to an object of type Integer, String, or 16219Buffer, in addition to the scoping object types (Device, 16220predefined Scopes, Processor, PowerResource, and ThermalZone.) 16221This allows existing AML code that has workarounds for a bug in 16222Windows to function properly. A warning is issued, however. This 16223affects both the AML interpreter and the iASL compiler. Below is 16224an example of this type of ASL code: 16225 16226 Name(DEB,0x00) 16227 Scope(DEB) 16228 { 16229 16230Fixed some reported problems with 64-bit integer support in the 16231local implementation of C library functions (clib.c) 16232 16233 162342) Linux 16235 16236Use ACPI fix map region instead of IOAPIC region, since it is 16237undefined in non-SMP. 16238 16239Ensure that the SCI has the proper polarity and trigger, even on 16240systems that do not have an interrupt override entry in the MADT. 16241 162422.5 big driver reorganization (Pat Mochel) 16243 16244Use early table mapping code from acpitable.c (Andi Kleen) 16245 16246New blacklist entries (Andi Kleen) 16247 16248Blacklist improvements. Split blacklist code out into a separate 16249file. Move checking the blacklist to very early. Previously, we 16250would use ACPI tables, and then halfway through init, check the 16251blacklist -- too late. Now, it's early enough to completely fall- 16252back to non-ACPI. 16253 16254 162553) iASL Compiler/Disassembler version 20020918: 16256 16257Fixed a problem where the typechecking code didn't know that an 16258alias could point to a method. In other words, aliases were not 16259being dereferenced during typechecking. 16260 16261 16262---------------------------------------- 1626329 August 2002. Summary of changes for this release. 16264 162651) ACPI CA Core Subsystem Version 20020829: 16266 16267If the target of a Scope() operator already exists, it must be an 16268object type that actually opens a scope -- such as a Device, 16269Method, Scope, etc. This is a fatal runtime error. Similar error 16270check has been added to the iASL compiler also. 16271 16272Tightened up the namespace load to disallow multiple names in the 16273same scope. This previously was allowed if both objects were of 16274the same type. (i.e., a lookup was the same as entering a new 16275name). 16276 16277 162782) Linux 16279 16280Ensure that the ACPI interrupt has the proper trigger and 16281polarity. 16282 16283local_irq_disable is extraneous. (Matthew Wilcox) 16284 16285Make "acpi=off" actually do what it says, and not use the ACPI 16286interpreter *or* the tables. 16287 16288Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 16289Takayoshi) 16290 16291 162923) iASL Compiler/Disassembler Version 20020829: 16293 16294Implemented namepath optimization for name declarations. For 16295example, a declaration like "Method (\_SB_.ABCD)" would get 16296optimized to "Method (ABCD)" if the declaration is within the 16297\_SB_ scope. This optimization is in addition to the named 16298reference path optimization first released in the previous 16299version. This would seem to complete all possible optimizations 16300for namepaths within the ASL/AML. 16301 16302If the target of a Scope() operator already exists, it must be an 16303object type that actually opens a scope -- such as a Device, 16304Method, Scope, etc. 16305 16306Implemented a check and warning for unreachable code in the same 16307block below a Return() statement. 16308 16309Fixed a problem where the listing file was not generated if the 16310compiler aborted if the maximum error count was exceeded (200). 16311 16312Fixed a problem where the typechecking of method return values was 16313broken. This includes the check for a return value when the 16314method is invoked as a TermArg (a return value is expected.) 16315 16316Fixed a reported problem where EOF conditions during a quoted 16317string or comment caused a fault. 16318 16319 16320---------------------------------------- 1632115 August 2002. Summary of changes for this release. 16322 163231) ACPI CA Core Subsystem Version 20020815: 16324 16325Fixed a reported problem where a Store to a method argument that 16326contains a reference did not perform the indirect store correctly. 16327This problem was created during the conversion to the new 16328reference object model - the indirect store to a method argument 16329code was not updated to reflect the new model. 16330 16331Reworked the ACPI mode change code to better conform to ACPI 2.0, 16332handle corner cases, and improve code legibility (Kochi Takayoshi) 16333 16334Fixed a problem with the pathname parsing for the carat (^) 16335prefix. The heavy use of the carat operator by the new namepath 16336optimization in the iASL compiler uncovered a problem with the AML 16337interpreter handling of this prefix. In the case where one or 16338more carats precede a single nameseg, the nameseg was treated as 16339standalone and the search rule (to root) was inadvertently 16340applied. This could cause both the iASL compiler and the 16341interpreter to find the wrong object or to miss the error that 16342should occur if the object does not exist at that exact pathname. 16343 16344Found and fixed the problem where the HP Pavilion DSDT would not 16345load. This was a relatively minor tweak to the table loading code 16346(a problem caused by the unexpected encounter with a method 16347invocation not within a control method), but it does not solve the 16348overall issue of the execution of AML code at the table level. 16349This investigation is still ongoing. 16350 16351Code and Data Size: Current core subsystem library sizes are shown 16352below. These are the code and data sizes for the acpica.lib 16353produced by the Microsoft Visual C++ 6.0 compiler, and these 16354values do not include any ACPI driver or OSPM code. The debug 16355version of the code includes the debug output trace mechanism and 16356has a larger code and data size. Note that these values will vary 16357depending on the efficiency of the compiler and the compiler 16358options used during generation. 16359 16360 Previous Release 16361 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16362 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16363 Current Release: 16364 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16365 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16366 16367 163682) Linux 16369 16370Remove redundant slab.h include (Brad Hards) 16371 16372Fix several bugs in thermal.c (Herbert Nachtnebel) 16373 16374Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 16375 16376Change acpi_system_suspend to use updated irq functions (Pavel 16377Machek) 16378 16379Export acpi_get_firmware_table (Matthew Wilcox) 16380 16381Use proper root proc entry for ACPI (Kochi Takayoshi) 16382 16383Fix early-boot table parsing (Bjorn Helgaas) 16384 16385 163863) iASL Compiler/Disassembler 16387 16388Reworked the compiler options to make them more consistent and to 16389use two-letter options where appropriate. We were running out of 16390sensible letters. This may break some makefiles, so check the 16391current options list by invoking the compiler with no parameters. 16392 16393Completed the design and implementation of the ASL namepath 16394optimization option for the compiler. This option optimizes all 16395references to named objects to the shortest possible path. The 16396first attempt tries to utilize a single nameseg (4 characters) and 16397the "search-to-root" algorithm used by the interpreter. If that 16398cannot be used (because either the name is not in the search path 16399or there is a conflict with another object with the same name), 16400the pathname is optimized using the carat prefix (usually a 16401shorter string than specifying the entire path from the root.) 16402 16403Implemented support to obtain the DSDT from the Windows registry 16404(when the disassembly option is specified with no input file). 16405Added this code as the implementation for AcpiOsTableOverride in 16406the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 16407utility) to scan memory for the DSDT to the AcpiOsTableOverride 16408function in the DOS OSL to make the disassembler truly OS 16409independent. 16410 16411Implemented a new option to disassemble and compile in one step. 16412When used without an input filename, this option will grab the 16413DSDT from the local machine, disassemble it, and compile it in one 16414step. 16415 16416Added a warning message for invalid escapes (a backslash followed 16417by any character other than the allowable escapes). This catches 16418the quoted string error "\_SB_" (which should be "\\_SB_" ). 16419 16420Also, there are numerous instances in the ACPI specification where 16421this error occurs. 16422 16423Added a compiler option to disable all optimizations. This is 16424basically the "compatibility mode" because by using this option, 16425the AML code will come out exactly the same as other ASL 16426compilers. 16427 16428Added error messages for incorrectly ordered dependent resource 16429functions. This includes: missing EndDependentFn macro at end of 16430dependent resource list, nested dependent function macros (both 16431start and end), and missing StartDependentFn macro. These are 16432common errors that should be caught at compile time. 16433 16434Implemented _OSI support for the disassembler and compiler. _OSI 16435must be included in the namespace for proper disassembly (because 16436the disassembler must know the number of arguments.) 16437 16438Added an "optimization" message type that is optional (off by 16439default). This message is used for all optimizations - including 16440constant folding, integer optimization, and namepath optimization. 16441 16442---------------------------------------- 1644325 July 2002. Summary of changes for this release. 16444 16445 164461) ACPI CA Core Subsystem Version 20020725: 16447 16448The AML Disassembler has been enhanced to produce compilable ASL 16449code and has been integrated into the iASL compiler (see below) as 16450well as the single-step disassembly for the AML debugger and the 16451disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 16452resource templates and macros are fully supported. The 16453disassembler has been tested on over 30 different AML files, 16454producing identical AML when the resulting disassembled ASL file 16455is recompiled with the same ASL compiler. 16456 16457Modified the Resource Manager to allow zero interrupts and zero 16458dma channels during the GetCurrentResources call. This was 16459causing problems on some platforms. 16460 16461Added the AcpiOsRedirectOutput interface to the OSL to simplify 16462output redirection for the AcpiOsPrintf and AcpiOsVprintf 16463interfaces. 16464 16465Code and Data Size: Current core subsystem library sizes are shown 16466below. These are the code and data sizes for the acpica.lib 16467produced by the Microsoft Visual C++ 6.0 compiler, and these 16468values do not include any ACPI driver or OSPM code. The debug 16469version of the code includes the debug output trace mechanism and 16470has a larger code and data size. Note that these values will vary 16471depending on the efficiency of the compiler and the compiler 16472options used during generation. 16473 16474 Previous Release 16475 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16476 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16477 Current Release: 16478 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16479 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16480 16481 164822) Linux 16483 16484Fixed a panic in the EC driver (Dominik Brodowski) 16485 16486Implemented checksum of the R/XSDT itself during Linux table scan 16487(Richard Schaal) 16488 16489 164903) iASL compiler 16491 16492The AML disassembler is integrated into the compiler. The "-d" 16493option invokes the disassembler to completely disassemble an 16494input AML file, producing as output a text ASL file with the 16495extension ".dsl" (to avoid name collisions with existing .asl 16496source files.) A future enhancement will allow the disassembler 16497to obtain the BIOS DSDT from the registry under Windows. 16498 16499Fixed a problem with the VendorShort and VendorLong resource 16500descriptors where an invalid AML sequence was created. 16501 16502Implemented a fix for BufferData term in the ASL parser. It was 16503inadvertently defined twice, allowing invalid syntax to pass and 16504causing reduction conflicts. 16505 16506Fixed a problem where the Ones opcode could get converted to a 16507value of zero if "Ones" was used where a byte, word or dword value 16508was expected. The 64-bit value is now truncated to the correct 16509size with the correct value. 16510 16511 16512 16513---------------------------------------- 1651402 July 2002. Summary of changes for this release. 16515 16516 165171) ACPI CA Core Subsystem Version 20020702: 16518 16519The Table Manager code has been restructured to add several new 16520features. Tables that are not required by the core subsystem 16521(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 16522validated in any way and are returned from AcpiGetFirmwareTable if 16523requested. The AcpiOsTableOverride interface is now called for 16524each table that is loaded by the subsystem in order to allow the 16525host to override any table it chooses. Previously, only the DSDT 16526could be overridden. Added one new files, tbrsdt.c and 16527tbgetall.c. 16528 16529Fixed a problem with the conversion of internal package objects to 16530external objects (when a package is returned from a control 16531method.) The return buffer length was set to zero instead of the 16532proper length of the package object. 16533 16534Fixed a reported problem with the use of the RefOf and DeRefOf 16535operators when passing reference arguments to control methods. A 16536new type of Reference object is used internally for references 16537produced by the RefOf operator. 16538 16539Added additional error messages in the Resource Manager to explain 16540AE_BAD_DATA errors when they occur during resource parsing. 16541 16542Split the AcpiEnableSubsystem into two primitives to enable a 16543finer granularity initialization sequence. These two calls should 16544be called in this order: AcpiEnableSubsystem (flags), 16545AcpiInitializeObjects (flags). The flags parameter remains the 16546same. 16547 16548 165492) Linux 16550 16551Updated the ACPI utilities module to understand the new style of 16552fully resolved package objects that are now returned from the core 16553subsystem. This eliminates errors of the form: 16554 16555 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 16556 acpi_utils-0430 [145] acpi_evaluate_reference: 16557 Invalid element in package (not a device reference) 16558 16559The method evaluation utility uses the new buffer allocation 16560scheme instead of calling AcpiEvaluate Object twice. 16561 16562Added support for ECDT. This allows the use of the Embedded 16563 16564Controller before the namespace has been fully initialized, which 16565is necessary for ACPI 2.0 support, and for some laptops to 16566initialize properly. (Laptops using ECDT are still rare, so only 16567limited testing was performed of the added functionality.) 16568 16569Fixed memory leaks in the EC driver. 16570 16571Eliminated a brittle code structure in acpi_bus_init(). 16572 16573Eliminated the acpi_evaluate() helper function in utils.c. It is 16574no longer needed since acpi_evaluate_object can optionally 16575allocate memory for the return object. 16576 16577Implemented fix for keyboard hang when getting battery readings on 16578some systems (Stephen White) 16579 16580PCI IRQ routing update (Dominik Brodowski) 16581 16582Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 16583support 16584 16585---------------------------------------- 1658611 June 2002. Summary of changes for this release. 16587 16588 165891) ACPI CA Core Subsystem Version 20020611: 16590 16591Fixed a reported problem where constants such as Zero and One 16592appearing within _PRT packages were not handled correctly within 16593the resource manager code. Originally reported against the ASL 16594compiler because the code generator now optimizes integers to 16595their minimal AML representation (i.e. AML constants if possible.) 16596The _PRT code now handles all AML constant opcodes correctly 16597(Zero, One, Ones, Revision). 16598 16599Fixed a problem with the Concatenate operator in the AML 16600interpreter where a buffer result object was incorrectly marked as 16601not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 16602 16603All package sub-objects are now fully resolved before they are 16604returned from the external ACPI interfaces. This means that name 16605strings are resolved to object handles, and constant operators 16606(Zero, One, Ones, Revision) are resolved to Integers. 16607 16608Implemented immediate resolution of the AML Constant opcodes 16609(Zero, One, Ones, Revision) to Integer objects upon detection 16610within the AML stream. This has simplified and reduced the 16611generated code size of the subsystem by eliminating about 10 16612switch statements for these constants (which previously were 16613contained in Reference objects.) The complicating issues are that 16614the Zero opcode is used as a "placeholder" for unspecified 16615optional target operands and stores to constants are defined to be 16616no-ops. 16617 16618Code and Data Size: Current core subsystem library sizes are shown 16619below. These are the code and data sizes for the acpica.lib 16620produced by the Microsoft Visual C++ 6.0 compiler, and these 16621values do not include any ACPI driver or OSPM code. The debug 16622version of the code includes the debug output trace mechanism and 16623has a larger code and data size. Note that these values will vary 16624depending on the efficiency of the compiler and the compiler 16625options used during generation. 16626 16627 Previous Release 16628 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16629 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16630 Current Release: 16631 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16632 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16633 16634 166352) Linux 16636 16637 16638Added preliminary support for obtaining _TRA data for PCI root 16639bridges (Bjorn Helgaas). 16640 16641 166423) iASL Compiler Version X2046: 16643 16644Fixed a problem where the "_DDN" reserved name was defined to be a 16645control method with one argument. There are no arguments, and 16646_DDN does not have to be a control method. 16647 16648Fixed a problem with the Linux version of the compiler where the 16649source lines printed with error messages were the wrong lines. 16650This turned out to be the "LF versus CR/LF" difference between 16651Windows and Unix. This appears to be the longstanding issue 16652concerning listing output and error messages. 16653 16654Fixed a problem with the Linux version of compiler where opcode 16655names within error messages were wrong. This was caused by a 16656slight difference in the output of the Flex tool on Linux versus 16657Windows. 16658 16659Fixed a problem with the Linux compiler where the hex output files 16660contained some garbage data caused by an internal buffer overrun. 16661 16662 16663---------------------------------------- 1666417 May 2002. Summary of changes for this release. 16665 16666 166671) ACPI CA Core Subsystem Version 20020517: 16668 16669Implemented a workaround to an BIOS bug discovered on the HP 16670OmniBook where the FADT revision number and the table size are 16671inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 16672behavior is to fallback to using only the ACPI 1.0 fields of the 16673FADT if the table is too small to be a ACPI 2.0 table as claimed 16674by the revision number. Although this is a BIOS bug, this is a 16675case where the workaround is simple enough and with no side 16676effects, so it seemed prudent to add it. A warning message is 16677issued, however. 16678 16679Implemented minimum size checks for the fixed-length ACPI tables - 16680- the FADT and FACS, as well as consistency checks between the 16681revision number and the table size. 16682 16683Fixed a reported problem in the table override support where the 16684new table pointer was incorrectly treated as a physical address 16685instead of a logical address. 16686 16687Eliminated the use of the AE_AML_ERROR exception and replaced it 16688with more descriptive codes. 16689 16690Fixed a problem where an exception would occur if an ASL Field was 16691defined with no named Field Units underneath it (used by some 16692index fields). 16693 16694Code and Data Size: Current core subsystem library sizes are shown 16695below. These are the code and data sizes for the acpica.lib 16696produced by the Microsoft Visual C++ 6.0 compiler, and these 16697values do not include any ACPI driver or OSPM code. The debug 16698version of the code includes the debug output trace mechanism and 16699has a larger code and data size. Note that these values will vary 16700depending on the efficiency of the compiler and the compiler 16701options used during generation. 16702 16703 Previous Release 16704 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16705 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16706 Current Release: 16707 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16708 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16709 16710 16711 167122) Linux 16713 16714Much work done on ACPI init (MADT and PCI IRQ routing support). 16715(Paul D. and Dominik Brodowski) 16716 16717Fix PCI IRQ-related panic on boot (Sam Revitch) 16718 16719Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 16720 16721Fix "MHz" typo (Dominik Brodowski) 16722 16723Fix RTC year 2000 issue (Dominik Brodowski) 16724 16725Preclude multiple button proc entries (Eric Brunet) 16726 16727Moved arch-specific code out of include/platform/aclinux.h 16728 167293) iASL Compiler Version X2044: 16730 16731Implemented error checking for the string used in the EISAID macro 16732(Usually used in the definition of the _HID object.) The code now 16733strictly enforces the PnP format - exactly 7 characters, 3 16734uppercase letters and 4 hex digits. 16735 16736If a raw string is used in the definition of the _HID object 16737(instead of the EISAID macro), the string must contain all 16738alphanumeric characters (e.g., "*PNP0011" is not allowed because 16739of the asterisk.) 16740 16741Implemented checking for invalid use of ACPI reserved names for 16742most of the name creation operators (Name, Device, Event, Mutex, 16743OperationRegion, PowerResource, Processor, and ThermalZone.) 16744Previously, this check was only performed for control methods. 16745 16746Implemented an additional check on the Name operator to emit an 16747error if a reserved name that must be implemented in ASL as a 16748control method is used. We know that a reserved name must be a 16749method if it is defined with input arguments. 16750 16751The warning emitted when a namespace object reference is not found 16752during the cross reference phase has been changed into an error. 16753The "External" directive should be used for names defined in other 16754modules. 16755 16756 167574) Tools and Utilities 16758 16759The 16-bit tools (adump16 and aexec16) have been regenerated and 16760tested. 16761 16762Fixed a problem with the output of both acpidump and adump16 where 16763the indentation of closing parentheses and brackets was not 16764 16765aligned properly with the parent block. 16766 16767 16768---------------------------------------- 1676903 May 2002. Summary of changes for this release. 16770 16771 167721) ACPI CA Core Subsystem Version 20020503: 16773 16774Added support a new OSL interface that allows the host operating 16775 16776system software to override the DSDT found in the firmware - 16777AcpiOsTableOverride. With this interface, the OSL can examine the 16778version of the firmware DSDT and replace it with a different one 16779if desired. 16780 16781Added new external interfaces for accessing ACPI registers from 16782device drivers and other system software - AcpiGetRegister and 16783AcpiSetRegister. This was simply an externalization of the 16784existing AcpiHwBitRegister interfaces. 16785 16786Fixed a regression introduced in the previous build where the 16787ASL/AML CreateField operator always returned an error, 16788"destination must be a NS Node". 16789 16790Extended the maximum time (before failure) to successfully enable 16791ACPI mode to 3 seconds. 16792 16793Code and Data Size: Current core subsystem library sizes are shown 16794below. These are the code and data sizes for the acpica.lib 16795produced by the Microsoft Visual C++ 6.0 compiler, and these 16796values do not include any ACPI driver or OSPM code. The debug 16797version of the code includes the debug output trace mechanism and 16798has a larger code and data size. Note that these values will vary 16799depending on the efficiency of the compiler and the compiler 16800options used during generation. 16801 16802 Previous Release 16803 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16804 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16805 Current Release: 16806 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16807 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16808 16809 168102) Linux 16811 16812Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 16813free. While 3 out of 4 of our in-house systems work fine, the last 16814one still hangs when testing the LAPIC timer. 16815 16816Renamed many files in 2.5 kernel release to omit "acpi_" from the 16817name. 16818 16819Added warning on boot for Presario 711FR. 16820 16821Sleep improvements (Pavel Machek) 16822 16823ACPI can now be built without CONFIG_PCI enabled. 16824 16825IA64: Fixed memory map functions (JI Lee) 16826 16827 168283) iASL Compiler Version X2043: 16829 16830Added support to allow the compiler to be integrated into the MS 16831VC++ development environment for one-button compilation of single 16832files or entire projects -- with error-to-source-line mapping. 16833 16834Implemented support for compile-time constant folding for the 16835Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 16836specification. This allows the ASL writer to use expressions 16837instead of Integer/Buffer/String constants in terms that must 16838evaluate to constants at compile time and will also simplify the 16839emitted AML in any such sub-expressions that can be folded 16840(evaluated at compile-time.) This increases the size of the 16841compiler significantly because a portion of the ACPI CA AML 16842interpreter is included within the compiler in order to pre- 16843evaluate constant expressions. 16844 16845 16846Fixed a problem with the "Unicode" ASL macro that caused the 16847compiler to fault. (This macro is used in conjunction with the 16848_STR reserved name.) 16849 16850Implemented an AML opcode optimization to use the Zero, One, and 16851Ones opcodes where possible to further reduce the size of integer 16852constants and thus reduce the overall size of the generated AML 16853code. 16854 16855Implemented error checking for new reserved terms for ACPI version 168562.0A. 16857 16858Implemented the -qr option to display the current list of ACPI 16859reserved names known to the compiler. 16860 16861Implemented the -qc option to display the current list of ASL 16862operators that are allowed within constant expressions and can 16863therefore be folded at compile time if the operands are constants. 16864 16865 168664) Documentation 16867 16868Updated the Programmer's Reference for new interfaces, data types, 16869and memory allocation model options. 16870 16871Updated the iASL Compiler User Reference to apply new format and 16872add information about new features and options. 16873 16874---------------------------------------- 1687519 April 2002. Summary of changes for this release. 16876 168771) ACPI CA Core Subsystem Version 20020419: 16878 16879The source code base for the Core Subsystem has been completely 16880cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 16881versions. The Lint option files used are included in the 16882/acpi/generate/lint directory. 16883 16884Implemented enhanced status/error checking across the entire 16885Hardware manager subsystem. Any hardware errors (reported from 16886the OSL) are now bubbled up and will abort a running control 16887method. 16888 16889 16890Fixed a problem where the per-ACPI-table integer width (32 or 64) 16891was stored only with control method nodes, causing a fault when 16892non-control method code was executed during table loading. The 16893solution implemented uses a global variable to indicate table 16894width across the entire ACPI subsystem. Therefore, ACPI CA does 16895not support mixed integer widths across different ACPI tables 16896(DSDT, SSDT). 16897 16898Fixed a problem where NULL extended fields (X fields) in an ACPI 168992.0 ACPI FADT caused the table load to fail. Although the 16900existing ACPI specification is a bit fuzzy on this topic, the new 16901behavior is to fall back on a ACPI 1.0 field if the corresponding 16902ACPI 2.0 X field is zero (even though the table revision indicates 16903a full ACPI 2.0 table.) The ACPI specification will be updated to 16904clarify this issue. 16905 16906Fixed a problem with the SystemMemory operation region handler 16907where memory was always accessed byte-wise even if the AML- 16908specified access width was larger than a byte. This caused 16909problems on systems with memory-mapped I/O. Memory is now 16910accessed with the width specified. On systems that do not support 16911non-aligned transfers, a check is made to guarantee proper address 16912alignment before proceeding in order to avoid an AML-caused 16913alignment fault within the kernel. 16914 16915 16916Fixed a problem with the ExtendedIrq resource where only one byte 16917of the 4-byte Irq field was extracted. 16918 16919Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 16920function was out of date and required a rewrite. 16921 16922Code and Data Size: Current core subsystem library sizes are shown 16923below. These are the code and data sizes for the acpica.lib 16924produced by the Microsoft Visual C++ 6.0 compiler, and these 16925values do not include any ACPI driver or OSPM code. The debug 16926version of the code includes the debug output trace mechanism and 16927has a larger code and data size. Note that these values will vary 16928depending on the efficiency of the compiler and the compiler 16929options used during generation. 16930 16931 Previous Release 16932 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16933 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16934 Current Release: 16935 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16936 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16937 16938 169392) Linux 16940 16941PCI IRQ routing fixes (Dominik Brodowski) 16942 16943 169443) iASL Compiler Version X2042: 16945 16946Implemented an additional compile-time error check for a field 16947unit whose size + minimum access width would cause a run-time 16948access beyond the end-of-region. Previously, only the field size 16949itself was checked. 16950 16951The Core subsystem and iASL compiler now share a common parse 16952object in preparation for compile-time evaluation of the type 169533/4/5 ASL operators. 16954 16955 16956---------------------------------------- 16957Summary of changes for this release: 03_29_02 16958 169591) ACPI CA Core Subsystem Version 20020329: 16960 16961Implemented support for late evaluation of TermArg operands to 16962Buffer and Package objects. This allows complex expressions to be 16963used in the declarations of these object types. 16964 16965Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 169661.0, if the field was larger than 32 bits, it was returned as a 16967buffer - otherwise it was returned as an integer. In ACPI 2.0, 16968the field is returned as a buffer only if the field is larger than 1696964 bits. The TableRevision is now considered when making this 16970conversion to avoid incompatibility with existing ASL code. 16971 16972Implemented logical addressing for AcpiOsGetRootPointer. This 16973allows an RSDP with either a logical or physical address. With 16974this support, the host OS can now override all ACPI tables with 16975one logical RSDP. Includes implementation of "typed" pointer 16976support to allow a common data type for both physical and logical 16977pointers internally. This required a change to the 16978AcpiOsGetRootPointer interface. 16979 16980Implemented the use of ACPI 2.0 Generic Address Structures for all 16981GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 16982mapped I/O for these ACPI features. 16983 16984Initialization now ignores not only non-required tables (All 16985tables other than the FADT, FACS, DSDT, and SSDTs), but also does 16986not validate the table headers of unrecognized tables. 16987 16988Fixed a problem where a notify handler could only be 16989installed/removed on an object of type Device. All "notify" 16990 16991objects are now supported -- Devices, Processor, Power, and 16992Thermal. 16993 16994Removed most verbosity from the ACPI_DB_INFO debug level. Only 16995critical information is returned when this debug level is enabled. 16996 16997Code and Data Size: Current core subsystem library sizes are shown 16998below. These are the code and data sizes for the acpica.lib 16999produced by the Microsoft Visual C++ 6.0 compiler, and these 17000values do not include any ACPI driver or OSPM code. The debug 17001version of the code includes the debug output trace mechanism and 17002has a larger code and data size. Note that these values will vary 17003depending on the efficiency of the compiler and the compiler 17004options used during generation. 17005 17006 Previous Release 17007 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17008 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17009 Current Release: 17010 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17011 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17012 17013 170142) Linux: 17015 17016The processor driver (acpi_processor.c) now fully supports ACPI 170172.0-based processor performance control (e.g. Intel(R) 17018SpeedStep(TM) technology) Note that older laptops that only have 17019the Intel "applet" interface are not supported through this. The 17020'limit' and 'performance' interface (/proc) are fully functional. 17021[Note that basic policy for controlling performance state 17022transitions will be included in the next version of ospmd.] The 17023idle handler was modified to more aggressively use C2, and PIIX4 17024errata handling underwent a complete overhaul (big thanks to 17025Dominik Brodowski). 17026 17027Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 17028based devices in the ACPI namespace are now dynamically bound 17029(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 17030This allows, among other things, ACPI to resolve bus numbers for 17031subordinate PCI bridges. 17032 17033Enhanced PCI IRQ routing to get the proper bus number for _PRT 17034entries defined underneath PCI bridges. 17035 17036Added IBM 600E to bad bios list due to invalid _ADR value for 17037PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 17038 17039In the process of adding full MADT support (e.g. IOAPIC) for IA32 17040(acpi.c, mpparse.c) -- stay tuned. 17041 17042Added back visual differentiation between fixed-feature and 17043control-method buttons in dmesg. Buttons are also subtyped (e.g. 17044button/power/PWRF) to simplify button identification. 17045 17046We no longer use -Wno-unused when compiling debug. Please ignore 17047any "_THIS_MODULE defined but not used" messages. 17048 17049Can now shut down the system using "magic sysrq" key. 17050 17051 170523) iASL Compiler version 2041: 17053 17054Fixed a problem where conversion errors for hex/octal/decimal 17055constants were not reported. 17056 17057Implemented a fix for the General Register template Address field. 17058This field was 8 bits when it should be 64. 17059 17060Fixed a problem where errors/warnings were no longer being emitted 17061within the listing output file. 17062 17063Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 17064exactly 4 characters, alphanumeric only. 17065 17066 17067 17068 17069---------------------------------------- 17070Summary of changes for this release: 03_08_02 17071 17072 170731) ACPI CA Core Subsystem Version 20020308: 17074 17075Fixed a problem with AML Fields where the use of the "AccessAny" 17076keyword could cause an interpreter error due to attempting to read 17077or write beyond the end of the parent Operation Region. 17078 17079Fixed a problem in the SystemMemory Operation Region handler where 17080an attempt was made to map memory beyond the end of the region. 17081This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 17082errors on some Linux systems. 17083 17084Fixed a problem where the interpreter/namespace "search to root" 17085algorithm was not functioning for some object types. Relaxed the 17086internal restriction on the search to allow upsearches for all 17087external object types as well as most internal types. 17088 17089 170902) Linux: 17091 17092We now use safe_halt() macro versus individual calls to sti | hlt. 17093 17094Writing to the processor limit interface should now work. "echo 1" 17095will increase the limit, 2 will decrease, and 0 will reset to the 17096 17097default. 17098 17099 171003) ASL compiler: 17101 17102Fixed segfault on Linux version. 17103 17104 17105---------------------------------------- 17106Summary of changes for this release: 02_25_02 17107 171081) ACPI CA Core Subsystem: 17109 17110 17111Fixed a problem where the GPE bit masks were not initialized 17112properly, causing erratic GPE behavior. 17113 17114Implemented limited support for multiple calling conventions. The 17115code can be generated with either the VPL (variable parameter 17116list, or "C") convention, or the FPL (fixed parameter list, or 17117"Pascal") convention. The core subsystem is about 3.4% smaller 17118when generated with FPL. 17119 17120 171212) Linux 17122 17123Re-add some /proc/acpi/event functionality that was lost during 17124the rewrite 17125 17126Resolved issue with /proc events for fixed-feature buttons showing 17127up as the system device. 17128 17129Fixed checks on C2/C3 latencies to be inclusive of maximum values. 17130 17131Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 17132 17133Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 17134 17135Fixed limit interface & usage to fix bugs with passive cooling 17136hysterisis. 17137 17138Restructured PRT support. 17139 17140 17141---------------------------------------- 17142Summary of changes for this label: 02_14_02 17143 17144 171451) ACPI CA Core Subsystem: 17146 17147Implemented support in AcpiLoadTable to allow loading of FACS and 17148FADT tables. 17149 17150Support for the now-obsolete interim 0.71 64-bit ACPI tables has 17151been removed. All 64-bit platforms should be migrated to the ACPI 171522.0 tables. The actbl71.h header has been removed from the source 17153tree. 17154 17155All C macros defined within the subsystem have been prefixed with 17156"ACPI_" to avoid collision with other system include files. 17157 17158Removed the return value for the two AcpiOsPrint interfaces, since 17159it is never used and causes lint warnings for ignoring the return 17160value. 17161 17162Added error checking to all internal mutex acquire and release 17163calls. Although a failure from one of these interfaces is 17164probably a fatal system error, these checks will cause the 17165immediate abort of the currently executing method or interface. 17166 17167Fixed a problem where the AcpiSetCurrentResources interface could 17168fault. This was a side effect of the deployment of the new memory 17169allocation model. 17170 17171Fixed a couple of problems with the Global Lock support introduced 17172in the last major build. The "common" (1.0/2.0) internal FACS was 17173being overwritten with the FACS signature and clobbering the 17174Global Lock pointer. Also, the actual firmware FACS was being 17175unmapped after construction of the "common" FACS, preventing 17176access to the actual Global Lock field within it. The "common" 17177internal FACS is no longer installed as an actual ACPI table; it 17178is used simply as a global. 17179 17180Code and Data Size: Current core subsystem library sizes are shown 17181below. These are the code and data sizes for the acpica.lib 17182produced by the Microsoft Visual C++ 6.0 compiler, and these 17183values do not include any ACPI driver or OSPM code. The debug 17184version of the code includes the debug output trace mechanism and 17185has a larger code and data size. Note that these values will vary 17186depending on the efficiency of the compiler and the compiler 17187options used during generation. 17188 17189 Previous Release (02_07_01) 17190 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17191 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17192 Current Release: 17193 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17194 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17195 17196 171972) Linux 17198 17199Updated Linux-specific code for core macro and OSL interface 17200changes described above. 17201 17202Improved /proc/acpi/event. It now can be opened only once and has 17203proper poll functionality. 17204 17205Fixed and restructured power management (acpi_bus). 17206 17207Only create /proc "view by type" when devices of that class exist. 17208 17209Fixed "charging/discharging" bug (and others) in acpi_battery. 17210 17211Improved thermal zone code. 17212 17213 172143) ASL Compiler, version X2039: 17215 17216 17217Implemented the new compiler restriction on ASL String hex/octal 17218escapes to non-null, ASCII values. An error results if an invalid 17219value is used. (This will require an ACPI 2.0 specification 17220change.) 17221 17222AML object labels that are output to the optional C and ASM source 17223are now prefixed with both the ACPI table signature and table ID 17224to help guarantee uniqueness within a large BIOS project. 17225 17226 17227---------------------------------------- 17228Summary of changes for this label: 02_01_02 17229 172301) ACPI CA Core Subsystem: 17231 17232ACPI 2.0 support is complete in the entire Core Subsystem and the 17233ASL compiler. All new ACPI 2.0 operators are implemented and all 17234other changes for ACPI 2.0 support are complete. With 17235simultaneous code and data optimizations throughout the subsystem, 17236ACPI 2.0 support has been implemented with almost no additional 17237cost in terms of code and data size. 17238 17239Implemented a new mechanism for allocation of return buffers. If 17240the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 17241be allocated on behalf of the caller. Consolidated all return 17242buffer validation and allocation to a common procedure. Return 17243buffers will be allocated via the primary OSL allocation interface 17244since it appears that a separate pool is not needed by most users. 17245If a separate pool is required for these buffers, the caller can 17246still use the original mechanism and pre-allocate the buffer(s). 17247 17248Implemented support for string operands within the DerefOf 17249operator. 17250 17251Restructured the Hardware and Event managers to be table driven, 17252simplifying the source code and reducing the amount of generated 17253code. 17254 17255Split the common read/write low-level ACPI register bitfield 17256procedure into a separate read and write, simplifying the code 17257considerably. 17258 17259Obsoleted the AcpiOsCallocate OSL interface. This interface was 17260used only a handful of times and didn't have enough critical mass 17261for a separate interface. Replaced with a common calloc procedure 17262in the core. 17263 17264Fixed a reported problem with the GPE number mapping mechanism 17265that allows GPE1 numbers to be non-contiguous with GPE0. 17266Reorganized the GPE information and shrunk a large array that was 17267originally large enough to hold info for all possible GPEs (256) 17268to simply large enough to hold all GPEs up to the largest GPE 17269number on the machine. 17270 17271Fixed a reported problem with resource structure alignment on 64- 17272bit platforms. 17273 17274Changed the AcpiEnableEvent and AcpiDisableEvent external 17275interfaces to not require any flags for the common case of 17276enabling/disabling a GPE. 17277 17278Implemented support to allow a "Notify" on a Processor object. 17279 17280Most TBDs in comments within the source code have been resolved 17281and eliminated. 17282 17283 17284Fixed a problem in the interpreter where a standalone parent 17285prefix (^) was not handled correctly in the interpreter and 17286debugger. 17287 17288Removed obsolete and unnecessary GPE save/restore code. 17289 17290Implemented Field support in the ASL Load operator. This allows a 17291table to be loaded from a named field, in addition to loading a 17292table directly from an Operation Region. 17293 17294Implemented timeout and handle support in the external Global Lock 17295interfaces. 17296 17297Fixed a problem in the AcpiDump utility where pathnames were no 17298longer being generated correctly during the dump of named objects. 17299 17300Modified the AML debugger to give a full display of if/while 17301predicates instead of just one AML opcode at a time. (The 17302predicate can have several nested ASL statements.) The old method 17303was confusing during single stepping. 17304 17305Code and Data Size: Current core subsystem library sizes are shown 17306below. These are the code and data sizes for the acpica.lib 17307produced by the Microsoft Visual C++ 6.0 compiler, and these 17308values do not include any ACPI driver or OSPM code. The debug 17309version of the code includes the debug output trace mechanism and 17310has a larger code and data size. Note that these values will vary 17311depending on the efficiency of the compiler and the compiler 17312options used during generation. 17313 17314 Previous Release (12_18_01) 17315 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17316 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17317 Current Release: 17318 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17319 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17320 173212) Linux 17322 17323 Implemented fix for PIIX reverse throttling errata (Processor 17324driver) 17325 17326Added new Limit interface (Processor and Thermal drivers) 17327 17328New thermal policy (Thermal driver) 17329 17330Many updates to /proc 17331 17332Battery "low" event support (Battery driver) 17333 17334Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 17335 17336IA32 - IA64 initialization unification, no longer experimental 17337 17338Menuconfig options redesigned 17339 173403) ASL Compiler, version X2037: 17341 17342Implemented several new output features to simplify integration of 17343AML code into firmware: 1) Output the AML in C source code with 17344labels for each named ASL object. The original ASL source code 17345is interleaved as C comments. 2) Output the AML in ASM source code 17346with labels and interleaved ASL source. 3) Output the AML in 17347raw hex table form, in either C or ASM. 17348 17349Implemented support for optional string parameters to the 17350LoadTable operator. 17351 17352Completed support for embedded escape sequences within string 17353literals. The compiler now supports all single character escapes 17354as well as the Octal and Hex escapes. Note: the insertion of a 17355null byte into a string literal (via the hex/octal escape) causes 17356the string to be immediately terminated. A warning is issued. 17357 17358Fixed a problem where incorrect AML was generated for the case 17359where an ASL namepath consists of a single parent prefix ( 17360 17361) with no trailing name segments. 17362 17363The compiler has been successfully generated with a 64-bit C 17364compiler. 17365 17366 17367 17368 17369---------------------------------------- 17370Summary of changes for this label: 12_18_01 17371 173721) Linux 17373 17374Enhanced blacklist with reason and severity fields. Any table's 17375signature may now be used to identify a blacklisted system. 17376 17377Call _PIC control method to inform the firmware which interrupt 17378model the OS is using. Turn on any disabled link devices. 17379 17380Cleaned up busmgr /proc error handling (Andreas Dilger) 17381 17382 2) ACPI CA Core Subsystem: 17383 17384Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 17385while loop) 17386 17387Completed implementation of the ACPI 2.0 "Continue", 17388"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 17389operators. All new ACPI 2.0 operators are now implemented in both 17390the ASL compiler and the AML interpreter. The only remaining ACPI 173912.0 task is support for the String data type in the DerefOf 17392operator. Fixed a problem with AcquireMutex where the status code 17393was lost if the caller had to actually wait for the mutex. 17394 17395Increased the maximum ASL Field size from 64K bits to 4G bits. 17396 17397Completed implementation of the external Global Lock interfaces -- 17398AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 17399Handler parameters were added. 17400 17401Completed another pass at removing warnings and issues when 17402compiling with 64-bit compilers. The code now compiles cleanly 17403with the Intel 64-bit C/C++ compiler. Most notably, the pointer 17404add and subtract (diff) macros have changed considerably. 17405 17406 17407Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1740864-bit platforms, 32-bits on all others. This type is used 17409wherever memory allocation and/or the C sizeof() operator is used, 17410and affects the OSL memory allocation interfaces AcpiOsAllocate 17411and AcpiOsCallocate. 17412 17413Implemented sticky user breakpoints in the AML debugger. 17414 17415Code and Data Size: Current core subsystem library sizes are shown 17416below. These are the code and data sizes for the acpica.lib 17417produced by the Microsoft Visual C++ 6.0 compiler, and these 17418values do not include any ACPI driver or OSPM code. The debug 17419version of the code includes the debug output trace mechanism and 17420has a larger code and data size. Note that these values will vary 17421depending on the efficiency of the compiler and the compiler 17422options used during generation. 17423 17424 Previous Release (12_05_01) 17425 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17426 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17427 Current Release: 17428 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17429 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17430 17431 3) ASL Compiler, version X2034: 17432 17433Now checks for (and generates an error if detected) the use of a 17434Break or Continue statement without an enclosing While statement. 17435 17436 17437Successfully generated the compiler with the Intel 64-bit C 17438compiler. 17439 17440 ---------------------------------------- 17441Summary of changes for this label: 12_05_01 17442 17443 1) ACPI CA Core Subsystem: 17444 17445The ACPI 2.0 CopyObject operator is fully implemented. This 17446operator creates a new copy of an object (and is also used to 17447bypass the "implicit conversion" mechanism of the Store operator.) 17448 17449The ACPI 2.0 semantics for the SizeOf operator are fully 17450implemented. The change is that performing a SizeOf on a 17451reference object causes an automatic dereference of the object to 17452tha actual value before the size is evaluated. This behavior was 17453undefined in ACPI 1.0. 17454 17455The ACPI 2.0 semantics for the Extended IRQ resource descriptor 17456have been implemented. The interrupt polarity and mode are now 17457independently set. 17458 17459Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 17460appearing in Package objects were not properly converted to 17461integers when the internal Package was converted to an external 17462object (via the AcpiEvaluateObject interface.) 17463 17464Fixed a problem with the namespace object deletion mechanism for 17465objects created by control methods. There were two parts to this 17466problem: 1) Objects created during the initialization phase method 17467parse were not being deleted, and 2) The object owner ID mechanism 17468to track objects was broken. 17469 17470Fixed a problem where the use of the ASL Scope operator within a 17471control method would result in an invalid opcode exception. 17472 17473Fixed a problem introduced in the previous label where the buffer 17474length required for the _PRT structure was not being returned 17475correctly. 17476 17477Code and Data Size: Current core subsystem library sizes are shown 17478below. These are the code and data sizes for the acpica.lib 17479produced by the Microsoft Visual C++ 6.0 compiler, and these 17480values do not include any ACPI driver or OSPM code. The debug 17481version of the code includes the debug output trace mechanism and 17482has a larger code and data size. Note that these values will vary 17483depending on the efficiency of the compiler and the compiler 17484options used during generation. 17485 17486 Previous Release (11_20_01) 17487 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17488 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17489 17490 Current Release: 17491 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17492 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17493 17494 2) Linux: 17495 17496Updated all files to apply cleanly against 2.4.16. 17497 17498Added basic PCI Interrupt Routing Table (PRT) support for IA32 17499(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 17500version supports both static and dynamic PRT entries, but dynamic 17501entries are treated as if they were static (not yet 17502reconfigurable). Architecture- specific code to use this data is 17503absent on IA32 but should be available shortly. 17504 17505Changed the initialization sequence to start the ACPI interpreter 17506(acpi_init) prior to initialization of the PCI driver (pci_init) 17507in init/main.c. This ordering is required to support PRT and 17508facilitate other (future) enhancement. A side effect is that the 17509ACPI bus driver and certain device drivers can no longer be loaded 17510as modules. 17511 17512Modified the 'make menuconfig' options to allow PCI Interrupt 17513Routing support to be included without the ACPI Bus and other 17514device drivers. 17515 17516 3) ASL Compiler, version X2033: 17517 17518Fixed some issues with the use of the new CopyObject and 17519DataTableRegion operators. Both are fully functional. 17520 17521 ---------------------------------------- 17522Summary of changes for this label: 11_20_01 17523 17524 20 November 2001. Summary of changes for this release. 17525 17526 1) ACPI CA Core Subsystem: 17527 17528Updated Index support to match ACPI 2.0 semantics. Storing a 17529Integer, String, or Buffer to an Index of a Buffer will store only 17530the least-significant byte of the source to the Indexed buffer 17531byte. Multiple writes are not performed. 17532 17533Fixed a problem where the access type used in an AccessAs ASL 17534operator was not recorded correctly into the field object. 17535 17536Fixed a problem where ASL Event objects were created in a 17537signalled state. Events are now created in an unsignalled state. 17538 17539The internal object cache is now purged after table loading and 17540initialization to reduce the use of dynamic kernel memory -- on 17541the assumption that object use is greatest during the parse phase 17542of the entire table (versus the run-time use of individual control 17543methods.) 17544 17545ACPI 2.0 variable-length packages are now fully operational. 17546 17547Code and Data Size: Code and Data optimizations have permitted new 17548feature development with an actual reduction in the library size. 17549Current core subsystem library sizes are shown below. These are 17550the code and data sizes for the acpica.lib produced by the 17551Microsoft Visual C++ 6.0 compiler, and these values do not include 17552any ACPI driver or OSPM code. The debug version of the code 17553includes the debug output trace mechanism and has a larger code 17554and data size. Note that these values will vary depending on the 17555efficiency of the compiler and the compiler options used during 17556generation. 17557 17558 Previous Release (11_09_01): 17559 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17560 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17561 17562 Current Release: 17563 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17564 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17565 17566 2) Linux: 17567 17568Enhanced the ACPI boot-time initialization code to allow the use 17569of Local APIC tables for processor enumeration on IA-32, and to 17570pave the way for a fully MPS-free boot (on SMP systems) in the 17571near future. This functionality replaces 17572arch/i386/kernel/acpitables.c, which was introduced in an earlier 175732.4.15-preX release. To enable this feature you must add 17574"acpi_boot=on" to the kernel command line -- see the help entry 17575for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 17576the works... 17577 17578Restructured the configuration options to allow boot-time table 17579parsing support without inclusion of the ACPI Interpreter (and 17580other) code. 17581 17582NOTE: This release does not include fixes for the reported events, 17583power-down, and thermal passive cooling issues (coming soon). 17584 17585 3) ASL Compiler: 17586 17587Added additional typechecking for Fields within restricted access 17588Operation Regions. All fields within EC and CMOS regions must be 17589declared with ByteAcc. All fields within SMBus regions must be 17590declared with the BufferAcc access type. 17591 17592Fixed a problem where the listing file output of control methods 17593no longer interleaved the actual AML code with the ASL source 17594code. 17595 17596 17597 17598 17599---------------------------------------- 17600Summary of changes for this label: 11_09_01 17601 176021) ACPI CA Core Subsystem: 17603 17604Implemented ACPI 2.0-defined support for writes to fields with a 17605Buffer, String, or Integer source operand that is smaller than the 17606target field. In these cases, the source operand is zero-extended 17607to fill the target field. 17608 17609Fixed a problem where a Field starting bit offset (within the 17610parent operation region) was calculated incorrectly if the 17611 17612alignment of the field differed from the access width. This 17613affected CreateWordField, CreateDwordField, CreateQwordField, and 17614possibly other fields that use the "AccessAny" keyword. 17615 17616Fixed a problem introduced in the 11_02_01 release where indirect 17617stores through method arguments did not operate correctly. 17618 176192) Linux: 17620 17621Implemented boot-time ACPI table parsing support 17622(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 17623facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 17624legacy BIOS interfaces (e.g. MPS) for the configuration of system 17625processors, memory, and interrupts during setup_arch(). Note that 17626this patch does not include the required architecture-specific 17627changes required to apply this information -- subsequent patches 17628will be posted for both IA32 and IA64 to achieve this. 17629 17630Added low-level sleep support for IA32 platforms, courtesy of Pat 17631Mochel. This allows IA32 systems to transition to/from various 17632sleeping states (e.g. S1, S3), although the lack of a centralized 17633driver model and power-manageable drivers will prevent its 17634(successful) use on most systems. 17635 17636Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 17637submenu, unified IA32 and IA64 options, added new "Boot using ACPI 17638tables" option, etc. 17639 17640Increased the default timeout for the EC driver from 1ms to 10ms 17641(1000 cycles of 10us) to try to address AE_TIME errors during EC 17642transactions. 17643 17644 ---------------------------------------- 17645Summary of changes for this label: 11_02_01 17646 176471) ACPI CA Core Subsystem: 17648 17649ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 17650(QWordAcc keyword). All ACPI 2.0 64-bit support is now 17651implemented. 17652 17653OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 17654changes to support ACPI 2.0 Qword field access. Read/Write 17655PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 17656accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 17657the value parameter for the address space handler interface is now 17658an ACPI_INTEGER. OSL implementations of these interfaces must now 17659handle the case where the Width parameter is 64. 17660 17661Index Fields: Fixed a problem where unaligned bit assembly and 17662disassembly for IndexFields was not supported correctly. 17663 17664Index and Bank Fields: Nested Index and Bank Fields are now 17665supported. During field access, a check is performed to ensure 17666that the value written to an Index or Bank register is not out of 17667the range of the register. The Index (or Bank) register is 17668written before each access to the field data. Future support will 17669include allowing individual IndexFields to be wider than the 17670DataRegister width. 17671 17672Fields: Fixed a problem where the AML interpreter was incorrectly 17673attempting to write beyond the end of a Field/OpRegion. This was 17674a boundary case that occurred when a DWORD field was written to a 17675BYTE access OpRegion, forcing multiple writes and causing the 17676interpreter to write one datum too many. 17677 17678Fields: Fixed a problem with Field/OpRegion access where the 17679starting bit address of a field was incorrectly calculated if the 17680current access type was wider than a byte (WordAcc, DwordAcc, or 17681QwordAcc). 17682 17683Fields: Fixed a problem where forward references to individual 17684FieldUnits (individual Field names within a Field definition) were 17685not resolved during the AML table load. 17686 17687Fields: Fixed a problem where forward references from a Field 17688definition to the parent Operation Region definition were not 17689resolved during the AML table load. 17690 17691Fields: Duplicate FieldUnit names within a scope are now detected 17692during AML table load. 17693 17694Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 17695returned an incorrect name for the root node. 17696 17697Code and Data Size: Code and Data optimizations have permitted new 17698feature development with an actual reduction in the library size. 17699Current core subsystem library sizes are shown below. These are 17700the code and data sizes for the acpica.lib produced by the 17701Microsoft Visual C++ 6.0 compiler, and these values do not include 17702any ACPI driver or OSPM code. The debug version of the code 17703includes the debug output trace mechanism and has a larger code 17704and data size. Note that these values will vary depending on the 17705efficiency of the compiler and the compiler options used during 17706generation. 17707 17708 Previous Release (10_18_01): 17709 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17710 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17711 17712 Current Release: 17713 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17714 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17715 17716 2) Linux: 17717 17718Improved /proc processor output (Pavel Machek) Re-added 17719MODULE_LICENSE("GPL") to all modules. 17720 17721 3) ASL Compiler version X2030: 17722 17723Duplicate FieldUnit names within a scope are now detected and 17724flagged as errors. 17725 17726 4) Documentation: 17727 17728Programmer Reference updated to reflect OSL and address space 17729handler interface changes described above. 17730 17731---------------------------------------- 17732Summary of changes for this label: 10_18_01 17733 17734ACPI CA Core Subsystem: 17735 17736Fixed a problem with the internal object reference count mechanism 17737that occasionally caused premature object deletion. This resolves 17738all of the outstanding problem reports where an object is deleted 17739in the middle of an interpreter evaluation. Although this problem 17740only showed up in rather obscure cases, the solution to the 17741problem involved an adjustment of all reference counts involving 17742objects attached to namespace nodes. 17743 17744Fixed a problem with Field support in the interpreter where 17745writing to an aligned field whose length is an exact multiple (2 17746or greater) of the field access granularity would cause an attempt 17747to write beyond the end of the field. 17748 17749The top level AML opcode execution functions within the 17750interpreter have been renamed with a more meaningful and 17751consistent naming convention. The modules exmonad.c and 17752exdyadic.c were eliminated. New modules are exoparg1.c, 17753exoparg2.c, exoparg3.c, and exoparg6.c. 17754 17755Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 17756 17757Fixed a problem where the AML debugger was causing some internal 17758objects to not be deleted during subsystem termination. 17759 17760Fixed a problem with the external AcpiEvaluateObject interface 17761where the subsystem would fault if the named object to be 17762evaluated referred to a constant such as Zero, Ones, etc. 17763 17764Fixed a problem with IndexFields and BankFields where the 17765subsystem would fault if the index, data, or bank registers were 17766not defined in the same scope as the field itself. 17767 17768Added printf format string checking for compilers that support 17769this feature. Corrected more than 50 instances of issues with 17770format specifiers within invocations of ACPI_DEBUG_PRINT 17771throughout the core subsystem code. 17772 17773The ASL "Revision" operator now returns the ACPI support level 17774implemented in the core - the value "2" since the ACPI 2.0 support 17775is more than 50% implemented. 17776 17777Enhanced the output of the AML debugger "dump namespace" command 17778to output in a more human-readable form. 17779 17780Current core subsystem library code sizes are shown below. These 17781 17782are the code and data sizes for the acpica.lib produced by the 17783Microsoft Visual C++ 6.0 compiler, and these values do not include 17784any ACPI driver or OSPM code. The debug version of the code 17785includes the full debug trace mechanism -- leading to a much 17786 17787larger code and data size. Note that these values will vary 17788depending on the efficiency of the compiler and the compiler 17789options used during generation. 17790 17791 Previous Label (09_20_01): 17792 Non-Debug Version: 65K Code, 5K Data, 70K Total 17793 Debug Version: 138K Code, 58K Data, 196K Total 17794 17795 This Label: 17796 17797 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17798 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17799 17800Linux: 17801 17802Implemented a "Bad BIOS Blacklist" to track machines that have 17803known ASL/AML problems. 17804 17805Enhanced the /proc interface for the thermal zone driver and added 17806support for _HOT (the critical suspend trip point). The 'info' 17807file now includes threshold/policy information, and allows setting 17808of _SCP (cooling preference) and _TZP (polling frequency) values 17809to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 17810frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 17811preference to the passive/quiet mode (if supported by the ASL). 17812 17813Implemented a workaround for a gcc bug that resuted in an OOPs 17814when loading the control method battery driver. 17815 17816 ---------------------------------------- 17817Summary of changes for this label: 09_20_01 17818 17819 ACPI CA Core Subsystem: 17820 17821The AcpiEnableEvent and AcpiDisableEvent interfaces have been 17822modified to allow individual GPE levels to be flagged as wake- 17823enabled (i.e., these GPEs are to remain enabled when the platform 17824sleeps.) 17825 17826The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 17827support wake-enabled GPEs. This means that upon entering the 17828sleep state, all GPEs that are not wake-enabled are disabled. 17829When leaving the sleep state, these GPEs are re-enabled. 17830 17831A local double-precision divide/modulo module has been added to 17832enhance portability to OS kernels where a 64-bit math library is 17833not available. The new module is "utmath.c". 17834 17835Several optimizations have been made to reduce the use of CPU 17836stack. Originally over 2K, the maximum stack usage is now below 178372K at 1860 bytes (1.82k) 17838 17839Fixed a problem with the AcpiGetFirmwareTable interface where the 17840root table pointer was not mapped into a logical address properly. 17841 17842Fixed a problem where a NULL pointer was being dereferenced in the 17843interpreter code for the ASL Notify operator. 17844 17845Fixed a problem where the use of the ASL Revision operator 17846returned an error. This operator now returns the current version 17847of the ACPI CA core subsystem. 17848 17849Fixed a problem where objects passed as control method parameters 17850to AcpiEvaluateObject were always deleted at method termination. 17851However, these objects may end up being stored into the namespace 17852by the called method. The object reference count mechanism was 17853applied to these objects instead of a force delete. 17854 17855Fixed a problem where static strings or buffers (contained in the 17856AML code) that are declared as package elements within the ASL 17857code could cause a fault because the interpreter would attempt to 17858delete them. These objects are now marked with the "static 17859object" flag to prevent any attempt to delete them. 17860 17861Implemented an interpreter optimization to use operands directly 17862from the state object instead of extracting the operands to local 17863variables. This reduces stack use and code size, and improves 17864performance. 17865 17866The module exxface.c was eliminated as it was an unnecessary extra 17867layer of code. 17868 17869Current core subsystem library code sizes are shown below. These 17870are the code and data sizes for the acpica.lib produced by the 17871Microsoft Visual C++ 6.0 compiler, and these values do not include 17872any ACPI driver or OSPM code. The debug version of the code 17873includes the full debug trace mechanism -- leading to a much 17874larger code and data size. Note that these values will vary 17875depending on the efficiency of the compiler and the compiler 17876options used during generation. 17877 17878 Non-Debug Version: 65K Code, 5K Data, 70K Total 17879(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 17880Total (Previously 195K) 17881 17882Linux: 17883 17884Support for ACPI 2.0 64-bit integers has been added. All ACPI 17885Integer objects are now 64 bits wide 17886 17887All Acpi data types and structures are now in lower case. Only 17888Acpi macros are upper case for differentiation. 17889 17890 Documentation: 17891 17892Changes to the external interfaces as described above. 17893 17894 ---------------------------------------- 17895Summary of changes for this label: 08_31_01 17896 17897 ACPI CA Core Subsystem: 17898 17899A bug with interpreter implementation of the ASL Divide operator 17900was found and fixed. The implicit function return value (not the 17901explicit store operands) was returning the remainder instead of 17902the quotient. This was a longstanding bug and it fixes several 17903known outstanding issues on various platforms. 17904 17905The ACPI_DEBUG_PRINT and function trace entry/exit macros have 17906been further optimized for size. There are 700 invocations of the 17907DEBUG_PRINT macro alone, so each optimization reduces the size of 17908the debug version of the subsystem significantly. 17909 17910A stack trace mechanism has been implemented. The maximum stack 17911usage is about 2K on 32-bit platforms. The debugger command "stat 17912stack" will display the current maximum stack usage. 17913 17914All public symbols and global variables within the subsystem are 17915now prefixed with the string "Acpi". This keeps all of the 17916symbols grouped together in a kernel map, and avoids conflicts 17917with other kernel subsystems. 17918 17919Most of the internal fixed lookup tables have been moved into the 17920code segment via the const operator. 17921 17922Several enhancements have been made to the interpreter to both 17923reduce the code size and improve performance. 17924 17925Current core subsystem library code sizes are shown below. These 17926are the code and data sizes for the acpica.lib produced by the 17927Microsoft Visual C++ 6.0 compiler, and these values do not include 17928any ACPI driver or OSPM code. The debug version of the code 17929includes the full debug trace mechanism which contains over 700 17930invocations of the DEBUG_PRINT macro, 500 function entry macro 17931invocations, and over 900 function exit macro invocations -- 17932leading to a much larger code and data size. Note that these 17933values will vary depending on the efficiency of the compiler and 17934the compiler options used during generation. 17935 17936 Non-Debug Version: 64K Code, 5K Data, 69K Total 17937Debug Version: 137K Code, 58K Data, 195K Total 17938 17939 Linux: 17940 17941Implemented wbinvd() macro, pending a kernel-wide definition. 17942 17943Fixed /proc/acpi/event to handle poll() and short reads. 17944 17945 ASL Compiler, version X2026: 17946 17947Fixed a problem introduced in the previous label where the AML 17948 17949code emitted for package objects produced packages with zero 17950length. 17951 17952 ---------------------------------------- 17953Summary of changes for this label: 08_16_01 17954 17955ACPI CA Core Subsystem: 17956 17957The following ACPI 2.0 ASL operators have been implemented in the 17958AML interpreter (These are already supported by the Intel ASL 17959compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 17960ToBuffer. Support for 64-bit AML constants is implemented in the 17961AML parser, debugger, and disassembler. 17962 17963The internal memory tracking mechanism (leak detection code) has 17964been upgraded to reduce the memory overhead (a separate tracking 17965block is no longer allocated for each memory allocation), and now 17966supports all of the internal object caches. 17967 17968The data structures and code for the internal object caches have 17969been coelesced and optimized so that there is a single cache and 17970memory list data structure and a single group of functions that 17971implement generic cache management. This has reduced the code 17972size in both the debug and release versions of the subsystem. 17973 17974The DEBUG_PRINT macro(s) have been optimized for size and replaced 17975by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 17976different, because it generates a single call to an internal 17977function. This results in a savings of about 90 bytes per 17978invocation, resulting in an overall code and data savings of about 1797916% in the debug version of the subsystem. 17980 17981 Linux: 17982 17983Fixed C3 disk corruption problems and re-enabled C3 on supporting 17984machines. 17985 17986Integrated low-level sleep code by Patrick Mochel. 17987 17988Further tweaked source code Linuxization. 17989 17990Other minor fixes. 17991 17992 ASL Compiler: 17993 17994Support for ACPI 2.0 variable length packages is fixed/completed. 17995 17996Fixed a problem where the optional length parameter for the ACPI 179972.0 ToString operator. 17998 17999Fixed multiple extraneous error messages when a syntax error is 18000detected within the declaration line of a control method. 18001 18002 ---------------------------------------- 18003Summary of changes for this label: 07_17_01 18004 18005ACPI CA Core Subsystem: 18006 18007Added a new interface named AcpiGetFirmwareTable to obtain any 18008ACPI table via the ACPI signature. The interface can be called at 18009any time during kernel initialization, even before the kernel 18010virtual memory manager is initialized and paging is enabled. This 18011allows kernel subsystems to obtain ACPI tables very early, even 18012before the ACPI CA subsystem is initialized. 18013 18014Fixed a problem where Fields defined with the AnyAcc attribute 18015could be resolved to the incorrect address under the following 18016conditions: 1) the field width is larger than 8 bits and 2) the 18017parent operation region is not defined on a DWORD boundary. 18018 18019Fixed a problem where the interpreter is not being locked during 18020namespace initialization (during execution of the _INI control 18021methods), causing an error when an attempt is made to release it 18022later. 18023 18024ACPI 2.0 support in the AML Interpreter has begun and will be 18025ongoing throughout the rest of this year. In this label, The Mod 18026operator is implemented. 18027 18028Added a new data type to contain full PCI addresses named 18029ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 18030and Function values. 18031 18032 Linux: 18033 18034Enhanced the Linux version of the source code to change most 18035capitalized ACPI type names to lowercase. For example, all 18036instances of ACPI_STATUS are changed to acpi_status. This will 18037result in a large diff, but the change is strictly cosmetic and 18038aligns the CA code closer to the Linux coding standard. 18039 18040OSL Interfaces: 18041 18042The interfaces to the PCI configuration space have been changed to 18043add the PCI Segment number and to split the single 32-bit combined 18044DeviceFunction field into two 16-bit fields. This was 18045accomplished by moving the four values that define an address in 18046PCI configuration space (segment, bus, device, and function) to 18047the new ACPI_PCI_ID structure. 18048 18049The changes to the PCI configuration space interfaces led to a 18050reexamination of the complete set of address space access 18051interfaces for PCI, I/O, and Memory. The previously existing 18 18052interfaces have proven difficult to maintain (any small change 18053must be propagated across at least 6 interfaces) and do not easily 18054allow for future expansion to 64 bits if necessary. Also, on some 18055systems, it would not be appropriate to demultiplex the access 18056width (8, 16, 32,or 64) before calling the OSL if the 18057corresponding native OS interfaces contain a similar access width 18058parameter. For these reasons, the 18 address space interfaces 18059have been replaced by these 6 new ones: 18060 18061AcpiOsReadPciConfiguration 18062AcpiOsWritePciConfiguration 18063AcpiOsReadMemory 18064AcpiOsWriteMemory 18065AcpiOsReadPort 18066AcpiOsWritePort 18067 18068Added a new interface named AcpiOsGetRootPointer to allow the OSL 18069to perform the platform and/or OS-specific actions necessary to 18070obtain the ACPI RSDP table pointer. On IA-32 platforms, this 18071interface will simply call down to the CA core to perform the low- 18072memory search for the table. On IA-64, the RSDP is obtained from 18073EFI. Migrating this interface to the OSL allows the CA core to 18074 18075remain OS and platform independent. 18076 18077Added a new interface named AcpiOsSignal to provide a generic 18078"function code and pointer" interface for various miscellaneous 18079signals and notifications that must be made to the host OS. The 18080first such signals are intended to support the ASL Fatal and 18081Breakpoint operators. In the latter case, the AcpiOsBreakpoint 18082interface has been obsoleted. 18083 18084The definition of the AcpiFormatException interface has been 18085changed to simplify its use. The caller no longer must supply a 18086buffer to the call; A pointer to a const string is now returned 18087directly. This allows the call to be easily used in printf 18088statements, etc. since the caller does not have to manage a local 18089buffer. 18090 18091 18092 ASL Compiler, Version X2025: 18093 18094The ACPI 2.0 Switch/Case/Default operators have been implemented 18095and are fully functional. They will work with all ACPI 1.0 18096interpreters, since the operators are simply translated to If/Else 18097pairs. 18098 18099The ACPI 2.0 ElseIf operator is implemented and will also work 18100with 1.0 interpreters, for the same reason. 18101 18102Implemented support for ACPI 2.0 variable-length packages. These 18103packages have a separate opcode, and their size is determined by 18104the interpreter at run-time. 18105 18106Documentation The ACPI CA Programmer Reference has been updated to 18107reflect the new interfaces and changes to existing interfaces. 18108 18109 ------------------------------------------ 18110Summary of changes for this label: 06_15_01 18111 18112 ACPI CA Core Subsystem: 18113 18114Fixed a problem where a DWORD-accessed field within a Buffer 18115object would get its byte address inadvertently rounded down to 18116the nearest DWORD. Buffers are always Byte-accessible. 18117 18118 ASL Compiler, version X2024: 18119 18120Fixed a problem where the Switch() operator would either fault or 18121hang the compiler. Note however, that the AML code for this ACPI 181222.0 operator is not yet implemented. 18123 18124Compiler uses the new AcpiOsGetTimer interface to obtain compile 18125timings. 18126 18127Implementation of the CreateField operator automatically converts 18128a reference to a named field within a resource descriptor from a 18129byte offset to a bit offset if required. 18130 18131Added some missing named fields from the resource descriptor 18132support. These are the names that are automatically created by the 18133compiler to reference fields within a descriptor. They are only 18134valid at compile time and are not passed through to the AML 18135interpreter. 18136 18137Resource descriptor named fields are now typed as Integers and 18138subject to compile-time typechecking when used in expressions. 18139 18140 ------------------------------------------ 18141Summary of changes for this label: 05_18_01 18142 18143 ACPI CA Core Subsystem: 18144 18145Fixed a couple of problems in the Field support code where bits 18146from adjacent fields could be returned along with the proper field 18147bits. Restructured the field support code to improve performance, 18148readability and maintainability. 18149 18150New DEBUG_PRINTP macro automatically inserts the procedure name 18151into the output, saving hundreds of copies of procedure name 18152strings within the source, shrinking the memory footprint of the 18153debug version of the core subsystem. 18154 18155 Source Code Structure: 18156 18157The source code directory tree was restructured to reflect the 18158current organization of the component architecture. Some files 18159and directories have been moved and/or renamed. 18160 18161 Linux: 18162 18163Fixed leaking kacpidpc processes. 18164 18165Fixed queueing event data even when /proc/acpi/event is not 18166opened. 18167 18168 ASL Compiler, version X2020: 18169 18170Memory allocation performance enhancement - over 24X compile time 18171improvement on large ASL files. Parse nodes and namestring 18172buffers are now allocated from a large internal compiler buffer. 18173 18174The temporary .SRC file is deleted unless the "-s" option is 18175specified 18176 18177The "-d" debug output option now sends all output to the .DBG file 18178instead of the console. 18179 18180"External" second parameter is now optional 18181 18182"ElseIf" syntax now properly allows the predicate 18183 18184Last operand to "Load" now recognized as a Target operand 18185 18186Debug object can now be used anywhere as a normal object. 18187 18188ResourceTemplate now returns an object of type BUFFER 18189 18190EISAID now returns an object of type INTEGER 18191 18192"Index" now works with a STRING operand 18193 18194"LoadTable" now accepts optional parameters 18195 18196"ToString" length parameter is now optional 18197 18198"Interrupt (ResourceType," parse error fixed. 18199 18200"Register" with a user-defined region space parse error fixed 18201 18202Escaped backslash at the end of a string ("\\") scan/parse error 18203fixed 18204 18205"Revision" is now an object of type INTEGER. 18206 18207 18208 18209------------------------------------------ 18210Summary of changes for this label: 05_02_01 18211 18212Linux: 18213 18214/proc/acpi/event now blocks properly. 18215 18216Removed /proc/sys/acpi. You can still dump your DSDT from 18217/proc/acpi/dsdt. 18218 18219 ACPI CA Core Subsystem: 18220 18221Fixed a problem introduced in the previous label where some of the 18222"small" resource descriptor types were not recognized. 18223 18224Improved error messages for the case where an ASL Field is outside 18225the range of the parent operation region. 18226 18227 ASL Compiler, version X2018: 18228 18229 18230Added error detection for ASL Fields that extend beyond the length 18231of the parent operation region (only if the length of the region 18232is known at compile time.) This includes fields that have a 18233minimum access width that is smaller than the parent region, and 18234individual field units that are partially or entirely beyond the 18235extent of the parent. 18236 18237 18238 18239------------------------------------------ 18240Summary of changes for this label: 04_27_01 18241 18242 ACPI CA Core Subsystem: 18243 18244Fixed a problem where the namespace mutex could be released at the 18245wrong time during execution of AcpiRemoveAddressSpaceHandler. 18246 18247Added optional thread ID output for debug traces, to simplify 18248debugging of multiple threads. Added context switch notification 18249when the debug code realizes that a different thread is now 18250executing ACPI code. 18251 18252Some additional external data types have been prefixed with the 18253string "ACPI_" for consistency. This may effect existing code. 18254The data types affected are the external callback typedefs - e.g., 18255 18256WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 18257 18258 Linux: 18259 18260Fixed an issue with the OSL semaphore implementation where a 18261thread was waking up with an error from receiving a SIGCHLD 18262signal. 18263 18264Linux version of ACPI CA now uses the system C library for string 18265manipulation routines instead of a local implementation. 18266 18267Cleaned up comments and removed TBDs. 18268 18269 ASL Compiler, version X2017: 18270 18271Enhanced error detection and reporting for all file I/O 18272operations. 18273 18274 Documentation: 18275 18276Programmer Reference updated to version 1.06. 18277 18278 18279 18280------------------------------------------ 18281Summary of changes for this label: 04_13_01 18282 18283 ACPI CA Core Subsystem: 18284 18285Restructured support for BufferFields and RegionFields. 18286BankFields support is now fully operational. All known 32-bit 18287limitations on field sizes have been removed. Both BufferFields 18288and (Operation) RegionFields are now supported by the same field 18289management code. 18290 18291Resource support now supports QWORD address and IO resources. The 1829216/32/64 bit address structures and the Extended IRQ structure 18293have been changed to properly handle Source Resource strings. 18294 18295A ThreadId of -1 is now used to indicate a "mutex not acquired" 18296condition internally and must never be returned by AcpiOsThreadId. 18297This reserved value was changed from 0 since Unix systems allow a 18298thread ID of 0. 18299 18300Linux: 18301 18302Driver code reorganized to enhance portability 18303 18304Added a kernel configuration option to control ACPI_DEBUG 18305 18306Fixed the EC driver to honor _GLK. 18307 18308ASL Compiler, version X2016: 18309 18310Fixed support for the "FixedHw" keyword. Previously, the FixedHw 18311address space was set to 0, not 0x7f as it should be. 18312 18313 ------------------------------------------ 18314Summary of changes for this label: 03_13_01 18315 18316 ACPI CA Core Subsystem: 18317 18318During ACPI initialization, the _SB_._INI method is now run if 18319present. 18320 18321Notify handler fix - notifies are deferred until the parent method 18322completes execution. This fixes the "mutex already acquired" 18323issue seen occasionally. 18324 18325Part of the "implicit conversion" rules in ACPI 2.0 have been 18326found to cause compatibility problems with existing ASL/AML. The 18327convert "result-to-target-type" implementation has been removed 18328for stores to method Args and Locals. Source operand conversion 18329is still fully implemented. Possible changes to ACPI 2.0 18330specification pending. 18331 18332Fix to AcpiRsCalculatePciRoutingTableLength to return correct 18333length. 18334 18335Fix for compiler warnings for 64-bit compiles. 18336 18337 Linux: 18338 18339/proc output aligned for easier parsing. 18340 18341Release-version compile problem fixed. 18342 18343New kernel configuration options documented in Configure.help. 18344 18345IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 18346context" message. 18347 18348 OSPM: 18349 18350Power resource driver integrated with bus manager. 18351 18352Fixed kernel fault during active cooling for thermal zones. 18353 18354Source Code: 18355 18356The source code tree has been restructured. 18357 18358 18359 18360------------------------------------------ 18361Summary of changes for this label: 03_02_01 18362 18363 Linux OS Services Layer (OSL): 18364 18365Major revision of all Linux-specific code. 18366 18367Modularized all ACPI-specific drivers. 18368 18369Added new thermal zone and power resource drivers. 18370 18371Revamped /proc interface (new functionality is under /proc/acpi). 18372 18373New kernel configuration options. 18374 18375 Linux known issues: 18376 18377New kernel configuration options not documented in Configure.help 18378yet. 18379 18380 18381Module dependencies not currently implemented. If used, they 18382should be loaded in this order: busmgr, power, ec, system, 18383processor, battery, ac_adapter, button, thermal. 18384 18385Modules will not load if CONFIG_MODVERSION is set. 18386 18387IBM 600E - entering S5 may reboot instead of shutting down. 18388 18389IBM 600E - Sleep button may generate "Invalid <NULL> context" 18390message. 18391 18392Some systems may fail with "execution mutex already acquired" 18393message. 18394 18395 ACPI CA Core Subsystem: 18396 18397Added a new OSL Interface, AcpiOsGetThreadId. This was required 18398for the deadlock detection code. Defined to return a non-zero, 32- 18399bit thread ID for the currently executing thread. May be a non- 18400zero constant integer on single-thread systems. 18401 18402Implemented deadlock detection for internal subsystem mutexes. We 18403may add conditional compilation for this code (debug only) later. 18404 18405ASL/AML Mutex object semantics are now fully supported. This 18406includes multiple acquires/releases by owner and support for the 18407 18408Mutex SyncLevel parameter. 18409 18410A new "Force Release" mechanism automatically frees all ASL 18411Mutexes that have been acquired but not released when a thread 18412exits the interpreter. This forces conformance to the ACPI spec 18413("All mutexes must be released when an invocation exits") and 18414prevents deadlocked ASL threads. This mechanism can be expanded 18415(later) to monitor other resource acquisitions if OEM ASL code 18416continues to misbehave (which it will). 18417 18418Several new ACPI exception codes have been added for the Mutex 18419support. 18420 18421Recursive method calls are now allowed and supported (the ACPI 18422spec does in fact allow recursive method calls.) The number of 18423recursive calls is subject to the restrictions imposed by the 18424SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 18425parameter. 18426 18427Implemented support for the SyncLevel parameter for control 18428methods (ACPI 2.0 feature) 18429 18430Fixed a deadlock problem when multiple threads attempted to use 18431the interpreter. 18432 18433Fixed a problem where the string length of a String package 18434element was not always set in a package returned from 18435AcpiEvaluateObject. 18436 18437Fixed a problem where the length of a String package element was 18438not always included in the length of the overall package returned 18439from AcpiEvaluateObject. 18440 18441Added external interfaces (Acpi*) to the ACPI debug memory 18442manager. This manager keeps a list of all outstanding 18443allocations, and can therefore detect memory leaks and attempts to 18444free memory blocks more than once. Useful for code such as the 18445power manager, etc. May not be appropriate for device drivers. 18446Performance with the debug code enabled is slow. 18447 18448The ACPI Global Lock is now an optional hardware element. 18449 18450 ASL Compiler Version X2015: 18451 18452Integrated changes to allow the compiler to be generated on 18453multiple platforms. 18454 18455Linux makefile added to generate the compiler on Linux 18456 18457 Source Code: 18458 18459All platform-specific headers have been moved to their own 18460subdirectory, Include/Platform. 18461 18462New source file added, Interpreter/ammutex.c 18463 18464New header file, Include/acstruct.h 18465 18466 Documentation: 18467 18468The programmer reference has been updated for the following new 18469interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 18470 18471 ------------------------------------------ 18472Summary of changes for this label: 02_08_01 18473 18474Core ACPI CA Subsystem: Fixed a problem where an error was 18475incorrectly returned if the return resource buffer was larger than 18476the actual data (in the resource interfaces). 18477 18478References to named objects within packages are resolved to the 18479 18480full pathname string before packages are returned directly (via 18481the AcpiEvaluateObject interface) or indirectly via the resource 18482interfaces. 18483 18484Linux OS Services Layer (OSL): 18485 18486Improved /proc battery interface. 18487 18488 18489Added C-state debugging output and other miscellaneous fixes. 18490 18491ASL Compiler Version X2014: 18492 18493All defined method arguments can now be used as local variables, 18494including the ones that are not actually passed in as parameters. 18495The compiler tracks initialization of the arguments and issues an 18496exception if they are used without prior assignment (just like 18497locals). 18498 18499The -o option now specifies a filename prefix that is used for all 18500output files, including the AML output file. Otherwise, the 18501default behavior is as follows: 1) the AML goes to the file 18502specified in the DSDT. 2) all other output files use the input 18503source filename as the base. 18504 18505 ------------------------------------------ 18506Summary of changes for this label: 01_25_01 18507 18508Core ACPI CA Subsystem: Restructured the implementation of object 18509store support within the interpreter. This includes support for 18510the Store operator as well as any ASL operators that include a 18511target operand. 18512 18513Partially implemented support for Implicit Result-to-Target 18514conversion. This is when a result object is converted on the fly 18515to the type of an existing target object. Completion of this 18516support is pending further analysis of the ACPI specification 18517concerning this matter. 18518 18519CPU-specific code has been removed from the subsystem (hardware 18520directory). 18521 18522New Power Management Timer functions added 18523 18524Linux OS Services Layer (OSL): Moved system state transition code 18525to the core, fixed it, and modified Linux OSL accordingly. 18526 18527Fixed C2 and C3 latency calculations. 18528 18529 18530We no longer use the compilation date for the version message on 18531initialization, but retrieve the version from AcpiGetSystemInfo(). 18532 18533Incorporated for fix Sony VAIO machines. 18534 18535Documentation: The Programmer Reference has been updated and 18536reformatted. 18537 18538 18539ASL Compiler: Version X2013: Fixed a problem where the line 18540numbering and error reporting could get out of sync in the 18541presence of multiple include files. 18542 18543 ------------------------------------------ 18544Summary of changes for this label: 01_15_01 18545 18546Core ACPI CA Subsystem: 18547 18548Implemented support for type conversions in the execution of the 18549ASL Concatenate operator (The second operand is converted to 18550match the type of the first operand before concatenation.) 18551 18552Support for implicit source operand conversion is partially 18553implemented. The ASL source operand types Integer, Buffer, and 18554String are freely interchangeable for most ASL operators and are 18555converted by the interpreter on the fly as required. Implicit 18556Target operand conversion (where the result is converted to the 18557target type before storing) is not yet implemented. 18558 18559Support for 32-bit and 64-bit BCD integers is implemented. 18560 18561Problem fixed where a field read on an aligned field could cause a 18562read past the end of the field. 18563 18564New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 18565does not return a value, but the caller expects one. (The ASL 18566compiler flags this as a warning.) 18567 18568ASL Compiler: 18569 18570Version X2011: 185711. Static typechecking of all operands is implemented. This 18572prevents the use of invalid objects (such as using a Package where 18573an Integer is required) at compile time instead of at interpreter 18574run-time. 185752. The ASL source line is printed with ALL errors and warnings. 185763. Bug fix for source EOF without final linefeed. 185774. Debug option is split into a parse trace and a namespace trace. 185785. Namespace output option (-n) includes initial values for 18579integers and strings. 185806. Parse-only option added for quick syntax checking. 185817. Compiler checks for duplicate ACPI name declarations 18582 18583Version X2012: 185841. Relaxed typechecking to allow interchangeability between 18585strings, integers, and buffers. These types are now converted by 18586the interpreter at runtime. 185872. Compiler reports time taken by each internal subsystem in the 18588debug output file. 18589 18590 18591 ------------------------------------------ 18592Summary of changes for this label: 12_14_00 18593 18594ASL Compiler: 18595 18596This is the first official release of the compiler. Since the 18597compiler requires elements of the Core Subsystem, this label 18598synchronizes everything. 18599 18600------------------------------------------ 18601Summary of changes for this label: 12_08_00 18602 18603 18604Fixed a problem where named references within the ASL definition 18605of both OperationRegions and CreateXXXFields did not work 18606properly. The symptom was an AE_AML_OPERAND_TYPE during 18607initialization of the region/field. This is similar (but not 18608related internally) to the problem that was fixed in the last 18609label. 18610 18611Implemented both 32-bit and 64-bit support for the BCD ASL 18612functions ToBCD and FromBCD. 18613 18614Updated all legal headers to include "2000" in the copyright 18615years. 18616 18617 ------------------------------------------ 18618Summary of changes for this label: 12_01_00 18619 18620Fixed a problem where method invocations within the ASL definition 18621of both OperationRegions and CreateXXXFields did not work 18622properly. The symptom was an AE_AML_OPERAND_TYPE during 18623initialization of the region/field: 18624 18625 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 18626[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 18627(0x3005) 18628 18629Fixed a problem where operators with more than one nested 18630subexpression would fail. The symptoms were varied, by mostly 18631AE_AML_OPERAND_TYPE errors. This was actually a rather serious 18632problem that has gone unnoticed until now. 18633 18634 Subtract (Add (1,2), Multiply (3,4)) 18635 18636Fixed a problem where AcpiGetHandle didn't quite get fixed in the 18637previous build (The prefix part of a relative path was handled 18638incorrectly). 18639 18640Fixed a problem where Operation Region initialization failed if 18641the operation region name was a "namepath" instead of a simple 18642"nameseg". Symptom was an AE_NO_OPERAND error. 18643 18644Fixed a problem where an assignment to a local variable via the 18645indirect RefOf mechanism only worked for the first such 18646assignment. Subsequent assignments were ignored. 18647 18648 ------------------------------------------ 18649Summary of changes for this label: 11_15_00 18650 18651ACPI 2.0 table support with backwards support for ACPI 1.0 and the 186520.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 18653the AML interpreter does NOT have support for the new 2.0 ASL 18654grammar terms at this time. 18655 18656All ACPI hardware access is via the GAS structures in the ACPI 2.0 18657FADT. 18658 18659All physical memory addresses across all platforms are now 64 bits 18660wide. Logical address width remains dependent on the platform 18661(i.e., "void *"). 18662 18663AcpiOsMapMemory interface changed to a 64-bit physical address. 18664 18665The AML interpreter integer size is now 64 bits, as per the ACPI 186662.0 specification. 18667 18668For backwards compatibility with ACPI 1.0, ACPI tables with a 18669revision number less than 2 use 32-bit integers only. 18670 18671Fixed a problem where the evaluation of OpRegion operands did not 18672always resolve them to numbers properly. 18673 18674------------------------------------------ 18675Summary of changes for this label: 10_20_00 18676 18677Fix for CBN_._STA issue. This fix will allow correct access to 18678CBN_ OpRegions when the _STA returns 0x8. 18679 18680Support to convert ACPI constants (Ones, Zeros, One) to actual 18681values before a package object is returned 18682 18683Fix for method call as predicate to if/while construct causing 18684incorrect if/while behavior 18685 18686Fix for Else block package lengths sometimes calculated wrong (if 18687block > 63 bytes) 18688 18689Fix for Processor object length field, was always zero 18690 18691Table load abort if FACP sanity check fails 18692 18693Fix for problem with Scope(name) if name already exists 18694 18695Warning emitted if a named object referenced cannot be found 18696(resolved) during method execution. 18697 18698 18699 18700 18701 18702------------------------------------------ 18703Summary of changes for this label: 9_29_00 18704 18705New table initialization interfaces: AcpiInitializeSubsystem no 18706longer has any parameters AcpiFindRootPointer - Find the RSDP (if 18707necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 18708>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 18709AcpiLoadTables 18710 18711Note: These interface changes require changes to all existing OSDs 18712 18713The PCI_Config default address space handler is always installed 18714at the root namespace object. 18715 18716------------------------------------------- 18717Summary of changes for this label: 09_15_00 18718 18719The new initialization architecture is implemented. New 18720interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 18721AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 18722 18723(Namespace is automatically loaded when a table is loaded) 18724 18725The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1872652 bytes to 32 bytes. There is usually one of these for every 18727namespace object, so the memory savings is significant. 18728 18729Implemented just-in-time evaluation of the CreateField operators. 18730 18731Bug fixes for IA-64 support have been integrated. 18732 18733Additional code review comments have been implemented 18734 18735The so-called "third pass parse" has been replaced by a final walk 18736through the namespace to initialize all operation regions (address 18737spaces) and fields that have not yet been initialized during the 18738execution of the various _INI and REG methods. 18739 18740New file - namespace/nsinit.c 18741 18742------------------------------------------- 18743Summary of changes for this label: 09_01_00 18744 18745Namespace manager data structures have been reworked to change the 18746primary object from a table to a single object. This has 18747resulted in dynamic memory savings of 3X within the namespace and 187482X overall in the ACPI CA subsystem. 18749 18750Fixed problem where the call to AcpiEvFindPciRootBuses was 18751inadvertently left commented out. 18752 18753Reduced the warning count when generating the source with the GCC 18754compiler. 18755 18756Revision numbers added to each module header showing the 18757SourceSafe version of the file. Please refer to this version 18758number when giving us feedback or comments on individual modules. 18759 18760The main object types within the subsystem have been renamed to 18761clarify their purpose: 18762 18763ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 18764ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 18765ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 18766 18767NOTE: no changes to the initialization sequence are included in 18768this label. 18769 18770------------------------------------------- 18771Summary of changes for this label: 08_23_00 18772 18773Fixed problem where TerminateControlMethod was being called 18774multiple times per method 18775 18776Fixed debugger problem where single stepping caused a semaphore to 18777be oversignalled 18778 18779Improved performance through additional parse object caching - 18780added ACPI_EXTENDED_OP type 18781 18782------------------------------------------- 18783Summary of changes for this label: 08_10_00 18784 18785Parser/Interpreter integration: Eliminated the creation of 18786complete parse trees for ACPI tables and control methods. 18787Instead, parse subtrees are created and then deleted as soon as 18788they are processed (Either entered into the namespace or executed 18789by the interpreter). This reduces the use of dynamic kernel 18790memory significantly. (about 10X) 18791 18792Exception codes broken into classes and renumbered. Be sure to 18793recompile all code that includes acexcep.h. Hopefully we won't 18794have to renumber the codes again now that they are split into 18795classes (environment, programmer, AML code, ACPI table, and 18796internal). 18797 18798Fixed some additional alignment issues in the Resource Manager 18799subcomponent 18800 18801Implemented semaphore tracking in the AcpiExec utility, and fixed 18802several places where mutexes/semaphores were being unlocked 18803without a corresponding lock operation. There are no known 18804semaphore or mutex "leaks" at this time. 18805 18806Fixed the case where an ASL Return operator is used to return an 18807unnamed package. 18808 18809------------------------------------------- 18810Summary of changes for this label: 07_28_00 18811 18812Fixed a problem with the way addresses were calculated in 18813AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 18814manifested itself when a Field was created with WordAccess or 18815DwordAccess, but the field unit defined within the Field was less 18816 18817than a Word or Dword. 18818 18819Fixed a problem in AmlDumpOperands() module's loop to pull 18820operands off of the operand stack to display information. The 18821problem manifested itself as a TLB error on 64-bit systems when 18822accessing an operand stack with two or more operands. 18823 18824Fixed a problem with the PCI configuration space handlers where 18825context was getting confused between accesses. This required a 18826change to the generic address space handler and address space 18827setup definitions. Handlers now get both a global handler context 18828(this is the one passed in by the user when executing 18829AcpiInstallAddressSpaceHandler() and a specific region context 18830that is unique to each region (For example, the _ADR, _SEG and 18831_BBN values associated with a specific region). The generic 18832function definitions have changed to the following: 18833 18834typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 18835UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 18836*HandlerContext, // This used to be void *Context void 18837*RegionContext); // This is an additional parameter 18838 18839typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 18840RegionHandle, UINT32 Function, void *HandlerContext, void 18841**RegionContext); // This used to be **ReturnContext 18842 18843------------------------------------------- 18844Summary of changes for this label: 07_21_00 18845 18846Major file consolidation and rename. All files within the 18847interpreter have been renamed as well as most header files. This 18848was done to prevent collisions with existing files in the host 18849OSs -- filenames such as "config.h" and "global.h" seem to be 18850quite common. The VC project files have been updated. All 18851makefiles will require modification. 18852 18853The parser/interpreter integration continues in Phase 5 with the 18854implementation of a complete 2-pass parse (the AML is parsed 18855twice) for each table; This avoids the construction of a huge 18856parse tree and therefore reduces the amount of dynamic memory 18857required by the subsystem. Greater use of the parse object cache 18858means that performance is unaffected. 18859 18860Many comments from the two code reviews have been rolled in. 18861 18862The 64-bit alignment support is complete. 18863 18864------------------------------------------- 18865Summary of changes for this label: 06_30_00 18866 18867With a nod and a tip of the hat to the technology of yesteryear, 18868we've added support in the source code for 80 column output 18869devices. The code is now mostly constrained to 80 columns or 18870less to support environments and editors that 1) cannot display 18871or print more than 80 characters on a single line, and 2) cannot 18872disable line wrapping. 18873 18874A major restructuring of the namespace data structure has been 18875completed. The result is 1) cleaner and more 18876understandable/maintainable code, and 2) a significant reduction 18877in the dynamic memory requirement for each named ACPI object 18878(almost half). 18879 18880------------------------------------------- 18881Summary of changes for this label: 06_23_00 18882 18883Linux support has been added. In order to obtain approval to get 18884the ACPI CA subsystem into the Linux kernel, we've had to make 18885quite a few changes to the base subsystem that will affect all 18886users (all the changes are generic and OS- independent). The 18887effects of these global changes have been somewhat far reaching. 18888Files have been merged and/or renamed and interfaces have been 18889renamed. The major changes are described below. 18890 18891Osd* interfaces renamed to AcpiOs* to eliminate namespace 18892pollution/confusion within our target kernels. All OSD 18893interfaces must be modified to match the new naming convention. 18894 18895Files merged across the subsystem. A number of the smaller source 18896and header files have been merged to reduce the file count and 18897increase the density of the existing files. There are too many 18898to list here. In general, makefiles that call out individual 18899files will require rebuilding. 18900 18901Interpreter files renamed. All interpreter files now have the 18902prefix am* instead of ie* and is*. 18903 18904Header files renamed: The acapi.h file is now acpixf.h. The 18905acpiosd.h file is now acpiosxf.h. We are removing references to 18906the acronym "API" since it is somewhat windowsy. The new name is 18907"external interface" or xface or xf in the filenames.j 18908 18909 18910All manifest constants have been forced to upper case (some were 18911mixed case.) Also, the string "ACPI_" has been prepended to many 18912(not all) of the constants, typedefs, and structs. 18913 18914The globals "DebugLevel" and "DebugLayer" have been renamed 18915"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 18916 18917All other globals within the subsystem are now prefixed with 18918"AcpiGbl_" Internal procedures within the subsystem are now 18919prefixed with "Acpi" (with only a few exceptions). The original 18920two-letter abbreviation for the subcomponent remains after "Acpi" 18921- for example, CmCallocate became AcpiCmCallocate. 18922 18923Added a source code translation/conversion utility. Used to 18924generate the Linux source code, it can be modified to generate 18925other types of source as well. Can also be used to cleanup 18926existing source by removing extraneous spaces and blank lines. 18927Found in tools/acpisrc/* 18928 18929OsdUnMapMemory was renamed to OsdUnmapMemory and then 18930AcpiOsUnmapMemory. (UnMap became Unmap). 18931 18932A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 18933When set to one, this indicates that the caller wants to use the 18934 18935semaphore as a mutex, not a counting semaphore. ACPI CA uses 18936both types. However, implementers of this call may want to use 18937different OS primitives depending on the type of semaphore 18938requested. For example, some operating systems provide separate 18939 18940"mutex" and "semaphore" interfaces - where the mutex interface is 18941much faster because it doesn't have all the overhead of a full 18942semaphore implementation. 18943 18944Fixed a deadlock problem where a method that accesses the PCI 18945address space can block forever if it is the first access to the 18946space. 18947 18948------------------------------------------- 18949Summary of changes for this label: 06_02_00 18950 18951Support for environments that cannot handle unaligned data 18952accesses (e.g. firmware and OS environments devoid of alignment 18953handler technology namely SAL/EFI and the IA-64 Linux kernel) has 18954been added (via configurable macros) in these three areas: - 18955Transfer of data from the raw AML byte stream is done via byte 18956moves instead of word/dword/qword moves. - External objects are 18957aligned within the user buffer, including package elements (sub- 18958objects). - Conversion of name strings to UINT32 Acpi Names is now 18959done byte-wise. 18960 18961The Store operator was modified to mimic Microsoft's 18962implementation when storing to a Buffer Field. 18963 18964Added a check of the BM_STS bit before entering C3. 18965 18966The methods subdirectory has been obsoleted and removed. A new 18967file, cmeval.c subsumes the functionality. 18968 18969A 16-bit (DOS) version of AcpiExec has been developed. The 18970makefile is under the acpiexec directory. 18971