1---------------------------------------- 2 3 417 July 2020. Summary of changes for version 20200717: 5 6This release is available at https://acpica.org/downloads 7 8 91) ACPICA kernel-resident subsystem: 10 11Do not increment OperationRegion reference counts for field units. Recent 12server firmware has revealed that this reference count can overflow on 13large servers that declare many field units (thousands) under the same 14OperationRegion. This occurs because each field unit declaration will add 15a reference count to the source OperationRegion. This release solves the 16reference count overflow for OperationRegion objects by preventing 17fieldUnits from incrementing their parent OperationRegion's reference 18count. 19 20Replaced one-element arrays with flexible-arrays, which were introduced 21in C99. 22 23Restored the readme file containing the directions for generation of 24ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 25located at: generate/msvc2017/readme.txt 26 272) iASL Compiler/Disassembler and ACPICA tools: 28 29iASL: Fixed a regression found in version 20200214. Prevent iASL from 30emitting an extra byte of garbage data when control methods declared a 31single parameter type without using braces. This extra byte is known to 32cause a blue screen on the Windows AML interpreter. 33 34iASL: Made a change to allow external declarations to specify the type of 35a named object even when some name segments are not defined. 36This change allows the following ASL code to compile (When DEV0 is not 37defined or not defined yet): 38 39 External (\_SB.DEV0.OBJ1, IntObj) 40 External (\_SB.DEV0, DeviceObj) 41 42iASL: Fixed a problem where method names in "Alias ()" statement could be 43misinterpreted. They are now interpreted correctly as method invocations. 44 45iASL: capture a method parameter count (Within the Method info segment, 46as well as the argument node) when using parameter type lists. 47 48---------------------------------------- 49 50 5128 May 2020. Summary of changes for version 20200528: 52 53 541) ACPICA kernel-resident subsystem: 55 56Removed old/obsolete Visual Studio files which were used to build the 57Windows versions of the ACPICA tools. Since we have moved to Visual 58Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 59project files. The new subdirectory and solution file are located at: 60 61 acpica/generate/msvc2017/AcpiComponents.sln 62 63 642) iASL Compiler/Disassembler and ACPICA tools: 65 66iASL: added support for a new OperationRegion Address Space (subtype): 67PlatformRtMechanism. Support for this new keyword is being released for 68early prototyping. It will appear in the next release of the ACPI 69specification. 70 71iASL: do not optimize the NameString parameter of the CondRefOf operator. 72In the previous iASL compiler release, the NameString parameter of the 73CondRefOf was optimized. There is evidence that some implementations of 74the AML interpreter do not perform the recursive search-to-parent search 75during the execution of the CondRefOf operator. Therefore, the CondRefOf 76operator behaves differently when the NameString parameter is a single 77name segment (a NameSeg) as opposed to a full NamePath (starting at the 78root scope) or a NameString containing parent prefixes. 79 80iASL: Prevent an inadvertent remark message. This change prevents a 81remark if within a control method the following exist: 821) An Operation Region is defined, and 832) A Field operator is defined that refers to the region. 84This happens because at the top level, the Field operator does not 85actually create a new named object, it simply references the operation 86region. 87 88Removed support for the acpinames utility. The acpinames was a simple 89utility used to populate and display the ACPI namespace without executing 90any AML code. However, ACPICA now supports executable opcodes outside of 91control methods. This means that executable AML opcodes such as If and 92Store opcodes need to be executed during table load. Therefore, acpinames 93would need to be updated to match the same behavior as the acpiexec 94utility and since acpiexec can already dump the entire namespace (via the 95'namespace' command), we no longer have the need to maintain acpinames. 96 97 In order to dump the contents of the ACPI namepsace using acpiexec, 98execute the following command from the command line: 99 100 acpiexec -b "n" [aml files] 101 102---------------------------------------- 103 104 10530 April 2020. Summary of changes for version 20200430: 106 1071) ACPICA kernel-resident subsystem: 108 109Cleaned up the coding style of a couple of global variables 110(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 111AcpiProtocolLengths was made static, and the definition of 112AcpiGbl_NextCmdNum was moved to acglobal.h. 113 114 1152) iASL Compiler/Disassembler and ACPICA tools: 116 117iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 118associated with a field. 119 120Disassembler: has been made more resilient so that it will continue to 121parse AML even if the AML generates ACPI namespace errors. This enables 122iASL to disassemble some AML that may have been compiled using older 123versions of iASL that no longer compile with newer versions of iASL. 124 125iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 126was a mixup where _NIG required one parameter and _NIH required zero 127parameters. This change swaps these parameter requirements. Now it is 128required that _NIH must be called with one parameter and _NIG requires 129zero parameters. 130 131iASL: Allow use of undefined externals as long as they are protected by 132an if (CondRefOf (...)) block when compiling multiple definition blocks. 133 134iASL: Fixed the type override behavior of named objects that are declared 135as External. External declarations will no longer override the type of 136the actual definition if it already exists. 137 138AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 139command line wildcard support on Windows. Note: the AcpiNames utility is 140essentially redundant with the AcpiExec utility (using the "namespace" 141command) and is therefore deprecated. It will be removed in future 142releases of ACPICA. 143 144Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 145operators. The disassembler is intended to emit existing ASL code as-is. 146Therefore, error messages emitted during disassembly should be ignored or 147handled in a way such that the disassembler can continue to parse the 148AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 149parsing for create operators in order to complete parsing ASL termlists. 150 151iASL DataTable Compiler: IVRS table: fix potentially uninitialized 152variable warning. Some compilers catch potential uninitialized variables. 153This is done by examining branches of if/else statements. This change 154replaces an "else if" with an "else" to fix the uninitialized variable 155warning. 156 157 158---------------------------------------- 15926 March 2020. Summary of changes for version 20200326: 160 161 1621) ACPICA kernel-resident subsystem: 163 164Performed a code clean-up to prevent build errors on early versions of 165GCC-10. 166 167Added the NHLT table signature. iASL data table compiler/disassembler 168support for this table is coming soon. 169 170 1712) iASL Compiler/Disassembler and ACPICA tools: 172 173AcpiExec: Fixed several problems with the namespace initialization file 174(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 175errors, several seg faults, and enhancements to line parsing within the 176init file. In addition, each object found in the init file and it's new 177value is displayed, as well as any such entries that do not have a 178corresponding name in the namespace. For reference, the syntax for the 179various supported data types are presented below: 180 PCHG 0x777788889999BBBB // Integer 181 \DEV1.STR1 "XYZ" // String 182 BUF1 (88 99 AA) // Buffer 183 PKG1 [0x1111 0x2222] // Package 184 \BF1 0x7980 // BufferField 185 RCRV 0x0123456789ABCDEF // Field Unit 186 187iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 188can be used anywhere in a given ASL file to configure iASL to expect an 189iASL compiler error code on the line where this macro was placed. If the 190error code does not exist, an error is generated. This is intended to be 191used for ACPICA's ASL test suite, but can be used by ASL developers as 192well. 193 194iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 195IVRS table parsing supported only IVHD type 10h structures. Parsing an 196IVHD type 11h caused the iasl to report unknown subtable type. Add 197necessary structure definition for IVHD type 11h and apply correct 198parsing method based on subtable type. Micha? ?ygowski. 199 200iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 201According to AMD IOMMU Specification Revision 3.05 the reserved field 202should be IOMMU Feature Reporting. Change the name of the field to the 203correct one. Micha? ?ygowski. 204 205acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 206based on suggestions by David Seifert and Benjamin Berg. 207 208iASL: table compiler: removed an unused variable (DtCompilerParserResult) 209causing linking errors. Patch based on suggestions by David Seifert and 210Benjamin Berg. 211 212iASL: table compiler: make LexBuffer static to avoid linking errors in 213newer compilers. Patch based on suggestions by David Seifert and Benjamin 214Berg. 215 216iASL: fixed type matching between External and Named objects. External 217object types can only be expressed with ACPI object type values that are 218defined in the ACPI spec. However, iASL uses ACPI object type values that 219are local to ACPICA in addition to the values defined in the ACPI spec. 220This change implements type matching to map some object type values 221specific to ACPICA to ones that are defined in the ACPI spec. 222 223iASL: Dropped the type mismatch compiler error that can arise from 224External declarations to a warning. This warning can occur when there is 225a type difference between the external declaration and the actual object 226declaration (when compiling multiple files/modules simultaneously). 227 228iASL: removed an incorrect error message regarding externals. This change 229removes an incorrect error that is emitted when a duplicate external 230declaration does not contain a type that opens a scope. This is incorrect 231because the duplicate external with conflicting types are already caught 232by iASL and it doesn't make any sense to enforce what this conflicting 233type should be. 234 235AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 236surrounded by parens. Otherwise, a logical statement that applies a 237logical not operator to this macro could result in a computation that 238applies the operator to the left side of the logical and but not the 239right. Reported-by: John Levon <john.levon@joyent.com> 240 241Fixed a problem with the local version of sprint(): On 32-bit, the 242provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 243String + Size will wrap, meaning End < Start, and 244AcpiUtBoundStringOutput() will never output anything as a result. The 245symptom seen of this was acpixtract failing to output anything -- with a 246custom build that included utprint.c. Signed-off-by: John Levon 247<john.levon@joyent.com> 248 249iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 250ACPI specification. 251 252 253---------------------------------------- 25414 February 2020. Summary of changes for version 20200214: 255 256 2571) ACPICA kernel-resident subsystem: 258 259Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 260in a guest when it receives a sleep trigger from the hypervisor. When the 261guest resumes from this power state, it does not see the SleepEnabled 262bit. In other words, the sleepHibernation (S4) is triggered in a guest 263when it receives a sleep trigger from the hypervisor. When the guest 264resumes from this power state, it does not see the SleepEnabled bit. In 265other words, the sleep button is not enabled on waking from an S4 state. 266This causes subsequent invocation of sleep state to fail since the 267guest.button is not enabled on waking from an S4 state. This causes 268subsequent invocation of sleep state to fail in the guest. Fix this 269problem by enabling the sleep button in ACPI legacy wake. From Anchal 270Agarwal <anchalag@amazon.com>. 271 272Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 273for checking the status bits of all enabled GPEs in one go. It is needed 274to distinguish spurious SCIs from genuine ones when deciding whether or 275not to wake up the system from suspend-to-idle. 276 277Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 278using HOST in their environment to represent the host name for their 279machines. Avoid this problem by renaming this variable from HOST to 280ACPI_HOST. 281 282MSVC 2017 project files: Enable multiprocessor generation to improve 283build performance. 284 285Added a macro to get the byte width of a Generic Address structure. New 286ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 287ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 288 289 2902) iASL Compiler/Disassembler and ACPICA tools: 291 292iASL: Implemented full support for the (optional, rarely used) ReturnType 293and ParameterTypesList for the Method, Function, and External operators. 294For Method declarations, the number of individual ParameterTypes must 295match the declaration of the number of arguments (NumArgs). This also 296Fixes a problem with the External operator where extra/extraneous bytes 297were emitted in the AML code if the optional ReturnType/ParameterTypes 298were specified for a MethodObj declaration. 299New error message: 3001) Method NumArgs count does not match length of ParameterTypes list 301 302iASL: Implemented detection of type mismatches between External 303declarations and named object declarations. Also, detect type mismatches 304between multiple External declarations of the same Name. 305New error messages: 3061) Type mismatch between external declaration and actual object 307declaration detected 3082) Type mismatch between multiple external declarations detected 309 310iASL: Implemented new error messages for External operators that specify 311a ReturnType and/or ParameterTypesList for any object type other than 312control methods (MethodObj). 313New error messages: 3141) Return type is only allowed for Externals declared as MethodObj 3152) Parameter type is only allowed for Externals declared as MethodObj 316 317iASL: Implemented two new remark/warning messages for ASL code that 318creates named objects from within a control method. This is very 319inefficient since the named object must be created and deleted each time 320the method is executed. 321New messages: 3221) Creation of named objects within a method is highly inefficient, use 323globals or method local variables instead (remark) 3242) Static OperationRegion should be declared outside control method 325(warning) 326 327iASL: Improved illegal forward reference detection by adding support to 328detect forward-reference method invocations. 329 330iASL: Detect and issue an error message for NameStrings that contain too 331many individual NameSegs (>255). This is an AML limitation that is 332defined in the ACPI specification. 333New message: 3341) NameString contains too many NameSegs (>255) 335 336acpidump: windows: use GetSystemFirmwareTable API for all tables except 337SSDT. By using this API, acpidump is able to get all tables in the XSDT 338 339iASL: Removed unused parser file and updated msvc2017 project files. 340Removed the obsolete AslCompiler.y from the repository. 341 342iASL: msvc2017: Fixed macros in the file dependency list to prevent 343unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 344 345Disassembler: Prevent spilling error messages to the output file. All 346errors are directed to the console instead. These error messages 347prevented re-compilation of the resulting disassembled ASL output file 348(.DSL). 349 350 351---------------------------------------- 35210 January 2020. Summary of changes for version 20200110: 353 354 3551) ACPICA kernel-resident subsystem: 356 357Updated all copyrights to 2020. This affects all ACPICA source code 358modules. 359 360 3612) iASL Compiler/Disassembler and ACPICA tools: 362 363ASL test suite (ASLTS): Updated all copyrights to 2020. 364 365Tools and utilities: Updated all signon copyrights to 2020. 366 367iASL: fix forward reference analysis for field declarations. Fixes 368forward reference analysis for field declarations by searching the 369parent scope for the named object when the object is not present in 370the current scope. 371 372iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 373full pathname of the name that already exists is printed. 374 375iASL: Enhance duplicate Case() detection for buffers. Add check for 376buffers with no initializer list (these buffers will be filled with 377zeros at runtime.) 378 379 380---------------------------------------- 38113 December 2019. Summary of changes for version 20191213: 382 383 3841) ACPICA kernel-resident subsystem: 385 386Return a Buffer object for all fields created via the CreateField 387operator. Previously, an Integer would be returned if the size of 388the field was less than or equal to the current size of an Integer. 389Although this goes against the ACPI specification, it provides 390compatibility with other ACPI implementations. Also updated the 391ASLTS test suite to reflect this new behavior. 392 3932) iASL Compiler/Disassembler and ACPICA tools: 394 395iASL: Implemented detection of (and throw an error for) duplicate 396values for Case statements within a single Switch statement. Duplicate 397Integers, Strings, and Buffers are supported. 398 399iASL: Fix error logging issue during multiple file compilation -- 400Switch to the correct input file during error node creation. 401 402iASL: For duplicate named object creation, now emit an error instead 403of a warning - since this will cause a runtime error. 404 405AcpiSrc: Add unix line-ending support for non-Windows builds. 406 407iASL: Add an error condition for an attempt to create a NameString 408with > 255 NameSegs (the max allowable via the AML definition). 409 410 411---------------------------------------- 41218 October 2019. Summary of changes for version 20191018: 413 414 4151) ACPICA kernel-resident subsystem: 416 417Debugger: added a new command: ?Fields [address space ID]?. This command 418dumps the contents of all field units that are defined within the 419namespace with a particular address space ID. 420 421Modified the external interface AcpiLoadTable() to return a table index. 422This table index can be used for unloading a table for debugging. 423 ACPI_STATUS 424 AcpiLoadTable ( 425 ACPI_TABLE_HEADER *Table, 426 UINT32 *TableIndex)) 427 428Implemented a new external interface: AcpiUnloadTable() This new function 429takes a table index as an argument and unloads the table. Useful for 430debugging only. 431 ACPI_STATUS 432 AcpiUnloadTable ( 433 UINT32 TableIndex)) 434 435Ported the AcpiNames utility to use the new table initialization 436sequence. The utility was broken before this change. Also, it was 437required to include most of the AML interpreter into the utility in order 438to process table initialization (module-level code execution.) 439 440Update for results from running Clang V8.0.1. This fixes all "dead 441assignment" warnings. There are still several "Dereference of NULL 442pointer" warnings, but these have been found to be false positive 443warnings. 444 445 4462) iASL Compiler/Disassembler and ACPICA tools: 447 448iASL: numerous table compiler changes to ensure that the usage of 449yacc/bison syntax is POSIX-compliant. 450 451iASL/disassembler: several simple bug fixes in the data table 452disassembler. 453 454Acpiexec: expanded the initialization file (the -fi option) to initialize 455strings, buffers, packages, and field units. 456 457 458---------------------------------------- 45916 August 2019. Summary of changes for version 20190816: 460 461This release is available at https://acpica.org/downloads 462 463 4641) ACPICA kernel-resident subsystem: 465 466Modified the OwnerId mechanism to allow for more Owner Ids. The previous 467limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 468exceptions on machines with a large number of initialization threads, 469many CPU cores and nested initialization control methods. 470 471Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 472checking if the given GPE (as represented by a GPE device handle and a 473GPE number) is currently active and dispatching it (if that's the case) 474outside of interrupt context. 475 476Table load: exit the interpreter before initializing objects within the 477new table This prevents re-acquiring the interpreter lock when loading 478tables 479 480Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 481uk Kim 482 483Macros: removed pointer math on a null pointer. Causes warnings on some 484compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 485instead of using arithmetic. 486 487Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 488across all "printf-like" internal functions. Also, cleanup all calls to 489such functions (both in 32-bit mode and 64-bit mode) now that they are 490analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 491 492 4932) iASL Compiler/Disassembler and ACPICA tools: 494 495iASL: implemented a new data table compiler flex/bison front-end. This 496change is internal and is not intended to result in changes to the 497compiled code. This new compiler front-end can be invoked using the -tp 498option for now, until the old mechanism is removed. 499 500ASLTS: Implemented a new data table compiler test suite. This test suite 501generates all table templates and compile/disassemble/re-compile/binary- 502compare each file. 503 504iASL: return -1 if AML files were not generated due to compiler errors 505 506iASL: added a warning on use of the now-legacy ASL Processor () keyword. 507 508iASL: added an error on _UID object declaration that returns a String 509within a Processor () declaration. A _UID for a processor must be an 510Integer. 511 512iASL: added a null terminator to name strings that consist only of 513multiple parent prefixes (^) 514 515iASL: added support to compile both ASL and data table files in a single 516command. 517 518Updated the tool generation project files that were recently migrated to 519MSVC 2017 to eliminate all new warnings. The new project files appear in 520the directory \acpica\generate\msvc2017. This change effectively 521deprecates the older project files in \acpica\generate\msvc9. 522 523 524---------------------------------------- 52503 July 2019. Summary of changes for version 20190703: 526 527 5281) ACPICA kernel-resident subsystem: 529 530Remove legacy module-level support code. There were still some remnants 531of the legacy module-level code executions. Since we no longer support 532this option, this is essentially dead code and has been removed from the 533ACPICA source. 534 535iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 536scope. If these named objects are declared outside the root scope, they 537will not be invoked by any host Operating System. 538 539Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 540one) can be enabled in two situations. First, the GPEs with existing _Lxx 541and _Exx methods are enabled implicitly by ACPICA during system 542initialization. Second, the GPEs without these methods (like GPEs listed 543by _PRW objects for wakeup devices) need to be enabled directly by the 544code that is going to use them (e.g. ACPI power management or device 545drivers). 546 547In the former case, if the status of a given GPE is set to start with, 548its handler method (either _Lxx or _Exx) needs to be invoked to take care 549of the events (possibly) signaled before the GPE was enabled. In the 550latter case, however, the first caller of AcpiEnableGpe() for a given GPE 551should not be expected to care about any events that might be signaled 552through it earlier. In that case, it is better to clear the status of 553the GPE before enabling it, to prevent stale events from triggering 554unwanted actions (like spurious system resume, for example). 555 556For this reason, modify AcpiEvAddGpeReference() to take an additional 557boolean argument indicating whether or not the GPE status needs to be 558cleared when its reference counter changes from zero to one and make 559AcpiEnableGpe() pass TRUE to it through that new argument. 560 561 5622) iASL Compiler/Disassembler and ACPICA tools: 563 564The tool generation process has been migrated to MSVC 2017, and all 565project files have been upgraded. The new project files appear in the 566directory \acpica\generate\msvc2017. This change effectively deprecates 567the older project files in \acpica\generate\msvc9. 568 569iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 570scope. If these named objects are declared outside the root scope, they 571will not be invoked by any host Operating System 572 573---------------------------------------- 57409 May 2019. Summary of changes for version 20190509: 575 576 5771) ACPICA kernel-resident subsystem: 578 579Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 580them") that causes problems with Thunderbolt controllers to occur if a 581dock device is connected at init time (the xhci_hcd and thunderbolt 582modules crash which prevents peripherals connected through them from 583working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 584Dispatch active GPEs at init time") to get undone, so the problem 585addressed by commit ecc1165b8b74 appears again as a result of it. 586 587 5882) iASL Compiler/Disassembler and ACPICA tools: 589 590Reverted iASL: Additional forward reference detection. This change 591reverts forward reference detection for field declarations. The feature 592unintentionally emitted AML bytecode with incorrect package lengths for 593some ASL code related to Fields and OperationRegions. This malformed AML 594can cause systems to crash 595during boot. The malformed AML bytecode is emitted in iASL version 59620190329 and 20190405. 597 598iASL: improve forward reference detection. This change improves forward 599reference detection for named objects inside of scopes. If a parse object 600has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 601a named object that is declared later in the AML bytecode. This is 602allowed if the reference is inside of a method and the declaration is 603outside of a method like so: 604 605DefinitionBlock(...) 606{ 607 Method (TEST) 608 { 609 Return (NUM0) 610 } 611 Name (NUM0,0) 612} 613 614However, if the declaration and reference are both in the same method or 615outside any methods, this is a forward reference and should be marked as 616an error because it would result in runtime errors. 617 618DefinitionBlock(...) 619{ 620 Name (BUFF, Buffer (NUM0) {}) // Forward reference 621 Name (NUM0, 0x0) 622 623 Method (TEST) 624 { 625 Local0 = NUM1 626 Name (NUM1, 0x1) // Forward reference 627 return (Local0) 628 } 629} 630 631iASL: Implemented additional buffer overflow analysis for BufferField 632declarations. Check if a buffer index argument to a create buffer field 633operation is beyond the end of the target buffer. 634 635This affects these AML operators: 636 637 AML_CREATE_FIELD_OP 638 AML_CREATE_BIT_FIELD_OP 639 AML_CREATE_BYTE_FIELD_OP 640 AML_CREATE_WORD_FIELD_OP 641 AML_CREATE_DWORD_FIELD_OP 642 AML_CREATE_QWORD_FIELD_OP 643 644 There are three conditions that must be satisfied in order to allow this 645validation at compile time: 646 647 1) The length of the target buffer must be an integer constant 648 2) The index specified in the create* must be an integer constant 649 3) For CreateField, the bit length argument must be non-zero. 650 651Example: 652 Name (BUF1, Buffer() {1,2}) 653 CreateField (BUF1, 7, 9, CF03) // 3: ERR 654 655dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 656Error 6165 - ^ Buffer index beyond end of 657target buffer 658 659 660---------------------------------------- 66105 April 2019. Summary of changes for version 20190405: 662 663 6641) ACPICA kernel-resident subsystem: 665 666Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 667unconditionally clearing ACPI IRQs during suspend/resume") was added 668earlier to stop clearing of event status bits unconditionally on suspend 669and resume paths. Though this change fixed an issue on suspend path, it 670introduced regressions on several resume paths. In the case of S0ix, 671events are enabled as part of device suspend path. If status bits for the 672events are set when they are enabled, it could result in premature wake 673from S0ix. If status is cleared for any event that is being enabled so 674that any stale events are cleared out. In case of S0ix, events are 675enabled as part of device suspend path. If status bits for the events are 676set when they are enabled, it could result in premature wake from S0ix. 677 678This change ensures that status is cleared for any event that is being 679enabled so that any stale events are cleared out. 680 681 6822) iASL Compiler/Disassembler and ACPICA tools: 683 684iASL: Implemented an enhanced multiple file compilation that combines 685named objects from all input files to a single namespace. With this 686feature, any unresolved external declarations as well as duplicate named 687object declarations can be detected during compilation rather than 688generating errors much later at runtime. The following commands are 689examples that utilize this feature: 690 iasl dsdt.asl ssdt.asl 691 iasl dsdt.asl ssdt1.asl ssdt2.asl 692 iasl dsdt.asl ssdt*.asl 693 694---------------------------------------- 69529 March 2019. Summary of changes for version 20190329: 696 697 6981) ACPICA kernel-resident subsystem: 699 700Namespace support: Remove the address nodes from global list after method 701termination. The global address list contains pointers to namespace nodes 702that represent Operation Regions. This change properly removes Operation 703Region namespace nodes that are declared dynamically during method 704execution. 705 706Linux: Use a different debug default than ACPICA. There was a divergence 707between Linux and the ACPICA codebases. In order to resolve this 708divergence, Linux now declares its own debug default in aclinux.h 709 710Renamed some internal macros to improve code understanding and 711maintenance. The macros below all operate on single 4-character ACPI 712NameSegs, not generic strings (old -> new): 713 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 714 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 715 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 716 717Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 718table. 719 720Test suite: Update makefiles, add PCC operation region support 721 722 7232) iASL Compiler/Disassembler and Tools: 724 725iASL: Implemented additional illegal forward reference detection. Now 726detect and emit an error upon detection of a forward reference from a 727Field to an Operation Region. This will fail at runtime if allowed to 728pass the compiler. 729 730AcpiExec: Add an address list check for dynamic Operation Regions. This 731feature performs a sanity test for each node the global address list. 732This is done in order to ensure that all dynamic operation regions are 733properly removed from the global address list and no dangling pointers 734are left behind. 735 736Disassembler: Improved generation of resource pathnames. This change 737improves the code that generates resource descriptor and resource tag 738pathnames. The original code used a bunch of str* C library functions 739that caused warnings on some compilers. 740 741iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 742function can overwrite buffers if the calling code is not very careful. 743In the case of generating a module/table header, use of memmove is a 744better implementation. 745 746 7473) Status of new features that have not been completed at this time: 748 749iASL: Implementing an enhanced multiple file compilation into a single 750namespace feature (Status): This feature will be released soon, and 751allows multiple ASL files to be compiled into the same single namespace. 752By doing so, any unresolved external declarations as well as duplicate 753named object declarations can be detected during compilation (rather than 754later during runtime). The following commands are examples that utilize 755this feature: 756 iasl dsdt.asl ssdt.asl 757 iasl dsdt.asl ssdt1.asl ssdt2.asl 758 iasl dsdt.asl ssdt*.asl 759 760ASL tutorial status: Feedback is being gathered internally and the 761current plan is to publish this tutorial on the ACPICA website after a 762final review by a tech writer. 763 764---------------------------------------- 76515 February 2019. Summary of changes for version 20190215: 766 767 7680) Support for ACPI specification version 6.3: 769 770Add PCC operation region support for the AML interpreter. This adds PCC 771operation region support in the AML interpreter and a default handler for 772acpiexec. The change also renames the PCC region address space keyword to 773PlatformCommChannel. 774 775Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 776These methods provide OSPM with health information and device boot 777status. 778 779PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 780defines if the trigger needs to be invoked by OSPM before or at the end 781of kernel crash dump processing/handling operation. 782 783SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 784is used for describing devices such as heterogeneous processors, 785accelerators, GPUs, and IO devices with integrated compute or DMA 786engines. 787 788MADT: Add support for statistical profiling in GICC. Statistical 789profiling extension (SPE) is an architecture-specific feature for ARM. 790 791MADT: Add online capable flag. If this bit is set, system hardware 792supports enabling this processor during OS runtime. 793 794New Error Disconnect Recover Notification value. There are a number of 795scenarios where system Firmware in collaboration with hardware may 796disconnect one or more devices from the rest of the system for purposes 797of error containment. Firmware can use this new notification value to 798alert OSPM of such a removal. 799 800PPTT: New additional fields in Processor Structure Flags. These flags 801provide more information about processor topology. 802 803NFIT/Disassembler: Change a field name from "Address Range" to "Region 804Type". 805 806HMAT updates: make several existing fields to be reserved as well as 807rename subtable 0 to "memory proximity domain attributes". 808 809GTDT: Add support for new GTDT Revision 3. This revision adds information 810for the EL2 timer. 811 812iASL: Update the HMAT example template for new fields. 813 814iASL: Add support for the new revision of the GTDT (Rev 3). 815 816 8171) ACPICA kernel-resident subsystem: 818 819AML Parser: fix the main AML parse loop to correctly skip erroneous 820extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 821byte extended opcodes. If an error occurs during an AML table load, the 822AML parser will continue loading the table by skipping the offending 823opcode. This implements a "load table at any cost" philosophy. 824 825 8262) iASL Compiler/Disassembler and Tools: 827 828iASL: Add checks for illegal object references, such as a reference 829outside of method to an object within a method. Such an object is only 830temporary. 831 832iASL: Emit error for creation of a zero-length operation region. Such a 833region is rather pointless. If encountered, a runtime error is also 834implemented in the interpreter. 835 836Debugger: Fix a possible fault with the "test objects" command. 837 838iASL: Makefile: support parent directory filenames containing embedded 839spaces. 840 841iASL: Update the TPM2 template to revision 4. 842 843iASL: Add the ability to report specific warnings or remarks as errors. 844 845Disassembler: Disassemble OEMx tables as actual AML byte code. 846Previously, these tables were treated as "unknown table". 847 848iASL: Add definition and disassembly for TPM2 revision 3. 849 850iASL: Add support for TPM2 rev 3 compilation. 851 852 853---------------------------------------- 85408 January 2019. Summary of changes for version 20190108: 855 856 8571) ACPICA kernel-resident subsystem: 858 859Updated all copyrights to 2019. This affects all source code modules. 860 861 8622) iASL Compiler/Disassembler and Tools: 863 864ASL test suite (ASLTS): Updated all copyrights to 2019. 865 866Tools: Updated all signon copyrights to 2019. 867 868AcpiExec: Added a new option to dump extra information concerning any 869memory leaks detected by the internal object/cache tracking mechanism. - 870va 871 872iASL: Updated the table template for the TPM2 table to the newest version 873of the table (Revision 4) 874 875 876---------------------------------------- 87713 December 2018. Summary of changes for version 20181213: 878 879 8801) ACPICA Kernel-resident Subsystem: 881 882Fixed some buffer length issues with the GenericSerialBus, related to two 883of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 884which are rarely seen in the field. For these, the LEN field of the ASL 885buffer is now ignored. Hans de Goede 886 887Implemented a new object evaluation trace mechanism for control methods 888and data objects. This includes nested control methods. It is 889particularly useful for examining the ACPI execution during system 890initialization since the output is relatively terse. The flag below 891enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 892 #define ACPI_LV_EVALUATION 0x00080000 893 894Examples: 895 Enter evaluation : _SB.PCI0._INI (Method) 896 Exit evaluation : _SB.PCI0._INI 897 Enter evaluation : _OSI (Method) 898 Exit evaluation : _OSI 899 Enter evaluation : _SB.PCI0.TEST (Method) 900 Nested method call : _SB.PCI0.NST1 901 Exit nested method : _SB.PCI0.NST1 902 Exit evaluation : _SB.PCI0.TEST 903 904Added two recently-defined _OSI strings. See 905https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 906osi. 907 "Windows 2018" 908 "Windows 2018.2" 909 910Update for buffer-to-string conversions via the ToHexString ASL operator. 911A "0x" is now prepended to each of the hex values in the output string. 912This provides compatibility with other ACPI implementations. The ACPI 913specification is somewhat vague on this issue. 914 Example output string after conversion: 915"0x01,0x02,0x03,0x04,0x05,0x06" 916 917Return a run-time error for TermArg expressions within individual package 918elements. Although this is technically supported by the ASL grammar, 919other ACPI implementations do not support this either. Also, this fixes a 920fault if this type of construct is ever encountered (it never has been). 921 922 9232) iASL Compiler/Disassembler and Tools: 924 925iASL: Implemented a new compile option (-ww) that will promote individual 926warnings and remarks to errors. This is intended to enhance the firmware 927build process. 928 929AcpiExec: Implemented a new command-line option (-eo) to support the new 930object evaluation trace mechanism described above. 931 932Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 933instead of a "unknown table" message. 934 935AcpiHelp: Improved support for the "special" predefined names such as 936_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 937used for "xx" and "x". 938 939---------------------------------------- 94031 October 2018. Summary of changes for version 20181031: 941 942 943An Operation Region regression was fixed by properly adding address 944ranges to a global list during initialization. This allows OS to 945accurately check for overlapping regions between native devices (such as 946PCI) and Operation regions as well as checking for region conflicts 947between two Operation Regions. 948 949Added support for the 2-byte extended opcodes in the code/feature that 950attempts to continue parsing during the table load phase. Skip parsing 951Device declarations (and other extended opcodes) when an error occurs 952during parsing. Previously, only single-byte opcodes were supported. 953 954Cleanup: Simplified the module-level code support by eliminating a 955useless global variable (AcpiGbl_GroupModuleLeveCode). 956 957 9582) iASL Compiler/Disassembler and Tools: 959 960iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 961could cause a fault in the preprocessor. This was an inadvertent side- 962effect from moving more allocations/frees to the local cache/memory 963mechanism. 964 965iASL: Enhanced error detection by validating that all NameSeg elements 966within a NamePatch actually exist. The previous behavior was spotty at 967best, and such errors could be improperly ignored at compiler time (never 968at runtime, however. There are two new error messages, as shown in the 969examples below: 970 971dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 972Error 6161 - ^ One or more objects within 973the Pathname do not exist (TTTT.BXXX) 974 975dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 976Error 6160 - One or more prefix Scopes do not exist ^ 977(BBBB.CBF1) 978 979iASL: Disassembler/table-compiler: Added support for the static data 980table TPM2 revision 3 (an older version of TPM2). The support has been 981added for the compiler and the disassembler. 982 983Fixed compilation of DOS format data table file on Unix/Linux systems. 984iASL now properly detects line continuations (\) for DOS format data 985table definition language files on when executing on Unix/Linux. 986 987---------------------------------------- 98803 October 2018. Summary of changes for version 20181003: 989 990 9912) iASL Compiler/Disassembler and Tools: 992 993Fixed a regression introduced in version 20180927 that could cause the 994compiler to fault, especially with NamePaths containing one or more 995carats (^). Such as: ^^_SB_PCI0 996 997Added a new remark for the Sleep() operator when the sleep time operand 998is larger than one second. This is a very long time for the ASL/BIOS code 999and may not be what was intended by the ASL writer. 1000 1001---------------------------------------- 100227 September 2018. Summary of changes for version 20180927: 1003 1004 10051) ACPICA kernel-resident subsystem: 1006 1007Updated the GPE support to clear the status of all ACPI events when 1008entering any/all sleep states in order to avoid premature wakeups. In 1009theory, this may cause some wakeup events to be missed, but the 1010likelihood of this is small. This change restores the original behavior 1011of the ACPICA code in order to fix a regression seen from the previous 1012"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1013This regression could cause some systems to incorrectly wake immediately. 1014 1015Updated the execution of the _REG methods during initialization and 1016namespace loading to bring the behavior into closer conformance to the 1017ACPI specification and other ACPI implementations: 1018 1019From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1020 "Control methods must assume all operation regions are inaccessible 1021until the _REG(RegionSpace, 1) method is executed" 1022 1023 "The exceptions to this rule are: 10241. OSPM must guarantee that the following operation regions are always 1025accessible: 1026 SystemIO operation regions. 1027 SystemMemory operation regions when accessing memory returned by the 1028System Address Map reporting interfaces." 1029 1030Since the state of both the SystemIO and SystemMemory address spaces are 1031defined by the specification to never change, this ACPICA change ensures 1032that now _REG is never called on them. This solves some problems seen in 1033the field and provides compatibility with other ACPI implementations. An 1034update to the upcoming new version of the ACPI specification will help 1035clarify this behavior. 1036 1037Updated the implementation of support for the Generic Serial Bus. For the 1038"bidirectional" protocols, the internal implementation now automatically 1039creates a return data buffer of the maximum size (255). This handles the 1040worst-case for data that is returned from the serial bus handler, and 1041fixes some problems seen in the field. This new buffer is directly 1042returned to the ASL. As such, there is no true "bidirectional" buffer, 1043which matches the ACPI specification. This is the reason for the "double 1044store" seen in the example ASL code in the specification, shown below: 1045 1046Word Process Call (AttribProcessCall): 1047 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1048 Field(TOP1, BufferAcc, NoLock, Preserve) 1049 { 1050 FLD1, 8, // Virtual register at command value 1. 1051 } 1052 1053 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1054 // as BUFF 1055 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1056 1057 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1058 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1059transaction 1060 // This is the "double store". The write to 1061 // FLD1 returns a new buffer, which is stored 1062 // back into BUFF with the second Store. 1063 1064 10652) iASL Compiler/Disassembler and Tools: 1066 1067iASL: Implemented detection of extraneous/redundant uses of the Offset() 1068operator within a Field Unit list. A remark is now issued for these. For 1069example, the first two of the Offset() operators below are extraneous. 1070Because both the compiler and the interpreter track the offsets 1071automatically, these Offsets simply refer to the current offset and are 1072unnecessary. Note, when optimization is enabled, the iASL compiler will 1073in fact remove the redundant Offset operators and will not emit any AML 1074code for them. 1075 1076 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1077 Field (OPR1) 1078 { 1079 Offset (0), // Never needed 1080 FLD1, 32, 1081 Offset (4), // Redundant, offset is already 4 (bytes) 1082 FLD2, 8, 1083 Offset (64), // OK use of Offset. 1084 FLD3, 16, 1085 } 1086dsdt.asl 14: Offset (0), 1087Remark 2158 - ^ Unnecessary/redundant use of Offset 1088operator 1089 1090dsdt.asl 16: Offset (4), 1091Remark 2158 - ^ Unnecessary/redundant use of Offset 1092operator 1093 1094---------------------------------------- 109510 August 2018. Summary of changes for version 20180810: 1096 1097 10981) ACPICA kernel-resident subsystem: 1099 1100Initial ACPI table loading: Attempt to continue loading ACPI tables 1101regardless of malformed AML. Since migrating table initialization to the 1102new module-level code support, the AML interpreter rejected tables upon 1103any ACPI error encountered during table load. This is a problem because 1104non-serious ACPI errors during table load do not necessarily mean that 1105the entire definition block (DSDT or SSDT) is invalid. This change 1106improves the table loading by ignoring some types of errors that can be 1107generated by incorrect AML. This can range from object type errors, scope 1108errors, and index errors. 1109 1110Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1111during suspend/resume. The status of ACPI events is no longer cleared 1112when entering the ACPI S5 system state (power off) which caused some 1113systems to power up immediately after turning off power in certain 1114situations. This was a functional regression. It was fixed by clearing 1115the status of all ACPI events again when entering S5 (for system-wide 1116suspend or hibernation the clearing of the status of all events is not 1117desirable, as it might cause the kernel to miss wakeup events sometimes). 1118Rafael Wysocki. 1119 1120 11212) iASL Compiler/Disassembler and Tools: 1122 1123AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1124elements listed in the initialization file were previously initialized 1125after the table load and before executing module-level code blocks. 1126Recent changes in the module-level code support means that the table load 1127becomes a large control method execution. If fields are used within 1128module-level code and we are executing with the -fi option, the 1129initialization values were used to initialize the namespace object(s) 1130only after the table was finished loading. This change Provides an early 1131initialization of objects specified in the initialization file so that 1132field unit values are populated during the table load (not after the 1133load). 1134 1135AcpiExec: Fixed a small memory leak regression that could result in 1136warnings during exit of the utility. These warnings were similar to 1137these: 1138 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 1139 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 1140 1141---------------------------------------- 114229 June 2018. Summary of changes for version 20180629: 1143 1144 11451) iASL Compiler/Disassembler and Tools: 1146 1147iASL: Fixed a regression related to the use of the ASL External 1148statement. Error checking for the use of the External() statement has 1149been relaxed. Previously, a restriction on the use of External meant that 1150the referenced named object was required to be defined in a different 1151table (an SSDT). Thus it would be an error to declare an object as an 1152external and then define the same named object in the same table. For 1153example: 1154 DefinitionBlock (...) 1155 { 1156 External (DEV1) 1157 Device (DEV1){...} // This was an error 1158 } 1159However, this behavior has caused regressions in some existing ASL code, 1160because there is code that depends on named objects and externals (with 1161the same name) being declared in the same table. This change will allow 1162the ASL code above to compile without errors or warnings. 1163 1164iASL: Implemented ASL language extensions for four operators to make some 1165of their arguments optional instead of required: 1166 1) Field (RegionName, AccessType, LockRule, UpdateRule) 1167 2) BankField (RegionName, BankName, BankValue, 1168 AccessType, LockRule, UpdateRule) 1169 3) IndexField (IndexName, DataName, 1170 AccessType, LockRule, UpdateRule) 1171For the Field operators above, the AccessType, LockRule, and UpdateRule 1172are now optional arguments. The default values are: 1173 AccessType: AnyAcc 1174 LockRule: NoLock 1175 UpdateRule: Preserve 1176 4) Mutex (MutexName, SyncLevel) 1177For this operator, the SyncLevel argument is now optional. This argument 1178is rarely used in any meaningful way by ASL code, and thus it makes sense 1179to make it optional. The default value is: 1180 SyncLevel: 0 1181 1182iASL: Attempted use of the ASL Unload() operator now results in the 1183following warning: 1184 "Unload is not supported by all operating systems" 1185This is in fact very true, and the Unload operator may be completely 1186deprecated in the near future. 1187 1188AcpiExec: Fixed a regression for the -fi option (Namespace initialization 1189file. Recent changes in the ACPICA module-level code support altered the 1190table load/initialization sequence . This means that the table load has 1191become a large method execution of the table itself. If Operation Region 1192Fields are used within any module-level code and the -fi option was 1193specified, the initialization values were populated only after the table 1194had completely finished loading (and thus the module-level code had 1195already been executed). This change moves the initialization of objects 1196listed in the initialization file to before the table is executed as a 1197method. Field unit values are now initialized before the table execution 1198is performed. 1199 1200---------------------------------------- 120131 May 2018. Summary of changes for version 20180531: 1202 1203 12041) ACPICA kernel-resident Subsystem: 1205 1206Implemented additional support to help ensure that a DSDT or SSDT is 1207fully loaded even if errors are incurred during the load. The majority of 1208the problems that are seen is the failure of individual AML operators 1209that occur during execution of any module-level code (MLC) existing in 1210the table. This support adds a mechanism to abort the current ASL 1211statement (AML opcode), emit an error message, and to simply move on to 1212the next opcode -- instead of aborting the entire table load. This is 1213different than the execution of a control method where the entire method 1214is aborted upon any error. The goal is to perform a very "best effort" to 1215load the ACPI tables. The most common MLC errors that have been seen in 1216the field are direct references to unresolved ASL/AML symbols (referenced 1217directly without the use of the CondRefOf operator to validate the 1218symbol). This new ACPICA behavior is now compatible with other ACPI 1219implementations. 1220 1221Interpreter: The Unload AML operator is no longer supported for the 1222reasons below. An AE_NOT_IMPLEMENTED exception is returned. 12231) A correct implementation on at least some hosts may not be possible. 12242) Other ACPI implementations do not correctly/fully support it. 12253) It requires host device driver support which is not known to exist. 1226 (To properly support namespace unload out from underneath.) 12274) This AML operator has never been seen in the field. 1228 1229Parser: Added a debug option to dump AML parse sub-trees as they are 1230being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 1231ACPI_DB_PARSE_TREES. 1232 1233Debugger: Reduced the verbosity for errors incurred during table load and 1234module-level code execution. 1235 1236Completed an investigation into adding a namespace node "owner list" 1237instead of the current "owner ID" associated with namespace nodes. This 1238list would link together all nodes that are owned by an individual 1239control method. The purpose would be to enhance control method execution 1240by speeding up cleanup during method exit (all namespace nodes created by 1241a method are deleted upon method termination.) Currently, the entire 1242namespace must be searched for matching owner IDs if (and only if) the 1243method creates named objects outside of the local scope. However, by far 1244the most common case is that methods create objects locally, not outside 1245the method scope. There is already an ACPICA optimization in place that 1246only searches the entire namespace in the rare case of a method creating 1247objects elsewhere in the namespace. Therefore, it is felt that the 1248overhead of adding an additional pointer to each namespace node to 1249implement the owner list makes this feature unnecessary. 1250 1251 12522) iASL Compiler/Disassembler and Tools: 1253 1254iASL, Disassembler, and Template generator: Implemented support for 1255Revision D of the IORT table. Adds a new subtable that is used to specify 1256SMMUv3 PMCGs. rmurphy-arm. 1257 1258Disassembler: Restored correct table header validation for the "special" 1259ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 1260table header and must be special-cased. This was a regression that has 1261been present for apparently a long time. 1262 1263AcpiExec: Reduced verbosity of the local exception handler implemented 1264within acpiexec. This handler is invoked by ACPICA upon any exceptions 1265generated during control method execution. A new option was added: -vh 1266restores the original verbosity level if desired. 1267 1268AcpiExec: Changed the default base from decimal to hex for the -x option 1269(set debug level). This simplifies the use of this option and matches the 1270behavior of the corresponding iASL -x option. 1271 1272AcpiExec: Restored a force-exit on multiple control-c (sigint) 1273interrupts. This allows program termination even if other issues cause 1274the control-c to fail. 1275 1276ASL test suite (ASLTS): Added tests for the recently implemented package 1277element resolution mechanism that allows forward references to named 1278objects from individual package elements (this mechanism provides 1279compatibility with other ACPI implementations.) 1280 1281 1282---------------------------------------- 12838 May 2018. Summary of changes for version 20180508: 1284 1285 12861) ACPICA kernel-resident subsystem: 1287 1288Completed the new (recently deployed) package resolution mechanism for 1289the Load and LoadTable ASL/AML operators. This fixes a regression that 1290was introduced in version 20180209 that could result in an 1291AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 1292(SSDT) that contains package objects. 1293 1294 12952) iASL Compiler/Disassembler and Tools: 1296 1297AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 12981 MB. This change allows for table offsets within the acpidump file to be 1299up to 8 characters. These changes are backwards compatible with existing 1300acpidump files. 1301 1302 1303---------------------------------------- 130427 April 2018. Summary of changes for version 20180427: 1305 1306 13071) ACPICA kernel-resident subsystem: 1308 1309Debugger: Added support for Package objects in the "Test Objects" 1310command. This command walks the entire namespace and evaluates all named 1311data objects (Integers, Strings, Buffers, and now Packages). 1312 1313Improved error messages for the namespace root node. Originally, the root 1314was referred to by the confusing string "\___". This has been replaced by 1315"Namespace Root" for clarification. 1316 1317Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 1318Ian King <colin.king@canonical.com>. 1319 1320 13212) iASL Compiler/Disassembler and Tools: 1322 1323iASL: Implemented support to detect and flag illegal forward references. 1324For compatibility with other ACPI implementations, these references are 1325now illegal at the root level of the DSDT or SSDTs. Forward references 1326have always been illegal within control methods. This change should not 1327affect existing ASL/AML code because of the fact that these references 1328have always been illegal in the other ACPI implementation. 1329 1330iASL: Added error messages for the case where a table OEM ID and OEM 1331TABLE ID strings are longer than the ACPI-defined length. Previously, 1332these strings were simply silently truncated. 1333 1334iASL: Enhanced the -tc option (which creates an AML hex file in C, 1335suitable for import into a firmware project): 1336 1) Create a unique name for the table, to simplify use of multiple 1337SSDTs. 1338 2) Add a protection #ifdef in the file, similar to a .h header file. 1339With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 1340evan.lloyd@arm.com 1341 1342AcpiExec: Added a new option, -df, to disable the local fault handler. 1343This is useful during debugging, where it may be desired to drop into a 1344debugger on a fault. 1345 1346---------------------------------------- 134713 March 2018. Summary of changes for version 20180313: 1348 1349 13501) ACPICA kernel-resident subsystem: 1351 1352Implemented various improvements to the GPE support: 1353 13541) Dispatch all active GPEs at initialization time so that no GPEs are 1355lost. 13562) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 1357before devices are enumerated. 13583) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 1359IRQs are not lost. 13604) Add parallel GPE handling to eliminate the possibility of dispatching 1361the same GPE twice. 13625) Dispatch any pending GPEs after enabling for the first time. 1363 1364AcpiGetObjectInfo - removed support for the _STA method. This was causing 1365problems on some platforms. 1366 1367Added a new _OSI string, "Windows 2017.2". 1368 1369Cleaned up and simplified the module-level code support. These changes 1370are in preparation for the eventual removal of the legacy MLC support 1371(deferred execution), replaced by the new MLC architecture which executes 1372the MLC as a table is loaded (DSDT/SSDTs). 1373 1374Changed a compile-time option to a runtime option. Changes the option to 1375ignore ACPI table load-time package resolution errors into a runtime 1376option. Used only for platforms that generate many AE_NOT_FOUND errors 1377during boot. AcpiGbl_IgnorePackageResolutionErrors. 1378 1379Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 1380ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 1381compilation errors from unused variables (seen with some compilers). 1382 1383 13842) iASL Compiler/Disassembler and Tools: 1385 1386ASLTS: parallelized execution in order to achieve an (approximately) 2X 1387performance increase. 1388 1389ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 1390error reporting. 1391 1392---------------------------------------- 139309 February 2018. Summary of changes for version 20180209: 1394 1395 13961) ACPICA kernel-resident subsystem: 1397 1398Completed the final integration of the recent changes to Package Object 1399handling and the module-level AML code support. This allows forward 1400references from individual package elements when the package object is 1401declared from within module-level code blocks. Provides compatibility 1402with other ACPI implementations. 1403 1404The new architecture for the AML module-level code has been completed and 1405is now the default for the ACPICA code. This new architecture executes 1406the module-level code in-line as the ACPI table is loaded/parsed instead 1407of the previous architecture which deferred this code until after the 1408table was fully loaded. This solves some ASL code ordering issues and 1409provides compatibility with other ACPI implementations. At this time, 1410there is an option to fallback to the earlier architecture, but this 1411support is deprecated and is planned to be completely removed later this 1412year. 1413 1414Added a compile-time option to ignore AE_NOT_FOUND exceptions during 1415resolution of named reference elements within Package objects. Although 1416this is potentially a serious problem, it can generate a lot of 1417noise/errors on platforms whose firmware carries around a bunch of unused 1418Package objects. To disable these errors, define 1419ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 1420errors are always reported for ACPICA applications such as AcpiExec. 1421 1422Fixed a regression related to the explicit type-conversion AML operators 1423(ToXXXX). The regression was introduced early in 2017 but was not seen 1424until recently because these operators are not fully supported by other 1425ACPI implementations and are thus rarely used by firmware developers. The 1426operators are defined by the ACPI specification to not implement the 1427"implicit result object conversion". The regression incorrectly 1428introduced this object conversion for the following explicit conversion 1429operators: 1430 ToInteger 1431 ToString 1432 ToBuffer 1433 ToDecimalString 1434 ToHexString 1435 ToBCD 1436 FromBCD 1437 1438 14392) iASL Compiler/Disassembler and Tools: 1440 1441iASL: Fixed a problem with the compiler constant folding feature as 1442related to the ToXXXX explicit conversion operators. These operators do 1443not support the "implicit result object conversion" by definition. Thus, 1444ASL expressions that use these operators cannot be folded to a simple 1445Store operator because Store implements the implicit conversion. This 1446change uses the CopyObject operator for the ToXXXX operator folding 1447instead. CopyObject is defined to not implement implicit result 1448conversions and is thus appropriate for folding the ToXXXX operators. 1449 1450iASL: Changed the severity of an error condition to a simple warning for 1451the case where a symbol is declared both locally and as an external 1452symbol. This accommodates existing ASL code. 1453 1454AcpiExec: The -ep option to enable the new architecture for module-level 1455code has been removed. It is replaced by the -dp option which instead has 1456the opposite effect: it disables the new architecture (the default) and 1457enables the legacy architecture. When the legacy code is removed in the 1458future, the -dp option will be removed also. 1459 1460---------------------------------------- 146105 January 2018. Summary of changes for version 20180105: 1462 1463 14641) ACPICA kernel-resident subsystem: 1465 1466Updated all copyrights to 2018. This affects all source code modules. 1467 1468Fixed a possible build error caused by an unresolved reference to the 1469AcpiUtSafeStrncpy function. 1470 1471Removed NULL pointer arithmetic in the various pointer manipulation 1472macros. All "(void *) NULL" constructs are converted to "(void *) 0". 1473This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 1474 1475Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 1476Mittal. 1477 1478 14792) iASL Compiler/Disassembler and Tools: 1480 1481ASLTS: Updated all copyrights to 2018. 1482 1483Tools: Updated all signon copyrights to 2018. 1484 1485AcpiXtract: Fixed a regression related to ACPI table signatures where the 1486signature was truncated to 3 characters (instead of 4). 1487 1488AcpiExec: Restore the original terminal mode after the use of the -v and 1489-vd options. 1490 1491ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 1492 1493---------------------------------------- 149414 December 2017. Summary of changes for version 20171214: 1495 1496 14971) ACPICA kernel-resident subsystem: 1498 1499Fixed a regression in the external (public) AcpiEvaluateObjectTyped 1500interface where the optional "pathname" argument had inadvertently become 1501a required argument returning an error if omitted (NULL pointer 1502argument). 1503 1504Fixed two possible memory leaks related to the recently developed "late 1505resolution" of reference objects within ASL Package Object definitions. 1506 1507Added two recently defined _OSI strings: "Windows 2016" and "Windows 15082017". Mario Limonciello. 1509 1510Implemented and deployed a safer version of the C library function 1511strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 1512creation of unterminated strings as a possible result of a standard 1513strncpy. 1514 1515Cleaned up and restructured the global variable file (acglobal.h). There 1516are many changes, but no functional changes. 1517 1518 15192) iASL Compiler/Disassembler and Tools: 1520 1521iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 1522optional OemData field at the end of the table was incorrectly required 1523for proper compilation. It is now correctly an optional field. 1524 1525ASLTS: The entire suite was converted from standard ASL to the ASL+ 1526language, using the ASL-to-ASL+ converter which is integrated into the 1527iASL compiler. A binary compare of all output files has verified the 1528correctness of the conversion. 1529 1530iASL: Fixed the source code build for platforms where "char" is unsigned. 1531This affected the iASL lexer only. Jung-uk Kim. 1532 1533---------------------------------------- 153410 November 2017. Summary of changes for version 20171110: 1535 1536 15371) ACPICA kernel-resident subsystem: 1538 1539This release implements full support for ACPI 6.2A: 1540 NFIT - Added a new subtable, "Platform Capabilities Structure" 1541No other changes to ACPICA were required, since ACPI 6.2A is primarily an 1542errata release of the specification. 1543 1544Other ACPI table changes: 1545 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 1546 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 1547Linton 1548 1549Utilities: Modified the string/integer conversion functions to use 1550internal 64-bit divide support instead of a native divide. On 32-bit 1551platforms, a 64-bit divide typically requires a library function which 1552may not be present in the build (kernel or otherwise). 1553 1554Implemented a targeted error message for timeouts returned from the 1555Embedded Controller device driver. This is seen frequently enough to 1556special-case an AE_TIME returned from an EC operation region access: 1557 "Timeout from EC hardware or EC device driver" 1558 1559Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 1560runtime error messages have the identical prefix. 1561 1562 15632) iASL Compiler/Disassembler and Tools: 1564 1565AcpiXtract: Fixed a problem with table header detection within the 1566acpidump file. Processing a table could be ended early if a 0x40 (@) 1567appears in the original binary table, resulting in the @ symbol appearing 1568in the decoded ASCII field at the end of the acpidump text line. The 1569symbol caused acpixtract to incorrectly think it had reached the end of 1570the current table and the beginning of a new table. 1571 1572AcpiXtract: Added an option (-f) to ignore some errors during table 1573extraction. This initial implementation ignores non-ASCII and non- 1574printable characters found in the acpidump text file. 1575 1576TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 1577for ASLTS. This feature is used to track memory allocations from 1578different memory caches within the ACPICA code. At the end of an ASLTS 1579run, these memory statistics are recorded and stored in a log file. 1580 1581Debugger (user-space version): Implemented a simple "Background" command. 1582Creates a new thread to execute a control method in the background, while 1583control returns to the debugger prompt to allow additional commands. 1584 Syntax: Background <Namepath> [Arguments] 1585 1586---------------------------------------- 158729 September 2017. Summary of changes for version 20170929: 1588 1589 15901) ACPICA kernel-resident subsystem: 1591 1592Redesigned and implemented an improved ASL While() loop timeout 1593mechanism. This mechanism is used to prevent infinite loops in the kernel 1594AML interpreter caused by either non-responsive hardware or incorrect AML 1595code. The new implementation uses AcpiOsGetTimer instead of a simple 1596maximum loop count, and is thus more accurate and constant across 1597different machines. The default timeout is currently 30 seconds, but this 1598may be adjusted later. 1599 1600Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 1601better reflect the new implementation of the loop timeout mechanism. 1602 1603Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 1604and to fix an off-by-one error. Jung-uk Kim. 1605 1606Fixed an EFI build problem by updating the makefiles to for a new file 1607that was added, utstrsuppt.c 1608 1609 16102) iASL Compiler/Disassembler and Tools: 1611 1612Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 1613includes support in the table disassembler, compiler, and template 1614generator. 1615 1616iASL: Added an exception for an illegal type of recursive method 1617invocation. If a method creates named objects, the first recursive call 1618will fail at runtime. This change adds an error detection at compile time 1619to catch the problem up front. Note: Marking such a method as 1620"serialized" will not help with this problem, because the same thread can 1621acquire the method mutex more than once. Example compiler and runtime 1622output: 1623 1624 Method (MTH1) 1625 { 1626 Name (INT1, 1) 1627 MTH1 () 1628 } 1629 1630 dsdt.asl 22: MTH1 () 1631 Error 6152 - ^ Illegal recursive call to method 1632 that creates named objects (MTH1) 1633 1634Previous runtime exception: 1635 ACPI Error: [INT1] Namespace lookup failure, 1636 AE_ALREADY_EXISTS (20170831/dswload2-465) 1637 1638iASL: Updated support for External() opcodes to improve namespace 1639management and error detection. These changes are related to issues seen 1640with multiple-segment namespace pathnames within External declarations, 1641such as below: 1642 1643 External(\_SB.PCI0.GFX0, DeviceObj) 1644 External(\_SB.PCI0.GFX0.ALSI) 1645 1646iASL: Implemented support for multi-line error/warning messages. This 1647enables more detailed and helpful error messages as below, from the 1648initial deployment for the duplicate names error: 1649 1650 DSDT.iiii 1692: Device(PEG2) { 1651 Error 6074 - ^ Name already exists in scope 1652(PEG2) 1653 1654 Original name creation/declaration below: 1655 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 1656 1657AcpiXtract: Added additional flexibility to support differing input hex 1658dump formats. Specifically, hex dumps that contain partial disassembly 1659and/or comments within the ACPI table data definition. There exist some 1660dump utilities seen in the field that create this type of hex dump (such 1661as Simics). For example: 1662 1663 DSDT @ 0xdfffd0c0 (10999 bytes) 1664 Signature DSDT 1665 Length 10999 1666 Revision 1 1667 Checksum 0xf3 (Ok) 1668 OEM_ID BXPC 1669 OEM_table_id BXDSDT 1670 OEM_revision 1 1671 Creator_id 1280593481 1672 Creator_revision 537399345 1673 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 1674 ... 1675 2af0: 5f 4c 30 46 00 a4 01 1676 1677Test suite: Miscellaneous changes/fixes: 1678 More cleanup and simplification of makefiles 1679 Continue compilation of test cases after a compile failure 1680 Do not perform binary compare unless both files actually exist 1681 1682iASL: Performed some code/module restructuring. Moved all memory 1683allocation functions to new modules. Two new files, aslallocate.c and 1684aslcache.c 1685 1686---------------------------------------- 168731 August 2017. Summary of changes for version 20170831: 1688 1689 16901) ACPICA kernel-resident subsystem: 1691 1692Implemented internal support for full 64-bit addresses that appear in all 1693Generic Address Structure (GAS) structures. Previously, only the lower 32 1694bits were used. Affects the use of GAS structures in the FADT and other 1695tables, as well as the GAS structures passed to the AcpiRead and 1696AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 1697 1698Added header support for the PDTT ACPI table (Processor Debug Trigger 1699Table). Full support in the iASL Data Table Compiler and disassembler is 1700forthcoming. 1701 1702 17032) iASL Compiler/Disassembler and Tools: 1704 1705iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 1706Properties Topology Table) where a flag bit was specified in the wrong 1707bit position ("Line Size Valid", bit 6). 1708 1709iASL: Implemented support for Octal integer constants as defined by the 1710ASL language grammar, per the ACPI specification. Any integer constant 1711that starts with a zero is an octal constant. For example, 1712 Store (037777, Local0) /* Octal constant */ 1713 Store (0x3FFF, Local0) /* Hex equivalent */ 1714 Store (16383, Local0) /* Decimal equivalent */ 1715 1716iASL: Improved overflow detection for 64-bit string conversions during 1717compilation of integer constants. "Overflow" in this case means a string 1718that represents an integer that is too large to fit into a 64-bit value. 1719Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 1720the low-order 32 bits with a warning, as previously implemented. Several 1721new exceptions are defined that indicate a 64-bit overflow, as well as 1722the base (radix) that was used during the attempted conversion. Examples: 1723 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 1724 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 1725 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 1726 1727iASL: Added a warning for the case where a ResourceTemplate is declared 1728with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 1729this case, the resulting template is created with a single END_TAG 1730descriptor, which is essentially useless. 1731 1732iASL: Expanded the -vw option (ignore specific warnings/remarks) to 1733include compilation error codes as well. 1734 1735---------------------------------------- 173628 July 2017. Summary of changes for version 20170728: 1737 1738 17391) ACPICA kernel-resident subsystem: 1740 1741Fixed a regression seen with small resource descriptors that could cause 1742an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 1743 1744AML interpreter: Implemented a new feature that allows forward references 1745from individual named references within package objects that are 1746contained within blocks of "module-level code". This provides 1747compatibility with other ACPI implementations and supports existing 1748firmware that depends on this feature. Example: 1749 1750 Name (ABCD, 1) 1751 If (ABCD) /* An If() at module-level */ 1752 { 1753 Name (PKG1, Package() 1754 { 1755 INT1 /* Forward reference to object INT1 1756*/ 1757 }) 1758 Name (INT1, 0x1234) 1759 } 1760 1761AML Interpreter: Fixed a problem with the Alias() operator where aliases 1762to some ASL objects were not handled properly. Objects affected are: 1763Mutex, Event, and OperationRegion. 1764 1765AML Debugger: Enhanced to properly handle AML Alias objects. These 1766objects have one level of indirection which was not fully supported by 1767the debugger. 1768 1769Table Manager: Added support to detect and ignore duplicate SSDTs within 1770the XSDT/RSDT. This error in the XSDT has been seen in the field. 1771 1772EFI and EDK2 support: 1773 Enabled /WX flag for MSVC builds 1774 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 1775 Added local support for 64-bit multiply and shift operations 1776 Added support to compile acpidump.efi on Windows 1777 Added OSL function stubs for interfaces not used under EFI 1778 1779Added additional support for the _DMA predefined name. _DMA returns a 1780buffer containing a resource template. This change add support within the 1781resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 1782resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 1783 1784 17852) iASL Compiler/Disassembler and Tools: 1786 1787iASL: Fixed a problem where the internal input line buffer(s) could 1788overflow if there are very long lines in the input ASL source code file. 1789Implemented buffer management that automatically increases the size of 1790the buffers as necessary. 1791 1792iASL: Added an option (-vx) to "expect" particular remarks, warnings and 1793errors. If the specified exception is not raised during compilation, the 1794compiler emits an error. This is intended to support the ASL test suite, 1795but may be useful in other contexts. 1796 1797iASL: Implemented a new predefined macro, __METHOD__, which returns a 1798string containing the name of the current control method that is being 1799compiled. 1800 1801iASL: Implemented debugger and table compiler support for the SDEI ACPI 1802table (Software Delegated Exception Interface). James Morse 1803<james.morse@arm.com> 1804 1805Unix/Linux makefiles: Added an option to disable compile optimizations. 1806The disable occurs when the NOOPT flag is set to TRUE. 1807theracermaster@gmail.com 1808 1809Acpidump: Added support for multiple DSDT and FACS tables. This can occur 1810when there are different tables for 32-bit versus 64-bit. 1811 1812Enhanced error reporting for the ASL test suite (ASLTS) by removing 1813unnecessary/verbose text, and emit the actual line number where an error 1814has occurred. These changes are intended to improve the usefulness of the 1815test suite. 1816 1817---------------------------------------- 181829 June 2017. Summary of changes for version 20170629: 1819 1820 18211) ACPICA kernel-resident subsystem: 1822 1823Tables: Implemented a deferred ACPI table verification. This is useful 1824for operating systems where the tables cannot be verified in the early 1825initialization stage due to early memory mapping limitations on some 1826architectures. Lv Zheng. 1827 1828Tables: Removed the signature validation for dynamically loaded tables. 1829Provides compatibility with other ACPI implementations. Previously, only 1830SSDT tables were allowed, as per the ACPI specification. Now, any table 1831signature can be used via the Load() operator. Lv Zheng. 1832 1833Tables: Fixed several mutex issues that could cause errors during table 1834acquisition. Lv Zheng. 1835 1836Tables: Fixed a problem where an ACPI warning could be generated if a 1837null pointer was passed to the AcpiPutTable interface. Lv Zheng. 1838 1839Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 1840AcpiPutTable interfaces. This applies to the "late stage" table loading 1841when the use of AcpiPutTable is no longer required (since the system 1842memory manager is fully running and available). Lv Zheng. 1843 1844Fixed/Reverted a regression during processing of resource descriptors 1845that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 1846exception in this case. 1847 1848Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 1849I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 1850 1851Interpreter: Fixed a possible fault if an Alias operator with an invalid 1852or duplicate target is encountered during Alias creation in 1853AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 1854 1855Added an option to use designated initializers for function pointers. 1856Kees Cook <keescook@google.com> 1857 1858 18592) iASL Compiler/Disassembler and Tools: 1860 1861iASL: Allow compilation of External declarations with target pathnames 1862that refer to existing named objects within the table. Erik Schmauss. 1863 1864iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 1865FieldUnit name also is declared via External in the same table. Erik 1866Schmauss. 1867 1868iASL: Allow existing scope names within pathnames used in External 1869statements. For example: 1870 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 1871 Device (ABCD) 1872 1873iASL: IORT ACPI table: Implemented changes required to decode the new 1874Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 1875compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 1876 1877Disassembler: Don't abort disassembly on errors from External() 1878statements. Erik Schmauss. 1879 1880Disassembler: fixed a possible fault when one of the Create*Field 1881operators references a Resource Template. ACPICA Bugzilla 1396. 1882 1883iASL: In the source code, resolved some naming inconsistences across the 1884parsing support. Fixes confusion between "Parse Op" and "Parse Node". 1885Adds a new file, aslparseop.c 1886 1887---------------------------------------- 188831 May 2017. Summary of changes for version 20170531: 1889 1890 18910) ACPI 6.2 support: 1892 1893The ACPI specification version 6.2 has been released and is available at 1894http://uefi.org/specifications 1895 1896This version of ACPICA fully supports the ACPI 6.2 specification. Changes 1897are summarized below. 1898 1899New ACPI tables (Table Compiler/Disassembler/Templates): 1900 HMAT (Heterogeneous Memory Attributes Table) 1901 WSMT (Windows SMM Security Mitigation Table) 1902 PPTT (Processor Properties Topology Table) 1903 1904New subtables for existing ACPI tables: 1905 HEST (New subtable, Arch-deferred machine check) 1906 SRAT (New subtable, Arch-specific affinity structure) 1907 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 1908 1909Simple updates for existing ACPI tables: 1910 BGRT (two new flag bits) 1911 HEST (New bit defined for several subtables, GHES_ASSIST) 1912 1913New Resource Descriptors and Resource macros (Compiler/Disassembler): 1914 PinConfig() 1915 PinFunction() 1916 PinGroup() 1917 PinGroupConfig() 1918 PinGroupFunction() 1919 New type for hardware error notification (section 18.3.2.9) 1920 1921New predefined names/methods (Compiler/Interpreter): 1922 _HMA (Heterogeneous Memory Attributes) 1923 _LSI (Label Storage Information) 1924 _LSR (Label Storage Read) 1925 _LSW (Label Storage Write) 1926 1927ASL grammar/macro changes (Compiler): 1928 For() ASL macro, implemented with the AML while operator 1929 Extensions to Concatenate operator 1930 Support for multiple definition blocks in same ASL file 1931 Clarification for Buffer operator 1932 Allow executable AML code underneath all scopes (Devices, etc.) 1933 Clarification/change for the _OSI return value 1934 ASL grammar update for reference operators 1935 Allow a zero-length string for AML filename in DefinitionBlock 1936 1937Miscellaneous: 1938 New device object notification value 1939 Remove a notify value (0x0C) for graceful shutdown 1940 New UUIDs for processor/cache properties and 1941 physical package property 1942 New _HID, ACPI0014 (Wireless Power Calibration Device) 1943 1944 19451) ACPICA kernel-resident subsystem: 1946 1947Added support to disable ACPI events on hardware-reduced platforms. 1948Eliminates error messages of the form "Could not enable fixed event". Lv 1949Zheng 1950 1951Fixed a problem using Device/Thermal objects with the ObjectType and 1952DerefOf ASL operators. This support had not been fully/properly 1953implemented. 1954 1955Fixed a problem where if a Buffer object containing a resource template 1956was longer than the actual resource template, an error was generated -- 1957even though the AML is legal. This case has been seen in the field. 1958 1959Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 1960The values for DUAL_PIC and MULTIPLE_APIC were reversed. 1961 1962Added header file changes for the TPM2 ACPI table. Update to new version 1963of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 1964 1965Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 1966These interfaces are intended to be used only in conjunction with the 1967predefined _DLM method (Device Lock Method). "This object appears in a 1968device scope when AML access to the device must be synchronized with the 1969OS environment". 1970 1971Example Code and Data Size: These are the sizes for the OS-independent 1972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1973debug version of the code includes the debug output trace mechanism and 1974has a much larger code and data size. 1975 1976 Current Release: 1977 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 1978 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 1979 Previous Release: 1980 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1981 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1982 1983 19842) iASL Compiler/Disassembler and Tools: 1985 1986iASL: Fixed a problem where an External() declaration could not refer to 1987a Field Unit. Erik Schmauss. 1988 1989Disassembler: Improved support for the Switch/Case operators. This 1990feature will disassemble AML code back to the original Switch operators 1991when possible, instead of an If..Else sequence. David Box 1992 1993iASL and disassembler: Improved the handling of multiple extraneous 1994parentheses for both ASL input and disassembled ASL output. 1995 1996Improved the behavior of the iASL compiler and disassembler to detect 1997improper use of external declarations 1998 1999Disassembler: Now aborts immediately upon detection of an unknown AML 2000opcode. The AML parser has no real way to recover from this, and can 2001result in the creation of an ill-formed parse tree that causes errors 2002later during the disassembly. 2003 2004All tools: Fixed a problem where the Unix application OSL did not handle 2005control-c correctly. For example, a control-c could incorrectly wake the 2006debugger. 2007 2008AcpiExec: Improved the Control-C handling and added a handler for 2009segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2010environments. 2011 2012Reduced the verbosity of the generic unix makefiles. Previously, each 2013compilation displayed the full set of compiler options. This has been 2014eliminated as the options are easily inspected within the makefiles. Each 2015compilation now results in a single line of output. 2016 2017---------------------------------------- 201803 March 2017. Summary of changes for version 20170303: 2019 2020 20210) ACPICA licensing: 2022 2023The licensing information at the start of each source code module has 2024been updated. In addition to the Intel license, the dual GPLv2/BSD 2025license has been added for completeness. Now, a single version of the 2026source code should be suitable for all ACPICA customers. This is the 2027major change for this release since it affects all source code modules. 2028 2029 20301) ACPICA kernel-resident subsystem: 2031 2032Fixed two issues with the common asltypes.h header that could cause 2033problems in some environments: (Kim Jung-uk) 2034 Removed typedef for YY_BUFFER_STATE ? 2035 Fixes an error with earlier versions of Flex. 2036 Removed use of FILE typedef (which is only defined in stdio.h) 2037 2038 20392) iASL Compiler/Disassembler and Tools: 2040 2041Disassembler: fixed a regression introduced in 20170224. A fix for a 2042memory leak related to resource descriptor tags (names) could fault when 2043the disassembler was generated with 64-bit compilers. 2044 2045The ASLTS test suite has been updated to implement a new testing 2046architecture. During generation of the suite from ASL source, both the 2047ASL and ASL+ compilers are now validated, as well as the disassembler 2048itself (Erik Schmauss). The architecture executes as follows: 2049 2050 For every ASL source module: 2051 Compile (legacy ASL compilation) 2052 Disassemble the resulting AML to ASL+ source code 2053 Compile the new ASL+ module 2054 Perform a binary compare on the legacy AML and the new ASL+ AML 2055 The ASLTS suite then executes normally using the AML binaries. 2056 2057---------------------------------------- 205824 February 2017. Summary of changes for version 20170224: 2059 2060 20611) ACPICA kernel-resident subsystem: 2062 2063Interpreter: Fixed two issues with the control method return value auto- 2064repair feature, where an attempt to double-delete an internal object 2065could result in an ACPICA warning (for _CID repair and others). No fault 2066occurs, however, because the attempted deletion (actually a release to an 2067internal cache) is detected and ignored via object poisoning. 2068 2069Debugger: Fixed an AML interpreter mutex issue during the single stepping 2070of control methods. If certain debugger commands are executed during 2071stepping, a mutex acquire/release error could occur. Lv Zheng. 2072 2073Fixed some issues generating ACPICA with the Intel C compiler by 2074restoring the original behavior and compiler-specific include file in 2075acenv.h. Lv Zheng. 2076 2077Example Code and Data Size: These are the sizes for the OS-independent 2078acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2079debug version of the code includes the debug output trace mechanism and 2080has a much larger code and data size. 2081 2082 Current Release: 2083 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2084 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2085 Previous Release: 2086 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2087 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2088 2089 20902) iASL Compiler/Disassembler and Tools: 2091 2092iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2093tool has been designed, implemented, and included in this release. The 2094key feature of this utility is that the original comments within the 2095input ASL file are preserved during the conversion process, and included 2096within the converted ASL+ file -- thus creating a transparent conversion 2097of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2098 2099 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2100converted code 2101 2102iASL/Disassembler: Improved the detection and correct disassembly of 2103Switch/Case operators. This feature detects sequences of if/elseif/else 2104operators that originated from ASL Switch/Case/Default operators and 2105emits the original operators. David Box. 2106 2107iASL: Improved the IORT ACPI table support in the following areas. Lv 2108Zheng: 2109 Clear MappingOffset if the MappingCount is zero. 2110 Fix the disassembly of the SMMU GSU interrupt offset. 2111 Update the template file for the IORT table. 2112 2113Disassembler: Enhanced the detection and disassembly of resource 2114template/descriptor within a Buffer object. An EndTag descriptor is now 2115required to have a zero second byte, since all known ASL compilers emit 2116this. This helps eliminate incorrect decisions when a buffer is 2117disassembled (false positives on resource templates). 2118 2119---------------------------------------- 212019 January 2017. Summary of changes for version 20170119: 2121 2122 21231) General ACPICA software: 2124 2125Entire source code base: Added the 2017 copyright to all source code 2126legal/licensing module headers and utility/tool signons. This includes 2127the standard Linux dual-license header. This affects virtually every file 2128in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2129the ACPICA test suite. 2130 2131 21322) iASL Compiler/Disassembler and Tools: 2133 2134iASL: Removed/fixed an inadvertent remark when a method argument 2135containing a reference is used as a target operand within the method (and 2136never used as a simple argument), as in the example below. Jeffrey Hugo. 2137 2138 dsdt.asl 1507: Store(0x1, Arg0) 2139 Remark 2146 - ^ Method Argument is never used (Arg0) 2140 2141All tools: Removed the bit width of the compiler that generated the tool 2142from the common signon for all user space tools. This proved to be 2143confusing and unnecessary. This includes similar removal of HARDWARE_NAME 2144from the generic makefiles (Thomas Petazzoni). Example below. 2145 2146 Old: 2147 ASL+ Optimizing Compiler version 20170119-32 2148 ASL+ Optimizing Compiler version 20170119-64 2149 2150 New: 2151 ASL+ Optimizing Compiler version 20170119 2152 2153---------------------------------------- 215422 December 2016. Summary of changes for version 20161222: 2155 2156 21571) ACPICA kernel-resident subsystem: 2158 2159AML Debugger: Implemented a new mechanism to simplify and enhance 2160debugger integration into all environments, including kernel debuggers 2161and user-space utilities, as well as remote debug services. This 2162mechanism essentially consists of new OSL interfaces to support debugger 2163initialization/termination, as well as wait/notify interfaces to perform 2164the debugger handshake with the host. Lv Zheng. 2165 2166 New OSL interfaces: 2167 AcpiOsInitializeDebugger (void) 2168 AcpiOsTerminateDebugger (void) 2169 AcpiOsWaitCommandReady (void) 2170 AcpiOsNotifyCommandComplete (void) 2171 2172 New OS services layer: 2173 osgendbg.c -- Example implementation, and used for AcpiExec 2174 2175Update for Generic Address Space (GAS) support: Although the AccessWidth 2176and/or BitOffset fields of the GAS are not often used, this change now 2177fully supports these fields. This affects the internal support for FADT 2178registers, registers in other ACPI data tables, and the AcpiRead and 2179AcpiWrite public interfaces. Lv Zheng. 2180 2181Sleep support: In order to simplify integration of ACPI sleep for the 2182various host operating systems, a new OSL interface has been introduced. 2183AcpiOsEnterSleep allows the host to perform any required operations 2184before the final write to the sleep control register(s) is performed by 2185ACPICA. Lv Zheng. 2186 2187 New OSL interface: 2188 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 2189 2190 Called from these internal interfaces: 2191 AcpiHwLegacySleep 2192 AcpiHwExtendedSleep 2193 2194EFI support: Added a very small EFI/ACPICA example application. Provides 2195a simple demo for EFI integration, as well as assisting with resolution 2196of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 2197 2198 source/tools/efihello/efihello.c 2199 2200Local C library: Implemented several new functions to enhance ACPICA 2201portability, for environments where these clib functions are not 2202available (such as EFI). Lv Zheng: 2203 putchar 2204 getchar 2205 strpbrk 2206 strtok 2207 memmove 2208 2209Fixed a regression where occasionally a valid resource descriptor was 2210incorrectly detected as invalid at runtime, and a 2211AE_AML_NO_RESOURCE_END_TAG was returned. 2212 2213Fixed a problem with the recently implemented support that enables 2214control method invocations as Target operands to many ASL operators. 2215Warnings of this form: "Needed type [Reference], found [Processor]" were 2216seen at runtime for some method invocations. 2217 2218Example Code and Data Size: These are the sizes for the OS-independent 2219acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2220debug version of the code includes the debug output trace mechanism and 2221has a much larger code and data size. 2222 2223 Current Release: 2224 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 2225 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 2226 Previous Release: 2227 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2228 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2229 2230 22312) iASL Compiler/Disassembler and Tools: 2232 2233Disassembler: Enhanced output by adding the capability to detect and 2234disassemble ASL Switch/Case statements back to the original ASL source 2235code instead of if/else blocks. David Box. 2236 2237AcpiHelp: Split a large file into separate files based upon 2238functionality/purpose. New files are: 2239 ahaml.c 2240 ahasl.c 2241 2242---------------------------------------- 224317 November 2016. Summary of changes for version 20161117: 2244 2245 22461) ACPICA kernel-resident subsystem: 2247 2248Table Manager: Fixed a regression introduced in 20160729, "FADT support 2249cleanup". This was an attempt to remove all references in the source to 2250the FADT version 2, which never was a legal version number. It was 2251skipped because it was an early version of 64-bit support that was 2252eventually abandoned for the current 64-bit support. 2253 2254Interpreter: Fixed a problem where runtime implicit conversion was 2255incorrectly disabled for the ASL operators below. This brings the 2256behavior into compliance with the ACPI specification: 2257 FromBCD 2258 ToBCD 2259 ToDecimalString 2260 ToHexString 2261 ToInteger 2262 ToBuffer 2263 2264Table Manager: Added a new public interface, AcpiPutTable, used to 2265release and free an ACPI table returned by AcpiGetTable and related 2266interfaces. Lv Zheng. 2267 2268Example Code and Data Size: These are the sizes for the OS-independent 2269acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2270debug version of the code includes the debug output trace mechanism and 2271has a much larger code and data size. 2272 2273 Current Release: 2274 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2275 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2276 Previous Release: 2277 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2278 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2279 2280 22812) iASL Compiler/Disassembler and Tools: 2282 2283Disassembler: Fixed a regression for disassembly of Resource Template. 2284Detection of templates in the AML stream missed some types of templates. 2285 2286iASL: Fixed a problem where an Access Size error was returned for the PCC 2287address space when the AccessSize of the GAS register is greater than a 2288DWORD. Hoan Tran. 2289 2290iASL: Implemented several grammar changes for the operators below. These 2291changes are slated for the next version of the ACPI specification: 2292 RefOf - Disallow method invocation as an operand 2293 CondRefOf - Disallow method invocation as an operand 2294 DerefOf - Disallow operands that use the result from operators 2295that 2296 do not return a reference (Changed TermArg to 2297SuperName). 2298 2299iASL: Control method invocations are now allowed for Target operands, as 2300per the ACPI specification. Removed error for using a control method 2301invocation as a Target operand. 2302 2303Disassembler: Improved detection of Resource Templates, Unicode, and 2304Strings within Buffer objects. These subtypes do not contain a specific 2305opcode to indicate the originating ASL code, and they must be detected by 2306other means within the disassembler. 2307 2308iASL: Implemented an optimization improvement for 32-bit ACPI tables 2309(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 2310only after 64-bit to 32-bit truncation. A truncation warning message is 2311still emitted, however. 2312 2313AcpiXtract: Implemented handling for both types of line terminators (LF 2314or CR/LF) so that it can accept AcpiDump output files from any system. 2315Peter Wu. 2316 2317AcpiBin: Added two new options for comparing AML files: 2318 -a: compare and display ALL mismatches 2319 -o: start compare at this offset into the second file 2320 2321---------------------------------------- 232230 September 2016. Summary of changes for version 20160930: 2323 2324 23251) ACPICA kernel-resident subsystem: 2326 2327Fixed a regression in the internal AcpiTbFindTable function where a non 2328AE_OK exception could inadvertently be returned even if the function did 2329not fail. This problem affects the following operators: 2330 DataTableRegion 2331 LoadTable 2332 2333Fixed a regression in the LoadTable operator where a load to any 2334namespace location other than the root no longer worked properly. 2335 2336Increased the maximum loop count value that will result in the 2337AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 2338prevent infinite loops within the AML interpreter and thus the host OS 2339kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 23401,048,575). 2341 2342Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 2343acpixf.h file. This allows hosts to easily configure the maximum loop 2344count at runtime. 2345 2346Removed an illegal character in the strtoul64.c file. This character 2347caused errors with some C compilers. 2348 2349Example Code and Data Size: These are the sizes for the OS-independent 2350acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2351debug version of the code includes the debug output trace mechanism and 2352has a much larger code and data size. 2353 2354 Current Release: 2355 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2356 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2357 Previous Release: 2358 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 2359 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2360 2361 23622) iASL Compiler/Disassembler and Tools: 2363 2364Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 2365the simpler ASL ElseIf keyword. During the conversion, a trailing If 2366block could be lost and missing from the disassembled output. 2367 2368iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 2369the missing rule caused a parse error when using the Index operator as an 2370operand to ObjectType. This construct now compiles properly. Example: 2371 ObjectType(PKG1[4]). 2372 2373iASL: Correctly handle unresolved symbols in the hardware map file (-lm 2374option). Previously, unresolved symbols could cause a protection fault. 2375Such symbols are now marked as unresolved in the map file. 2376 2377iASL: Implemented support to allow control method invocations as an 2378operand to the ASL DeRefOf operator. Example: 2379 DeRefOf(MTH1(Local0)) 2380 2381Disassembler: Improved support for the ToPLD ASL macro. Detection of a 2382possible _PLD buffer now includes examination of both the normal buffer 2383length (16 or 20) as well as the surrounding AML package length. 2384 2385Disassembler: Fixed a problem with the decoding of complex expressions 2386within the Divide operator for ASL+. For the case where both the quotient 2387and remainder targets are specified, the entire statement cannot be 2388disassembled. Previously, the output incorrectly contained a mix of ASL- 2389and ASL+ operators. This mixed statement causes a syntax error when 2390compiled. Example: 2391 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 2392disassembled to: 2393 Divide (INT1 + 6, 128, RSLT, QUOT) 2394 2395iASL/Tools: Added support to process AML and non-AML ACPI tables 2396consistently. For the disassembler and AcpiExec, allow all types of ACPI 2397tables (AML and data tables). For the iASL -e option, allow only AML 2398tables (DSDT/SSDT). 2399 2400---------------------------------------- 240131 August 2016. Summary of changes for version 20160831: 2402 2403 24041) ACPICA kernel-resident subsystem: 2405 2406Improve support for the so-called "module-level code", which is defined 2407to be math, logical and control AML opcodes that appear outside of any 2408control method. This change improves the support by adding more opcodes 2409that can be executed in the manner. Some other issues have been solved, 2410and the ASL grammar changes to support such code under all scope 2411operators (Device, etc.) are complete. Lv Zheng. 2412 2413UEFI support: these OSL functions have been implemented. This is an 2414additional step toward supporting the AcpiExec utility natively (with 2415full hardware access) under UEFI. Marcelo Ferreira. 2416 AcpiOsReadPciConfiguration 2417 AcpiOsWritePciConfiguration 2418 2419Fixed a possible mutex error during control method auto-serialization. Lv 2420Zheng. 2421 2422Updated support for the Generic Address Structure by fully implementing 2423all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 2424Zheng. 2425 2426Updated the return value for the internal _OSI method. Instead of 24270xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 2428for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 2429implementations, and will be reflected and clarified in the next version 2430of the ACPI specification. 2431 2432Implemented two new table events that can be passed to an ACPICA table 2433handler. These events are used to indicate a table installation or 2434uninstallation. These events are used in addition to existed table load 2435and unload events. Lv Zheng. 2436 2437Implemented a cleanup for all internal string-to-integer conversions. 2438Consolidate multiple versions of this functionality and limit possible 2439bases to either 10 or 16 to simplify the code. Adds a new file, 2440utstrtoul64. 2441 2442Cleanup the inclusion order of the various compiler-specific headers. 2443This simplifies build configuration management. The compiler-specific 2444headers are now split out from the host-specific headers. Lv Zheng. 2445 2446Example Code and Data Size: These are the sizes for the OS-independent 2447acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2448debug version of the code includes the debug output trace mechanism and 2449has a much larger code and data size. 2450 2451 Current Release: 2452 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 2453 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2454 2455 24562) iASL Compiler/Disassembler and Tools: 2457 2458iASL/AcpiExec: Added a command line option to display the build date/time 2459of the tool (-vd). This can be useful to verify that the correct version 2460of the tools are being used. 2461 2462AML Debugger: Implemented a new subcommand ("execute predef") to execute 2463all predefined control methods and names within the current namespace. 2464This can be useful for debugging problems with ACPI tables and the ACPI 2465namespace. 2466 2467---------------------------------------- 246829 July 2016. Summary of changes for version 20160729: 2469 2470 24711) ACPICA kernel-resident subsystem: 2472 2473Implemented basic UEFI support for the various ACPICA tools. This 2474includes: 24751) An OSL to implement the various AcpiOs* interfaces on UEFI. 24762) Support to obtain the ACPI tables on UEFI. 24773) Local implementation of required C library functions not available on 2478UEFI. 24794) A front-end (main) function for the tools for UEFI-related 2480initialization. 2481 2482The initial deployment of this support is the AcpiDump utility executing 2483as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 2484Current environments supported are Linux/Unix. MSVC generation is not 2485supported at this time. See the generate/efi/README file for build 2486instructions. Lv Zheng. 2487 2488Future plans include porting the AcpiExec utility to execute natively on 2489the platform with I/O and memory access. This will allow viewing/dump of 2490the platform namespace and native execution of ACPI control methods that 2491access the actual hardware. To fully implement this support, the OSL 2492functions below must be implemented with UEFI interfaces. Any community 2493help in the implementation of these functions would be appreciated: 2494 AcpiOsReadPort 2495 AcpiOsWritePort 2496 AcpiOsReadMemory 2497 AcpiOsWriteMemory 2498 AcpiOsReadPciConfiguration 2499 AcpiOsWritePciConfiguration 2500 2501Restructured and standardized the C library configuration for ACPICA, 2502resulting in the various configuration options below. This includes a 2503global restructuring of the compiler-dependent and platform-dependent 2504include files. These changes may affect the existing platform-dependent 2505configuration files on some hosts. Lv Zheng. 2506 2507The current C library configuration options appear below. For any issues, 2508it may be helpful to examine the existing compiler-dependent and 2509platform-dependent files as examples. Lv Zheng. 2510 25111) Linux kernel: 2512 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2513library. 2514 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 25152) Unix/Windows/BSD applications: 2516 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 2517library. 2518 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 25193) UEFI applications: 2520 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2521library. 2522 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 25234) UEFI applications (EDK2/StdLib): 2524 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 2525 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 2526 2527 2528AML interpreter: "module-level code" support. Allows for execution of so- 2529called "executable" AML code (math/logical operations, etc.) outside of 2530control methods not just at the module level (top level) but also within 2531any scope declared outside of a control method - Scope{}, Device{}, 2532Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 2533 2534Simplified the configuration of the "maximum AML loops" global option by 2535adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 2536modified at runtime. 2537 2538 2539Example Code and Data Size: These are the sizes for the OS-independent 2540acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2541debug version of the code includes the debug output trace mechanism and 2542has a much larger code and data size. 2543 2544 Current Release: 2545 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 2546 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2547 2548 25492) iASL Compiler/Disassembler and Tools: 2550 2551iASL: Add full support for the RASF ACPI table (RAS Features Table). 2552Includes disassembler, data table compiler, and header support. 2553 2554iASL Expand "module-level code" support. Allows for 2555compilation/disassembly of so-called "executable" AML code (math/logical 2556operations, etc.) outside of control methods not just at the module level 2557(top level) but also within any scope declared outside of a control 2558method - Scope{}, Device{}, Processor{}, PowerResource{}, and 2559ThermalZone{}. 2560 2561AcpiDump: Added support for dumping all SSDTs on newer versions of 2562Windows. These tables are now easily available -- SSDTs are not available 2563through the registry on older versions. 2564 2565---------------------------------------- 256627 May 2016. Summary of changes for version 20160527: 2567 2568 25691) ACPICA kernel-resident subsystem: 2570 2571Temporarily reverted the new arbitrary bit length/alignment support in 2572AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 2573a number of regressions with the new code that need to be fully resolved 2574and tested before this support can be finally integrated into ACPICA. 2575Apologies for any inconveniences these issues may have caused. 2576 2577The ACPI message macros are not configurable (ACPI_MSG_ERROR, 2578ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 2579and ACPI_MSG_BIOS_WARNING). Lv Zheng. 2580 2581Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 2582option. Adds a new return macro, return_STR. Junk-uk Kim. 2583 2584Example Code and Data Size: These are the sizes for the OS-independent 2585acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2586debug version of the code includes the debug output trace mechanism and 2587has a much larger code and data size. 2588 2589 Current Release: 2590 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 2591 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2592 Previous Release: 2593 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2594 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 2595 2596---------------------------------------- 259722 April 2016. Summary of changes for version 20160422: 2598 25991) ACPICA kernel-resident subsystem: 2600 2601Fixed a regression in the GAS (generic address structure) arbitrary bit 2602support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 2603and incorrect return values. Lv Zheng. ACPICA BZ 1270. 2604 2605ACPI 6.0: Added support for new/renamed resource macros. One new argument 2606was added to each of these macros, and the original name has been 2607deprecated. The AML disassembler will always disassemble to the new 2608names. Support for the new macros was added to iASL, disassembler, 2609resource manager, and the acpihelp utility. ACPICA BZ 1274. 2610 2611 I2cSerialBus -> I2cSerialBusV2 2612 SpiSerialBus -> SpiSerialBusV2 2613 UartSerialBus -> UartSerialBusV2 2614 2615ACPI 6.0: Added support for a new integer field that was appended to the 2616package object returned by the _BIX method. This adds iASL compile-time 2617and AML runtime error checking. ACPICA BZ 1273. 2618 2619ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 2620Subspace Type2" (Headers, Disassembler, and data table compiler). 2621 2622Example Code and Data Size: These are the sizes for the OS-independent 2623acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2624debug version of the code includes the debug output trace mechanism and 2625has a much larger code and data size. 2626 2627 Current Release: 2628 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2629 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2630 Previous Release: 2631 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2632 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2633 2634 26352) iASL Compiler/Disassembler and Tools: 2636 2637iASL: Implemented an ASL grammar extension to allow/enable executable 2638"module-level code" to be created and executed under the various 2639operators that create new scopes. This type of AML code is already 2640supported in all known AML interpreters, and the grammar change will 2641appear in the next version of the ACPI specification. Simplifies the 2642conditional runtime creation of named objects under these object types: 2643 2644 Device 2645 PowerResource 2646 Processor 2647 Scope 2648 ThermalZone 2649 2650iASL: Implemented a new ASL extension, a "For" loop macro to add greater 2651ease-of-use to the ASL language. The syntax is similar to the 2652corresponding C operator, and is implemented with the existing AML While 2653opcode -- thus requiring no changes to existing AML interpreters. 2654 2655 For (Initialize, Predicate, Update) {TermList} 2656 2657Grammar: 2658 ForTerm := 2659 For ( 2660 Initializer // Nothing | TermArg => ComputationalData 2661 Predicate // Nothing | TermArg => ComputationalData 2662 Update // Nothing | TermArg => ComputationalData 2663 ) {TermList} 2664 2665 2666iASL: The _HID/_ADR detection and validation has been enhanced to search 2667under conditionals in order to allow these objects to be conditionally 2668created at runtime. 2669 2670iASL: Fixed several issues with the constant folding feature. The 2671improvement allows better detection and resolution of statements that can 2672be folded at compile time. ACPICA BZ 1266. 2673 2674iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 2675conversion to the ASL ElseIf operator where incorrect ASL code could be 2676generated. 2677 2678iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 2679sometimes an extra (and extraneous) set of parentheses were emitted for 2680some combinations of operators. Although this did not cause any problems 2681with recompilation of the disassembled code, it made the code more 2682difficult to read. David Box. ACPICA BZ 1231. 2683 2684iASL: Changed to ignore the unreferenced detection for predefined names 2685of resource descriptor elements, when the resource descriptor is 2686created/defined within a control method. 2687 2688iASL: Disassembler: Fix a possible fault with externally declared Buffer 2689objects. 2690 2691---------------------------------------- 269218 March 2016. Summary of changes for version 20160318: 2693 26941) ACPICA kernel-resident subsystem: 2695 2696Added support for arbitrary bit lengths and bit offsets for registers 2697defined by the Generic Address Structure. Previously, only aligned bit 2698lengths of 8/16/32/64 were supported. This was sufficient for many years, 2699but recently some machines have been seen that require arbitrary bit- 2700level support. ACPICA BZ 1240. Lv Zheng. 2701 2702Fixed an issue where the \_SB._INI method sometimes must be evaluated 2703before any _REG methods are evaluated. Lv Zheng. 2704 2705Implemented several changes related to ACPI table support 2706(Headers/Disassembler/TableCompiler): 2707NFIT: For ACPI 6.1, updated to add some additional new fields and 2708constants. 2709FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 27106). 2711DMAR: Added new constants per the 10/2014 DMAR spec. 2712IORT: Added new subtable per the 10/2015 IORT spec. 2713HEST: For ACPI 6.1, added new constants and new subtable. 2714DBG2: Added new constants per the 12/2015 DBG2 spec. 2715FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 2716ACPICA BZ 1249. 2717ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 2718 2719Updated header support for the DMAR table to match the current version of 2720the related spec. 2721 2722Added extensions to the ASL Concatenate operator to allow any ACPI object 2723to be passed as an operand. Any object other than Integer/String/Buffer 2724simply returns a string containing the object type. This extends the 2725usefulness of the Printf macros. Previously, Concatenate would abort the 2726control method if a non-data object was encountered. 2727 2728ACPICA source code: Deployed the C "const" keyword across the source code 2729where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 2730 2731Example Code and Data Size: These are the sizes for the OS-independent 2732acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2733debug version of the code includes the debug output trace mechanism and 2734has a much larger code and data size. 2735 2736 Current Release: 2737 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2738 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2739 Previous Release: 2740 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2741 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2742 2743 27442) iASL Compiler/Disassembler and Tools: 2745 2746iASL/Disassembler: Improved the heuristic used to determine the number of 2747arguments for an externally defined control method (a method in another 2748table). Although this is an improvement, there is no deterministic way to 2749"guess" the number of method arguments. Only the ACPI 6.0 External opcode 2750will completely solve this problem as it is deployed (automatically) in 2751newer BIOS code. 2752 2753iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 2754statements that could cause errors when the disassembled file is 2755compiled. ACPICA BZ 1243. David Box. 2756 2757iASL: Fixed a regression caused by the merger of the two versions of the 2758local strtoul64. Because of a dependency on a global variable, strtoul64 2759could return an error for integers greater than a 32-bit value. ACPICA BZ 27601260. 2761 2762iASL: Fixed a regression where a fault could occur for an ASL Return 2763statement if it invokes a control method that is not resolved. ACPICA BZ 27641264. 2765 2766AcpiXtract: Improved input file validation: detection of binary files and 2767non-acpidump text files. 2768 2769---------------------------------------- 277012 February 2016. Summary of changes for version 20160212: 2771 27721) ACPICA kernel-resident subsystem: 2773 2774Implemented full support for the ACPI 6.1 specification (released in 2775January). This version of the specification is available at: 2776http://www.uefi.org/specifications 2777 2778Only a relatively small number of changes were required in ACPICA to 2779support ACPI 6.1, in these areas: 2780- New predefined names 2781- New _HID values 2782- A new subtable for HEST 2783- A few other header changes for new values 2784 2785Ensure \_SB_._INI is executed before any _REG methods are executed. There 2786appears to be existing BIOS code that relies on this behavior. Lv Zheng. 2787 2788Reverted a change made in version 20151218 which enabled method 2789invocations to be targets of various ASL operators (SuperName and Target 2790grammar elements). While the new behavior is supported by the ACPI 2791specification, other AML interpreters do not support this behavior and 2792never will. The ACPI specification will be updated for ACPI 6.2 to remove 2793this support. Therefore, the change was reverted to the original ACPICA 2794behavior. 2795 2796ACPICA now supports the GCC 6 compiler. 2797 2798Current Release: (Note: build changes increased sizes) 2799 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2800 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2801Previous Release: 2802 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2803 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 2804 2805 28062) iASL Compiler/Disassembler and Tools: 2807 2808Completed full support for the ACPI 6.0 External() AML opcode. The 2809compiler emits an external AML opcode for each ASL External statement. 2810This opcode is used by the disassembler to assist with the disassembly of 2811external control methods by specifying the required number of arguments 2812for the method. AML interpreters do not use this opcode. To ensure that 2813interpreters do not even see the opcode, a block of one or more external 2814opcodes is surrounded by an "If(0)" construct. As this feature becomes 2815commonly deployed in BIOS code, the ability of disassemblers to correctly 2816disassemble AML code will be greatly improved. David Box. 2817 2818iASL: Implemented support for an optional cross-reference output file. 2819The -lx option will create a the cross-reference file with the suffix 2820"xrf". Three different types of cross-reference are created in this file: 2821- List of object references made from within each control method 2822- Invocation (caller) list for each user-defined control method 2823- List of references to each non-method object in the namespace 2824 2825iASL: Method invocations as ASL Target operands are now disallowed and 2826flagged as errors in preparation for ACPI 6.2 (see the description of the 2827problem above). 2828 2829---------------------------------------- 28308 January 2016. Summary of changes for version 20160108: 2831 28321) ACPICA kernel-resident subsystem: 2833 2834Updated all ACPICA copyrights and signons to 2016: Added the 2016 2835copyright to all source code module headers and utility/tool signons. 2836This includes the standard Linux dual-license header. This affects 2837virtually every file in the ACPICA core subsystem, iASL compiler, all 2838ACPICA utilities, and the ACPICA test suite. 2839 2840Fixed a regression introduced in version 20151218 concerning the 2841execution of so-called module-level ASL/AML code. Namespace objects 2842created under a module-level If() construct were not properly/fully 2843entered into the namespace and could cause an interpreter fault when 2844accessed. 2845 2846Example Code and Data Size: These are the sizes for the OS-independent 2847acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2848debug version of the code includes the debug output trace mechanism and 2849has a much larger code and data size. 2850 2851Current Release: 2852 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2853 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 2854 Previous Release: 2855 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2856 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2857 2858 28592) iASL Compiler/Disassembler and Tools: 2860 2861Fixed a problem with the compilation of the GpioIo and GpioInt resource 2862descriptors. The _PIN field name was incorrectly defined to be an array 2863of 32-bit values, but the _PIN values are in fact 16 bits each. This 2864would cause incorrect bit width warnings when using Word (16-bit) fields 2865to access the descriptors. 2866 2867 2868---------------------------------------- 286918 December 2015. Summary of changes for version 20151218: 2870 28711) ACPICA kernel-resident subsystem: 2872 2873Implemented per-AML-table execution of "module-level code" as individual 2874ACPI tables are loaded into the namespace during ACPICA initialization. 2875In other words, any module-level code within an AML table is executed 2876immediately after the table is loaded, instead of batched and executed 2877after all of the tables have been loaded. This provides compatibility 2878with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 2879David Box. 2880 2881To fully support the feature above, the default operation region handlers 2882for the SystemMemory, SystemIO, and PCI_Config address spaces are now 2883installed before any ACPI tables are loaded. This enables module-level 2884code to access these address spaces during the table load and module- 2885level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 2886Box. 2887 2888Implemented several changes to the internal _REG support in conjunction 2889with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 2890utilities for the changes above. Although these tools were changed, host 2891operating systems that simply use the default handlers for SystemMemory, 2892SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 2893 2894For example, in the code below, DEV1 is conditionally added to the 2895namespace by the DSDT via module-level code that accesses an operation 2896region. The SSDT references DEV1 via the Scope operator. DEV1 must be 2897created immediately after the DSDT is loaded in order for the SSDT to 2898successfully reference DEV1. Previously, this code would cause an 2899AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 2900fully supported by ACPICA. 2901 2902 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 2903 { 2904 OperationRegion (OPR1, SystemMemory, 0x400, 32) 2905 Field (OPR1, AnyAcc, NoLock, Preserve) 2906 { 2907 FLD1, 1 2908 } 2909 If (FLD1) 2910 { 2911 Device (\DEV1) 2912 { 2913 } 2914 } 2915 } 2916 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 2917 { 2918 External (\DEV1, DeviceObj) 2919 Scope (\DEV1) 2920 { 2921 } 2922 } 2923 2924Fixed an AML interpreter problem where control method invocations were 2925not handled correctly when the invocation was itself a SuperName argument 2926to another ASL operator. In these cases, the method was not invoked. 2927ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 2928argument: 2929 Store 2930 Acquire, Wait 2931 CondRefOf, RefOf 2932 Decrement, Increment 2933 Load, Unload 2934 Notify 2935 Signal, Release, Reset 2936 SizeOf 2937 2938Implemented automatic String-to-ObjectReference conversion support for 2939packages returned by predefined names (such as _DEP). A common BIOS error 2940is to add double quotes around an ObjectReference namepath, which turns 2941the reference into an unexpected string object. This support detects the 2942problem and corrects it before the package is returned to the caller that 2943invoked the method. Lv Zheng. 2944 2945Implemented extensions to the Concatenate operator. Concatenate now 2946accepts any type of object, it is not restricted to simply 2947Integer/String/Buffer. For objects other than these 3 basic data types, 2948the argument is treated as a string containing the name of the object 2949type. This expands the utility of Concatenate and the Printf/Fprintf 2950macros. ACPICA BZ 1222. 2951 2952Cleaned up the output of the ASL Debug object. The timer() value is now 2953optional and no longer emitted by default. Also, the basic data types of 2954Integer/String/Buffer are simply emitted as their values, without a data 2955type string -- since the data type is obvious from the output. ACPICA BZ 29561221. 2957 2958Example Code and Data Size: These are the sizes for the OS-independent 2959acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2960debug version of the code includes the debug output trace mechanism and 2961has a much larger code and data size. 2962 2963 Current Release: 2964 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2965 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2966 Previous Release: 2967 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2968 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2969 2970 29712) iASL Compiler/Disassembler and Tools: 2972 2973iASL: Fixed some issues with the ASL Include() operator. This operator 2974was incorrectly defined in the iASL parser rules, causing a new scope to 2975be opened for the code within the include file. This could lead to 2976several issues, including allowing ASL code that is technically illegal 2977and not supported by AML interpreters. Note, this does not affect the 2978related #include preprocessor operator. ACPICA BZ 1212. 2979 2980iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 2981operator is essentially an ASL macro since there is no AML opcode 2982associated with it. The code emitted by the iASL compiler for ElseIf is 2983an Else opcode followed immediately by an If opcode. The disassembler 2984will now emit an ElseIf if it finds an Else immediately followed by an 2985If. This simplifies the decoded ASL, especially for deeply nested 2986If..Else and large Switch constructs. Thus, the disassembled code more 2987closely follows the original source ASL. ACPICA BZ 1211. Example: 2988 2989 Old disassembly: 2990 Else 2991 { 2992 If (Arg0 == 0x02) 2993 { 2994 Local0 = 0x05 2995 } 2996 } 2997 2998 New disassembly: 2999 ElseIf (Arg0 == 0x02) 3000 { 3001 Local0 = 0x05 3002 } 3003 3004AcpiExec: Added support for the new module level code behavior and the 3005early region installation. This required a small change to the 3006initialization, since AcpiExec must install its own operation region 3007handlers. 3008 3009AcpiExec: Added support to make the debug object timer optional. Default 3010is timer disabled. This cleans up the debug object output -- the timer 3011data is rarely used. 3012 3013AcpiExec: Multiple ACPI tables are now loaded in the order that they 3014appear on the command line. This can be important when there are 3015interdependencies/references between the tables. 3016 3017iASL/Templates. Add support to generate template files with multiple 3018SSDTs within a single output file. Also added ommand line support to 3019specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 30201223, 1225. 3021 3022 3023---------------------------------------- 302424 November 2015. Summary of changes for version 20151124: 3025 30261) ACPICA kernel-resident subsystem: 3027 3028Fixed a possible regression for a previous update to FADT handling. The 3029FADT no longer has a fixed table ID, causing some issues with code that 3030was hardwired to a specific ID. Lv Zheng. 3031 3032Fixed a problem where the method auto-serialization could interfere with 3033the current SyncLevel. This change makes the auto-serialization support 3034transparent to the SyncLevel support and management. 3035 3036Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3037interface is intended for early access to the namespace during the 3038initial namespace device discovery walk. The _SUB method has been seen to 3039access operation regions in some cases, causing errors because the 3040operation regions are not fully initialized. 3041 3042AML Debugger: Fixed some issues with the terminate/quit/exit commands 3043that can cause faults. Lv Zheng. 3044 3045AML Debugger: Add thread ID support so that single-step mode only applies 3046to the AML Debugger thread. This prevents runtime errors within some 3047kernels. Lv Zheng. 3048 3049Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3050methods that are invoked by this interface are optional, removed warnings 3051emitted for the case where one or more of these methods do not exist. 3052ACPICA BZ 1208, original change by Prarit Bhargava. 3053 3054Made a major pass through the entire ACPICA source code base to 3055standardize formatting that has diverged a bit over time. There are no 3056functional changes, but this will of course cause quite a few code 3057differences from the previous ACPICA release. 3058 3059Example Code and Data Size: These are the sizes for the OS-independent 3060acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3061debug version of the code includes the debug output trace mechanism and 3062has a much larger code and data size. 3063 3064 Current Release: 3065 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3066 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3067 Previous Release: 3068 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3069 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3070 3071 30722) iASL Compiler/Disassembler and Tools: 3073 3074iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3075definition blocks within a single ASL file and the resulting AML file. 3076Support for this type of file was also added to the various tools that 3077use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3078example code below shows two definition blocks within the same file: 3079 3080 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 30810x12345678) 3082 { 3083 } 3084 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3085 { 3086 } 3087 3088iASL: Enhanced typechecking for the Name() operator. All expressions for 3089the value of the named object must be reduced/folded to a single constant 3090at compile time, as per the ACPI specification (the AML definition of 3091Name()). 3092 3093iASL: Fixed some code indentation issues for the -ic and -ia options (C 3094and assembly headers). Now all emitted code correctly begins in column 1. 3095 3096iASL: Added an error message for an attempt to open a Scope() on an 3097object defined in an SSDT. The DSDT is always loaded into the namespace 3098first, so any attempt to open a Scope on an SSDT object will fail at 3099runtime. 3100 3101 3102---------------------------------------- 310330 September 2015. Summary of changes for version 20150930: 3104 31051) ACPICA kernel-resident subsystem: 3106 3107Debugger: Implemented several changes and bug fixes to assist support for 3108the in-kernel version of the AML debugger. Lv Zheng. 3109- Fix the "predefined" command for in-kernel debugger. 3110- Do not enter debug command loop for the help and version commands. 3111- Disallow "execute" command during execution/single-step of a method. 3112 3113Interpreter: Updated runtime typechecking for all operators that have 3114target operands. The operand is resolved and validated that it is legal. 3115For example, the target cannot be a non-data object such as a Device, 3116Mutex, ThermalZone, etc., as per the ACPI specification. 3117 3118Debugger: Fixed the double-mutex user I/O handshake to work when local 3119deadlock detection is enabled. 3120 3121Debugger: limited display of method locals and arguments (LocalX and 3122ArgX) to only those that have actually been initialized. This prevents 3123lines of extraneous output. 3124 3125Updated the definition of the NFIT table to correct the bit polarity of 3126one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3127 3128Example Code and Data Size: These are the sizes for the OS-independent 3129acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3130debug version of the code includes the debug output trace mechanism and 3131has a much larger code and data size. 3132 3133 Current Release: 3134 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3135 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3136 Previous Release: 3137 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3138 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3139 3140 31412) iASL Compiler/Disassembler and Tools: 3142 3143iASL: Improved the compile-time typechecking for operands of many of the 3144ASL operators: 3145 3146-- Added an option to disable compiler operand/operator typechecking (- 3147ot). 3148 3149-- For the following operators, the TermArg operands are now validated 3150when possible to be Integer data objects: BankField, OperationRegion, 3151DataTableRegion, Buffer, and Package. 3152 3153-- Store (Source, Target): Both the source and target operands are 3154resolved and checked that the operands are both legal. For example, 3155neither operand can be a non-data object such as a Device, Mutex, 3156ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 3157operator can be used to store an object to any type of target object. 3158 3159-- Store (Source, Target): If the source is a Package object, the target 3160must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 3161is a Package, the source must also be a Package. 3162 3163-- Store (Source, Target): A warning is issued if the source and target 3164resolve to the identical named object. 3165 3166-- Store (Source, <method invocation>): An error is generated for the 3167target method invocation, as this construct is not supported by the AML 3168interpreter. 3169 3170-- For all ASL math and logic operators, the target operand must be a 3171data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 3172includes the function return value also. 3173 3174-- External declarations are also included in the typechecking where 3175possible. External objects defined using the UnknownObj keyword cannot be 3176typechecked, however. 3177 3178iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 3179operator: 3180- Legacy code: Index(PKG1, 3) 3181- New ASL+ code: PKG1[3] 3182This completes the ACPI 6.0 ASL+ support as it was the only operator not 3183supported. 3184 3185iASL: Fixed the file suffix for the preprocessor output file (.i). Two 3186spaces were inadvertently appended to the filename, causing file access 3187and deletion problems on some systems. 3188 3189ASL Test Suite (ASLTS): Updated the master makefile to generate all 3190possible compiler output files when building the test suite -- thus 3191exercising these features of the compiler. These files are automatically 3192deleted when the test suite exits. 3193 3194 3195---------------------------------------- 319618 August 2015. Summary of changes for version 20150818: 3197 31981) ACPICA kernel-resident subsystem: 3199 3200Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 3201Zheng. ACPICA BZ 1186. 3202 3203Completed development to ensure that the ACPICA Disassembler and Debugger 3204are fully standalone components of ACPICA. Removed cross-component 3205dependences. Lv Zheng. 3206 3207The max-number-of-AML-loops is now runtime configurable (previously was 3208compile-time only). This is essentially a loop timeout to force-abort 3209infinite AML loops. ACPCIA BZ 1192. 3210 3211Debugger: Cleanup output to dump ACPI names and namepaths without any 3212trailing underscores. Lv Zheng. ACPICA BZ 1135. 3213 3214Removed unnecessary conditional compilations across the Debugger and 3215Disassembler components where entire modules could be left uncompiled. 3216 3217The aapits test is deprecated and has been removed from the ACPICA git 3218tree. The test has never been completed and has not been maintained, thus 3219becoming rather useless. ACPICA BZ 1015, 794. 3220 3221A batch of small changes to close bugzilla and other reports: 3222- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 3223- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 3224- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 3225- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 3226Moore. 3227- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 3228ACPICA BZ 1184. 3229- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 3230operators. 3231- Debugger: Split debugger initialization/termination interfaces. Lv 3232Zheng. 3233- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 3234identification. 3235- AcpiExec: Add debug message during _REG method phase during table 3236load/init. 3237- AcpiNames: Fix a regression where some output was missing and no longer 3238emitted. 3239- Debugger: General cleanup and simplification. Lv Zheng. 3240- Disassembler: Cleanup use of several global option variables. Lv Zheng. 3241 3242Example Code and Data Size: These are the sizes for the OS-independent 3243acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3244debug version of the code includes the debug output trace mechanism and 3245has a much larger code and data size. 3246 3247 Current Release: 3248 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3249 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3250 Previous Release: 3251 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3252 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3253 3254 32552) iASL Compiler/Disassembler and Tools: 3256 3257AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 3258were not handled properly and caused load errors. Now, properly invoke 3259and use the ACPICA auto-reallocate mechanism for ACPI table data 3260structures. ACPICA BZ 1188 3261 3262AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 3263BZ 1190. 3264 3265AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 3266AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 3267executed during initialization. ACPICA BZ 1187, 1189. 3268 3269iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 3270that corresponds to each disassembled ASL statement, to simplify 3271debugging. ACPICA BZ 1191. 3272 3273Debugger: Add option to the "objects" command to display a summary of the 3274current namespace objects (Object type and count). This is displayed if 3275the command is entered with no arguments. 3276 3277AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 3278 3279 3280---------------------------------------- 328117 July 2015. Summary of changes for version 20150717: 3282 32831) ACPICA kernel-resident subsystem: 3284 3285Improved the partitioning between the Debugger and Disassembler 3286components. This allows the Debugger to be used standalone within kernel 3287code without the Disassembler (which is used for single stepping also). 3288This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 3289 3290Debugger: Implemented a new command to trace the execution of control 3291methods (Trace). This is especially useful for the in-kernel version of 3292the debugger when file I/O may not be available for method trace output. 3293See the ACPICA reference for more information. Lv Zheng. 3294 3295Moved all C library prototypes (used for the local versions of these 3296functions when requested) to a new header, acclib.h 3297Cleaned up the use of non-ANSI C library functions. These functions are 3298implemented locally in ACPICA. Moved all such functions to a common 3299source file, utnonansi.c 3300 3301Debugger: Fixed a problem with the "!!" command (get last command 3302executed) where the debugger could enter an infinite loop and eventually 3303crash. 3304 3305Removed the use of local macros that were used for some of the standard C 3306library functions to automatically cast input parameters. This mostly 3307affected the is* functions where the input parameter is defined to be an 3308int. This required a few modifications to the main ACPICA source code to 3309provide casting for these functions and eliminate possible compiler 3310warnings for these parameters. 3311 3312Across the source code, added additional status/error checking to resolve 3313issues discovered by static source code analysis tools such as Coverity. 3314 3315Example Code and Data Size: These are the sizes for the OS-independent 3316acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3317debug version of the code includes the debug output trace mechanism and 3318has a much larger code and data size. 3319 3320 Current Release: 3321 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3322 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3323 Previous Release: 3324 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3325 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3326 3327 33282) iASL Compiler/Disassembler and Tools: 3329 3330iASL: Fixed a regression where the device map file feature no longer 3331worked properly when used in conjunction with the disassembler. It only 3332worked properly with the compiler itself. 3333 3334iASL: Implemented a new warning for method LocalX variables that are set 3335but never used (similar to a C compiler such as gcc). This also applies 3336to ArgX variables that are not defined by the parent method, and are 3337instead (legally) used as local variables. 3338 3339iASL/Preprocessor: Finished the pass-through of line numbers from the 3340preprocessor to the compiler. This ensures that compiler errors/warnings 3341have the correct original line numbers and filenames, regardless of any 3342#include files. 3343 3344iASL/Preprocessor: Fixed a couple of issues with comment handling and the 3345pass-through of comments to the preprocessor output file (which becomes 3346the compiler input file). Also fixed a problem with // comments that 3347appear after a math expression. 3348 3349iASL: Added support for the TCPA server table to the table compiler and 3350template generator. (The client table was already previously supported) 3351 3352iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 3353identify the iASL compiler. 3354 3355Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 3356multiple times. The new names are ACPI_SIGN_NEGATIVE and 3357ACPI_SIGN_POSITIVE. 3358 3359AcpiHelp: Update to expand help messages for the iASL preprocessor 3360directives. 3361 3362 3363---------------------------------------- 336419 June 2015. Summary of changes for version 20150619: 3365 3366Two regressions in version 20150616 have been addressed: 3367 3368Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 3369etc.) This update changes ACPICA to only use the standard headers for 3370functions, or the prototypes for the local versions of the C library 3371functions. Across the source code, this required some additional casts 3372for some Clib invocations for portability. Moved all local prototypes to 3373a new file, acclib.h 3374 3375Fixes several problems with recent changes to the handling of the FACS 3376table that could cause some systems not to boot. 3377 3378 3379---------------------------------------- 338016 June 2015. Summary of changes for version 20150616: 3381 3382 33831) ACPICA kernel-resident subsystem: 3384 3385Across the entire ACPICA source code base, the various macros for the C 3386library functions (such as ACPI_STRLEN, etc.) have been removed and 3387replaced by the standard C library names (strlen, etc.) The original 3388purpose for these macros is no longer applicable. This simplification 3389reduces the number of macros used in the ACPICA source code 3390significantly, improving readability and maintainability. 3391 3392Implemented support for a new ACPI table, the OSDT. This table, the 3393"override" SDT, can be loaded directly by the host OS at boot time. It 3394enables the replacement of existing namespace objects that were installed 3395via the DSDT and/or SSDTs. The primary purpose for this is to replace 3396buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 3397for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 3398Moore. 3399 3400Added support for systems with (improperly) two FACS tables -- a "32-bit" 3401table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 3402X field). This change will support both automatically. There continues to 3403be systems found with this issue. This support requires a change to the 3404AcpiSetFirmwareWakingVector interface. Also, a public global variable has 3405been added to allow the host to select which FACS is desired 3406(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 3407details Lv Zheng. 3408 3409Added a new feature to allow for systems that do not contain an FACS. 3410Although this is already supported on hardware-reduced platforms, the 3411feature has been extended for all platforms. The reasoning is that we do 3412not want to abort the entire ACPICA initialization just because the 3413system is seriously buggy and has no FACS. 3414 3415Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 3416not correctly transcribed from the ACPI specification in ACPICA version 341720150515. 3418 3419Implemented support for the _CLS object in the AcpiGetObjectInfo external 3420interface. 3421 3422Updated the definitions of the TCPA and TPM2 ACPI tables to the more 3423recent TCG ACPI Specification, December 14, 2014. Table disassembler and 3424compiler also updated. Note: The TCPA "server" table is not supported by 3425the disassembler/table-compiler at this time. 3426 3427ACPI 6.0: Added definitions for the new GIC version field in the MADT. 3428 3429Example Code and Data Size: These are the sizes for the OS-independent 3430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3431debug version of the code includes the debug output trace mechanism and 3432has a much larger code and data size. 3433 3434 Current Release: 3435 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3436 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3437 Previous Release: 3438 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3439 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3440 3441 34422) iASL Compiler/Disassembler and Tools: 3443 3444Disassembler: Fixed a problem with the new symbolic operator disassembler 3445where incorrect ASL code could be emitted in some cases for the "non- 3446commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 3447ShiftRight. The actual problem cases seem to be rather unusual in common 3448ASL code, however. David Box. 3449 3450Modified the linux version of acpidump to obtain ACPI tables from not 3451just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 3452Zheng. 3453 3454iASL: Fixed a problem where the user preprocessor output file (.i) 3455contained extra data that was not expected. The compiler was using this 3456file as a temporary file and passed through #line directives in order to 3457keep compiler error messages in sync with the input file and line number 3458across multiple include files. The (.i) is no longer a temporary file as 3459the compiler uses a new, different file for the original purpose. 3460 3461iASL: Fixed a problem where comments within the original ASL source code 3462file were not passed through to the preprocessor output file, nor any 3463listing files. 3464 3465iASL: Fixed some issues for the handling of the "#include" preprocessor 3466directive and the similar (but not the same) "Include" ASL operator. 3467 3468iASL: Add support for the new OSDT in both the disassembler and compiler. 3469 3470iASL: Fixed a problem with the constant folding support where a Buffer 3471object could be incorrectly generated (incorrectly formed) during a 3472conversion to a Store() operator. 3473 3474AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 3475description text for the _REV predefined name. _REV now permanently 3476returns 2, as per the ACPI 6.0 specification. 3477 3478Debugger: Enhanced the output of the Debug ASL object for references 3479produced by the Index operator. For Buffers and strings, only output the 3480actual byte pointed to by the index. For packages, only print the single 3481package element decoded by the index. Previously, the entire 3482buffer/string/package was emitted. 3483 3484iASL/Table-compiler: Fixed a regression where the "generic" data types 3485were no longer recognized, causing errors. 3486 3487 3488---------------------------------------- 348915 May 2015. Summary of changes for version 20150515: 3490 3491This release implements most of ACPI 6.0 as described below. 3492 34931) ACPICA kernel-resident subsystem: 3494 3495Implemented runtime argument checking and return value checking for all 3496new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 3497_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 3498 3499Example Code and Data Size: These are the sizes for the OS-independent 3500acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3501debug version of the code includes the debug output trace mechanism and 3502has a much larger code and data size. 3503 3504 Current Release: 3505 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3506 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3507 Previous Release: 3508 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3509 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3510 3511 35122) iASL Compiler/Disassembler and Tools: 3513 3514iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 3515names (argument count validation and return value typechecking.) 3516 3517iASL disassembler and table compiler: implemented support for all new 3518ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 3519 3520iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 3521tables: FADT, MADT. 3522 3523iASL preprocessor: Added a new directive to enable inclusion of binary 3524blobs into ASL code. The new directive is #includebuffer. It takes a 3525binary file as input and emits a named ascii buffer object into the ASL 3526code. 3527 3528AcpiHelp: Added support for all new ACPI 6.0 predefined names. 3529 3530AcpiHelp: Added a new option, -d, to display all iASL preprocessor 3531directives. 3532 3533AcpiHelp: Added a new option, -t, to display all known/supported ACPI 3534tables. 3535 3536 3537---------------------------------------- 353810 April 2015. Summary of changes for version 20150410: 3539 3540Reverted a change introduced in version 20150408 that caused 3541a regression in the disassembler where incorrect operator 3542symbols could be emitted. 3543 3544 3545---------------------------------------- 354608 April 2015. Summary of changes for version 20150408: 3547 3548 35491) ACPICA kernel-resident subsystem: 3550 3551Permanently set the return value for the _REV predefined name. It now 3552returns 2 (was 5). This matches other ACPI implementations. _REV will be 3553deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 3554for ACPI 2.0 and later. It should never be used to differentiate or 3555identify operating systems. 3556 3557Added the "Windows 2015" string to the _OSI support. ACPICA will now 3558return TRUE to a query with this string. 3559 3560Fixed several issues with the local version of the printf function. 3561 3562Added the C99 compiler option (-std=c99) to the Unix makefiles. 3563 3564 Current Release: 3565 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 3566 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 3567 Previous Release: 3568 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3569 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3570 3571 35722) iASL Compiler/Disassembler and Tools: 3573 3574iASL: Implemented an enhancement to the constant folding feature to 3575transform the parse tree to a simple Store operation whenever possible: 3576 Add (2, 3, X) ==> is converted to: Store (5, X) 3577 X = 2 + 3 ==> is converted to: Store (5, X) 3578 3579Updated support for the SLIC table (Software Licensing Description Table) 3580in both the Data Table compiler and the disassembler. The SLIC table 3581support now conforms to "Microsoft Software Licensing Tables (SLIC and 3582MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 3583following the ACPI header is now defined to be "Proprietary Data", and as 3584such, can only be entered or displayed as a hex data block. 3585 3586Implemented full support for the MSDM table as described in the document 3587above. Note: The format of MSDM is similar to SLIC. Any MSDM data 3588following the ACPI header is defined to be "Proprietary Data", and can 3589only be entered or displayed as a hex data block. 3590 3591Implemented the -Pn option for the iASL Table Compiler (was only 3592implemented for the ASL compiler). This option disables the iASL 3593preprocessor. 3594 3595Disassembler: For disassembly of Data Tables, added a comment field 3596around the Ascii equivalent data that is emitted as part of the "Raw 3597Table Data" block. This prevents the iASL Preprocessor from possible 3598confusion if/when the table is compiled. 3599 3600Disassembler: Added an option (-df) to force the disassembler to assume 3601that the table being disassembled contains valid AML. This feature is 3602useful for disassembling AML files that contain ACPI signatures other 3603than DSDT or SSDT (such as OEMx or other signatures). 3604 3605Changes for the EFI version of the tools: 36061) Fixed a build error/issue 36072) Fixed a cast warning 3608 3609iASL: Fixed a path issue with the __FILE__ operator by making the 3610directory prefix optional within the internal SplitInputFilename 3611function. 3612 3613Debugger: Removed some unused global variables. 3614 3615Tests: Updated the makefile for proper generation of the AAPITS suite. 3616 3617 3618---------------------------------------- 361904 February 2015. Summary of changes for version 20150204: 3620 3621ACPICA kernel-resident subsystem: 3622 3623Updated all ACPICA copyrights and signons to 2014. Added the 2014 3624copyright to all module headers and signons, including the standard Linux 3625header. This affects virtually every file in the ACPICA core subsystem, 3626iASL compiler, all ACPICA utilities, and the test suites. 3627 3628Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 3629A raw gpe handling mechanism was created to allow better handling of GPE 3630storms that aren't easily managed by the normal handler. The raw handler 3631allows disabling/renabling of the the GPE so that interrupt storms can be 3632avoided in cases where events cannot be timely serviced. In this 3633scenario, handlers should use the AcpiSetGpe() API to disable/enable the 3634GPE. This API will leave the reference counts undisturbed, thereby 3635preventing unintentional clearing of the GPE when the intent in only to 3636temporarily disable it. Raw handlers allow enabling and disabling of a 3637GPE by removing GPE register locking. As such, raw handlers much provide 3638their own locks while using GPE API's to protect access to GPE data 3639structures. 3640Lv Zheng 3641 3642Events: Always modify GPE registers under the GPE lock. 3643Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 3644values. Reported as bug by joe.liu@apple.com. 3645 3646Unix makefiles: Separate option to disable optimizations and 3647_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 3648NOOPT disable option and creates a separate flag (NOFORTIFY) for this 3649purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 3650errors when building ACPICA. This allows disabling the option without 3651also having to disable optimazations. 3652David Box 3653 3654 Current Release: 3655 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3656 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 3657 3658-- 3659-------------------------------------- 366007 November 2014. Summary of changes for version 20141107: 3661 3662This release is available at https://acpica.org/downloads 3663 3664This release introduces and implements language extensions to ASL that 3665provide support for symbolic ("C-style") operators and expressions. These 3666language extensions are known collectively as ASL+. 3667 3668 36691) iASL Compiler/Disassembler and Tools: 3670 3671Disassembler: Fixed a problem with disassembly of the UartSerialBus 3672macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 3673Box. 3674 3675Disassembler: Fixed the Unicode macro support to add escape sequences. 3676All non-printable ASCII values are emitted as escape sequences, as well 3677as the standard escapes for quote and backslash. Ensures that the 3678disassembled macro can be correctly recompiled. 3679 3680iASL: Added Printf/Fprintf macros for formatted output. These macros are 3681translated to existing AML Concatenate and Store operations. Printf 3682writes to the ASL Debug object. Fprintf allows the specification of an 3683ASL name as the target. Only a single format specifier is required, %o, 3684since the AML interpreter dynamically converts objects to the required 3685type. David E. Box. 3686 3687 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3688 (Concatenate (Concatenate (Concatenate ("", Arg0), 3689 ": Unexpected value for "), Arg1), ", "), Arg2), 3690 " at line "), Arg3), Debug) 3691 3692 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 3693 Arg0, Arg1, Arg2, Arg3) 3694 3695 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3696 ("", Arg1), ": "), Arg0), " Successful"), STR1) 3697 3698 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 3699 3700iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 3701ASL parse tree before the AML code is generated. This allows blocks of 3702ASL code to be removed in order to help locate and identify problem 3703devices and/or code. David E. Box. 3704 3705AcpiExec: Added support (-fi) for an optional namespace object 3706initialization file. This file specifies initial values for namespace 3707objects as necessary for debugging and testing different ASL code paths 3708that may be taken as a result of BIOS options. 3709 3710 37112) Overview of symbolic operator support for ASL (ASL+) 3712------------------------------------------------------- 3713 3714As an extension to the ASL language, iASL implements support for symbolic 3715(C-style) operators for math and logical expressions. This can greatly 3716simplify ASL code as well as improve both readability and 3717maintainability. These language extensions can exist concurrently with 3718all legacy ASL code and expressions. 3719 3720The symbolic extensions are 100% compatible with existing AML 3721interpreters, since no new AML opcodes are created. To implement the 3722extensions, the iASL compiler transforms the symbolic expressions into 3723the legacy ASL/AML equivalents at compile time. 3724 3725Full symbolic expressions are supported, along with the standard C 3726precedence and associativity rules. 3727 3728Full disassembler support for the symbolic expressions is provided, and 3729creates an automatic migration path for existing ASL code to ASL+ code 3730via the disassembly process. By default, the disassembler now emits ASL+ 3731code with symbolic expressions. An option (-dl) is provided to force the 3732disassembler to emit legacy ASL code if desired. 3733 3734Below is the complete list of the currently supported symbolic operators 3735with examples. See the iASL User Guide for additional information. 3736 3737 3738ASL+ Syntax Legacy ASL Equivalent 3739----------- --------------------- 3740 3741 // Math operators 3742 3743Z = X + Y Add (X, Y, Z) 3744Z = X - Y Subtract (X, Y, Z) 3745Z = X * Y Multiply (X, Y, Z) 3746Z = X / Y Divide (X, Y, , Z) 3747Z = X % Y Mod (X, Y, Z) 3748Z = X << Y ShiftLeft (X, Y, Z) 3749Z = X >> Y ShiftRight (X, Y, Z) 3750Z = X & Y And (X, Y, Z) 3751Z = X | Y Or (X, Y, Z) 3752Z = X ^ Y Xor (X, Y, Z) 3753Z = ~X Not (X, Z) 3754X++ Increment (X) 3755X-- Decrement (X) 3756 3757 // Logical operators 3758 3759(X == Y) LEqual (X, Y) 3760(X != Y) LNotEqual (X, Y) 3761(X < Y) LLess (X, Y) 3762(X > Y) LGreater (X, Y) 3763(X <= Y) LLessEqual (X, Y) 3764(X >= Y) LGreaterEqual (X, Y) 3765(X && Y) LAnd (X, Y) 3766(X || Y) LOr (X, Y) 3767(!X) LNot (X) 3768 3769 // Assignment and compound assignment operations 3770 3771X = Y Store (Y, X) 3772X += Y Add (X, Y, X) 3773X -= Y Subtract (X, Y, X) 3774X *= Y Multiply (X, Y, X) 3775X /= Y Divide (X, Y, , X) 3776X %= Y Mod (X, Y, X) 3777X <<= Y ShiftLeft (X, Y, X) 3778X >>= Y ShiftRight (X, Y, X) 3779X &= Y And (X, Y, X) 3780X |= Y Or (X, Y, X) 3781X ^= Y Xor (X, Y, X) 3782 3783 37843) ASL+ Examples: 3785----------------- 3786 3787Legacy ASL: 3788 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 3789 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 37900x03FB), 3791 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 3792 { 3793 And (MEMB, 0xFFFFFFF0, SRMB) 3794 Store (MEMB, Local2) 3795 Store (PDBM, Local1) 3796 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 3797 Store (SRMB, MEMB) 3798 Or (PDBM, 0x02, PDBM) 3799 } 3800 3801ASL+ version: 3802 If (((R510 & 0x03FB) == 0x02E0) || 3803 ((R520 & 0x03FB) == 0x02E0) || 3804 ((R530 & 0x03FB) == 0x02E0) || 3805 ((R540 & 0x03FB) == 0x02E0)) 3806 { 3807 SRMB = (MEMB & 0xFFFFFFF0) 3808 Local2 = MEMB 3809 Local1 = PDBM 3810 PDBM &= 0xFFFFFFFFFFFFFFF9 3811 MEMB = SRMB 3812 PDBM |= 0x02 3813 } 3814 3815Legacy ASL: 3816 Store (0x1234, Local1) 3817 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 3818 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 3819 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 3820 Store (Index (PKG1, 0x03), Local6) 3821 Store (Add (Local3, Local2), Debug) 3822 Add (Local1, 0x0F, Local2) 3823 Add (Local1, Multiply (Local2, Local3), Local2) 3824 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 3825 3826ASL+ version: 3827 Local1 = 0x1234 3828 Local3 = (((Local1 + TEST) + 0x20) * Local2) 3829 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 3830 Local3 = (Local1 + (TEST + (0x20 * Local2))) 3831 Local6 = Index (PKG1, 0x03) 3832 Debug = (Local3 + Local2) 3833 Local2 = (Local1 + 0x0F) 3834 Local2 = (Local1 + (Local2 * Local3)) 3835 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 3836 3837 3838---------------------------------------- 383926 September 2014. Summary of changes for version 20140926: 3840 38411) ACPICA kernel-resident subsystem: 3842 3843Updated the GPIO operation region handler interface (GeneralPurposeIo). 3844In order to support GPIO Connection objects with multiple pins, along 3845with the related Field objects, the following changes to the interface 3846have been made: The Address is now defined to be the offset in bits of 3847the field unit from the previous invocation of a Connection. It can be 3848viewed as a "Pin Number Index" into the connection resource descriptor. 3849The BitWidth is the exact bit width of the field. It is usually one bit, 3850but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 3851additional information and examples. 3852 3853GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 3854corresponding _Lxx/_Exx methods are disabled (they may have been enabled 3855by the firmware), so that they cannot fire until they are enabled via 3856AcpiUpdateAllGpes. Rafael J. Wysocki. 3857 3858Added a new return flag for the Event/GPE status interfaces -- 3859AcpiGetEventStatus and AcpiGetGpeStatus. The new 3860ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 3861GPE currently has a handler associated with it, and can thus actually 3862affect the system. Lv Zheng. 3863 3864Example Code and Data Size: These are the sizes for the OS-independent 3865acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3866debug version of the code includes the debug output trace mechanism and 3867has a much larger code and data size. 3868 3869 Current Release: 3870 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3871 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3872 Previous Release: 3873 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3874 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3875 38762) iASL Compiler/Disassembler and Tools: 3877 3878iASL: Fixed a memory allocation/free regression introduced in 20140828 3879that could cause the compiler to crash. This was introduced inadvertently 3880during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 38811113. 3882 3883iASL: Removed two error messages that have been found to create false 3884positives, until they can be fixed and fully validated (ACPICA BZ 1112): 38851) Illegal forward reference within a method 38862) Illegal reference across two methods 3887 3888iASL: Implemented a new option (-lm) to create a hardware mapping file 3889that summarizes all GPIO, I2C, SPI, and UART connections. This option 3890works for both the compiler and disassembler. See the iASL compiler user 3891guide for additional information and examples (section 6.4.6). 3892 3893AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 3894version 2. This corrects the AE_BAD_HEADER exception seen on systems with 3895a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 3896 3897AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 3898unless STDIN is actually a terminal. Assists with batch-mode processing. 3899ACPICA BZ 1114. 3900 3901Disassembler/AcpiHelp: Added another large group of recognized _HID 3902values. 3903 3904 3905---------------------------------------- 390628 August 2014. Summary of changes for version 20140828: 3907 39081) ACPICA kernel-resident subsystem: 3909 3910Fixed a problem related to the internal use of the Timer() operator where 3911a 64-bit divide could cause an attempted link to a double-precision math 3912library. This divide is not actually necessary, so the code was 3913restructured to eliminate it. Lv Zheng. 3914 3915ACPI 5.1: Added support for the runtime validation of the _DSD package 3916(similar to the iASL support). 3917 3918ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 3919SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 3920 3921Example Code and Data Size: These are the sizes for the OS-independent 3922acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3923debug version of the code includes the debug output trace mechanism and 3924has a much larger code and data size. 3925 3926 Current Release: 3927 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3928 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3929 Previous Release: 3930 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 3931 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3932 39332) iASL Compiler/Disassembler and Tools: 3934 3935AcpiExec: Fixed a problem on unix systems where the original terminal 3936state was not always properly restored upon exit. Seen when using the -v 3937option. ACPICA BZ 1104. 3938 3939iASL: Fixed a problem with the validation of the ranges/length within the 3940Memory24 resource descriptor. There was a boundary condition when the 3941range was equal to the (length -1) caused by the fact that these values 3942are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 3943 3944Disassembler: Fixed a problem with the GpioInt descriptor interrupt 3945polarity 3946flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 3947is 3948now supported properly. 3949 3950ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 3951in the disassembler, data table compiler, and table template generator. 3952 3953iASL: Added a requirement for Device() objects that one of either a _HID 3954or _ADR must exist within the scope of a Device, as per the ACPI 3955specification. Remove a similar requirement that was incorrectly in place 3956for the _DSD object. 3957 3958iASL: Added error detection for illegal named references within control 3959methods that would cause runtime failures. Now trapped as errors are: 1) 3960References to objects within a non-parent control method. 2) Forward 3961references (within a method) -- for control methods, AML interpreters use 3962a one-pass parse of control methods. ACPICA BZ 1008. 3963 3964iASL: Added error checking for dependencies related to the _PSx power 3965methods. ACPICA BZ 1029. 39661) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 3967_PS3. 39682) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 3969scope. 3970 3971iASL and table compiler: Cleanup miscellaneous memory leaks by fully 3972deploying the existing object and string caches and adding new caches for 3973the table compiler. 3974 3975iASL: Split the huge parser source file into multiple subfiles to improve 3976manageability. Generation now requires the M4 macro preprocessor, which 3977is part of the Bison distribution on both unix and windows platforms. 3978 3979AcpiSrc: Fixed and removed all extraneous warnings generated during 3980entire ACPICA source code scan and/or conversion. 3981 3982 3983---------------------------------------- 3984 398524 July 2014. Summary of changes for version 20140724: 3986 3987The ACPI 5.1 specification has been released and is available at: 3988http://uefi.org/specs/access 3989 3990 39910) ACPI 5.1 support in ACPICA: 3992 3993ACPI 5.1 is fully supported in ACPICA as of this release. 3994 3995New predefined names. Support includes iASL and runtime ACPICA 3996validation. 3997 _CCA (Cache Coherency Attribute). 3998 _DSD (Device-Specific Data). David Box. 3999 4000Modifications to existing ACPI tables. Support includes headers, iASL 4001Data Table compiler, disassembler, and the template generator. 4002 FADT - New fields and flags. Graeme Gregory. 4003 GTDT - One new subtable and new fields. Tomasz Nowicki. 4004 MADT - Two new subtables. Tomasz Nowicki. 4005 PCCT - One new subtable. 4006 4007Miscellaneous. 4008 New notification type for System Resource Affinity change events. 4009 4010 40111) ACPICA kernel-resident subsystem: 4012 4013Fixed a regression introduced in 20140627 where a fault can happen during 4014the deletion of Alias AML namespace objects. The problem affected both 4015the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4016 4017Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4018simple mechanism to enable wake GPEs that have no associated handler or 4019control method. Rafael Wysocki. 4020 4021Updated the AcpiEnableGpe interface to disallow the enable if there is no 4022handler or control method associated with the particular GPE. This will 4023help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4024 4025Updated GPE handling and dispatch by disabling the GPE before clearing 4026the status bit for edge-triggered GPEs. Lv Zheng. 4027 4028Added Timer() support to the AML Debug object. The current timer value is 4029now displayed with each invocation of (Store to) the debug object to 4030enable simple generation of execution times for AML code (method 4031execution for example.) ACPICA BZ 1093. 4032 4033Example Code and Data Size: These are the sizes for the OS-independent 4034acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4035debug version of the code includes the debug output trace mechanism and 4036has a much larger code and data size. 4037 4038 Current Release: 4039 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4040 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4041 Previous Release: 4042 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4043 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4044 4045 40462) iASL Compiler/Disassembler and Tools: 4047 4048Fixed an issue with the recently added local printf implementation, 4049concerning width/precision specifiers that could cause incorrect output. 4050Lv Zheng. ACPICA BZ 1094. 4051 4052Disassembler: Added support to detect buffers that contain UUIDs and 4053disassemble them to an invocation of the ToUUID operator. Also emit 4054commented descriptions of known ACPI-related UUIDs. 4055 4056AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4057-u. Adds three new files. 4058 4059iASL: Update table compiler and disassembler for DMAR table changes that 4060were introduced in September 2013. With assistance by David Woodhouse. 4061 4062---------------------------------------- 406327 June 2014. Summary of changes for version 20140627: 4064 40651) ACPICA kernel-resident subsystem: 4066 4067Formatted Output: Implemented local versions of standard formatted output 4068utilities such as printf, etc. Over time, it has been discovered that 4069there are in fact many portability issues with printf, and the addition 4070of this feature will fix/prevent these issues once and for all. Some 4071known issues are summarized below: 4072 40731) Output of 64-bit values is not portable. For example, UINT64 is %ull 4074for the Linux kernel and is %uI64 for some MSVC versions. 40752) Invoking printf consistently in a manner that is portable across both 407632-bit and 64-bit platforms is difficult at best in many situations. 40773) The output format for pointers varies from system to system (leading 4078zeros especially), and leads to inconsistent output from ACPICA across 4079platforms. 40804) Certain platform-specific printf formats may conflict with ACPICA use. 40815) If there is no local C library available, ACPICA now has local support 4082for printf. 4083 4084-- To address these printf issues in a complete manner, ACPICA now 4085directly implements a small subset of printf format specifiers, only 4086those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4087 4088Implemented support for ACPICA generation within the EFI environment. 4089Initially, the AcpiDump utility is supported in the UEFI shell 4090environment. Lv Zheng. 4091 4092Added a new external interface, AcpiLogError, to improve ACPICA 4093portability. This allows the host to redirect error messages from the 4094ACPICA utilities. Lv Zheng. 4095 4096Added and deployed new OSL file I/O interfaces to improve ACPICA 4097portability: 4098 AcpiOsOpenFile 4099 AcpiOsCloseFile 4100 AcpiOsReadFile 4101 AcpiOsWriteFile 4102 AcpiOsGetFileOffset 4103 AcpiOsSetFileOffset 4104There are C library implementations of these functions in the new file 4105service_layers/oslibcfs.c -- however, the functions can be implemented by 4106the local host in any way necessary. Lv Zheng. 4107 4108Implemented a mechanism to disable/enable ACPI table checksum validation 4109at runtime. This can be useful when loading tables very early during OS 4110initialization when it may not be possible to map the entire table in 4111order to compute the checksum. Lv Zheng. 4112 4113Fixed a buffer allocation issue for the Generic Serial Bus support. 4114Originally, a fixed buffer length was used. This change allows for 4115variable-length buffers based upon the protocol indicated by the field 4116access attributes. Reported by Lan Tianyu. Lv Zheng. 4117 4118Fixed a problem where an object detached from a namespace node was not 4119properly terminated/cleared and could cause a circular list problem if 4120reattached. ACPICA BZ 1063. David Box. 4121 4122Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4123 4124Fixed a possible memory leak in an error return path within the function 4125AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. 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: 98.7K Code, 27.2K Data, 125.9K Total 4134 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4135 Previous Release: 4136 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4137 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4138 4139 41402) iASL Compiler/Disassembler and Tools: 4141 4142Disassembler: Add dump of ASCII equivalent text within a comment at the 4143end of each line of the output for the Buffer() ASL operator. 4144 4145AcpiDump: Miscellaneous changes: 4146 Fixed repetitive table dump in -n mode. 4147 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 4148the ACPI 2.0 GUID fails. 4149 4150iASL: Fixed a problem where the compiler could fault if incorrectly given 4151an acpidump output file as input. ACPICA BZ 1088. David Box. 4152 4153AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 4154they are invoked without any arguments. 4155 4156Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 41571086. Colin Ian King. 4158 4159Disassembler: Cleaned up a block of code that extracts a parent Op 4160object. Added a comment that explains that the parent is guaranteed to be 4161valid in this case. ACPICA BZ 1069. 4162 4163 4164---------------------------------------- 416524 April 2014. Summary of changes for version 20140424: 4166 41671) ACPICA kernel-resident subsystem: 4168 4169Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 4170Some of these tables are known to contain a trailing NULL entry. Lv 4171Zheng. 4172 4173Removed an extraneous error message for the case where there are a large 4174number of system GPEs (> 124). This was the "32-bit FADT register is too 4175long to convert to GAS struct" message, which is irrelevant for GPEs 4176since the GPEx_BLK_LEN fields of the FADT are always used instead of the 4177(limited capacity) GAS bit length. Also, several changes to ensure proper 4178support for GPE numbers > 255, where some "GPE number" fields were 8-bits 4179internally. 4180 4181Implemented and deployed additional configuration support for the public 4182ACPICA external interfaces. Entire classes of interfaces can now be 4183easily modified or configured out, replaced by stubbed inline functions 4184by default. Lv Zheng. 4185 4186Moved all public ACPICA runtime configuration globals to the public 4187ACPICA external interface file for convenience. Also, removed some 4188obsolete/unused globals. See the file acpixf.h. Lv Zheng. 4189 4190Documentation: Added a new section to the ACPICA reference describing the 4191maximum number of GPEs that can be supported by the FADT-defined GPEs in 4192block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 4193reference. 4194 4195Example Code and Data Size: These are the sizes for the OS-independent 4196acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4197debug version of the code includes the debug output trace mechanism and 4198has a much larger code and data size. 4199 4200 Current Release: 4201 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4202 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4203 Previous Release: 4204 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4205 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4206 4207 42082) iASL Compiler/Disassembler and Tools: 4209 4210iASL and disassembler: Add full support for the LPIT table (Low Power 4211Idle Table). Includes support in the disassembler, data table compiler, 4212and template generator. 4213 4214AcpiDump utility: 42151) Add option to force the use of the RSDT (over the XSDT). 42162) Improve validation of the RSDP signature (use 8 chars instead of 4). 4217 4218iASL: Add check for predefined packages that are too large. For 4219predefined names that contain subpackages, check if each subpackage is 4220too large. (Check for too small already exists.) 4221 4222Debugger: Updated the GPE command (which simulates a GPE by executing the 4223GPE code paths in ACPICA). The GPE device is now optional, and defaults 4224to the GPE 0/1 FADT-defined blocks. 4225 4226Unix application OSL: Update line-editing support. Add additional error 4227checking and take care not to reset terminal attributes on exit if they 4228were never set. This should help guarantee that the terminal is always 4229left in the previous state on program exit. 4230 4231 4232---------------------------------------- 423325 March 2014. Summary of changes for version 20140325: 4234 42351) ACPICA kernel-resident subsystem: 4236 4237Updated the auto-serialize feature for control methods. This feature 4238automatically serializes all methods that create named objects in order 4239to prevent runtime errors. The update adds support to ignore the 4240currently executing AML SyncLevel when invoking such a method, in order 4241to prevent disruption of any existing SyncLevel priorities that may exist 4242in the AML code. Although the use of SyncLevels is relatively rare, this 4243change fixes a regression where an AE_AML_MUTEX_ORDER exception can 4244appear on some machines starting with the 20140214 release. 4245 4246Added a new external interface to allow the host to install ACPI tables 4247very early, before the namespace is even created. AcpiInstallTable gives 4248the host additional flexibility for ACPI table management. Tables can be 4249installed directly by the host as if they had originally appeared in the 4250XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 4251(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 4252with additional internal restructuring and cleanup. See the ACPICA 4253Reference for interface details. Lv Zheng. 4254 4255Added validation of the checksum for all incoming dynamically loaded 4256tables (via external interfaces or via AML Load/LoadTable operators). Lv 4257Zheng. 4258 4259Updated the use of the AcpiOsWaitEventsComplete interface during Notify 4260and GPE handler removal. Restructured calls to eliminate possible race 4261conditions. Lv Zheng. 4262 4263Added a warning for the use/execution of the ASL/AML Unload (table) 4264operator. This will help detect and identify machines that use this 4265operator if and when it is ever used. This operator has never been seen 4266in the field and the usage model and possible side-effects of the drastic 4267runtime action of a full table removal are unknown. 4268 4269Reverted the use of #pragma push/pop which was introduced in the 20140214 4270release. It appears that push and pop are not implemented by enough 4271compilers to make the use of this feature feasible for ACPICA at this 4272time. However, these operators may be deployed in a future ACPICA 4273release. 4274 4275Added the missing EXPORT_SYMBOL macros for the install and remove SCI 4276handler interfaces. 4277 4278Source code generation: 42791) Disabled the use of the "strchr" macro for the gcc-specific 4280generation. For some versions of gcc, this macro can periodically expose 4281a compiler bug which in turn causes compile-time error(s). 42822) Added support for PPC64 compilation. Colin Ian King. 4283 4284Example Code and Data Size: These are the sizes for the OS-independent 4285acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4286debug version of the code includes the debug output trace mechanism and 4287has a much larger code and data size. 4288 4289 Current Release: 4290 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4291 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4292 Previous Release: 4293 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4294 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4295 4296 42972) iASL Compiler/Disassembler and Tools: 4298 4299Disassembler: Added several new features to improve the readability of 4300the resulting ASL code. Extra information is emitted within comment 4301fields in the ASL code: 43021) Known _HID/_CID values are decoded to descriptive text. 43032) Standard values for the Notify() operator are decoded to descriptive 4304text. 43053) Target operands are expanded to full pathnames (in a comment) when 4306possible. 4307 4308Disassembler: Miscellaneous updates for extern() handling: 43091) Abort compiler if file specified by -fe option does not exist. 43102) Silence unnecessary warnings about argument count mismatches. 43113) Update warning messages concerning unresolved method externals. 43124) Emit "UnknownObj" keyword for externals whose type cannot be 4313determined. 4314 4315AcpiHelp utility: 43161) Added the -a option to display both the ASL syntax and the AML 4317encoding for an input ASL operator. This effectively displays all known 4318information about an ASL operator with one AcpiHelp invocation. 43192) Added substring match support (similar to a wildcard) for the -i 4320(_HID/PNP IDs) option. 4321 4322iASL/Disassembler: Since this tool does not yet support execution on big- 4323endian machines, added detection of endianness and an error message if 4324execution is attempted on big-endian. Support for big-endian within iASL 4325is a feature that is on the ACPICA to-be-done list. 4326 4327AcpiBin utility: 43281) Remove option to extract binary files from an acpidump; this function 4329is made obsolete by the AcpiXtract utility. 43302) General cleanup of open files and allocated buffers. 4331 4332 4333---------------------------------------- 433414 February 2014. Summary of changes for version 20140214: 4335 43361) ACPICA kernel-resident subsystem: 4337 4338Implemented a new mechanism to proactively prevent problems with ill- 4339behaved reentrant control methods that create named ACPI objects. This 4340behavior is illegal as per the ACPI specification, but is nonetheless 4341frequently seen in the field. Previously, this could lead to an 4342AE_ALREADY_EXISTS exception if the method was actually entered by more 4343than one thread. This new mechanism detects such methods at table load 4344time and marks them "serialized" to prevent reentrancy. A new global 4345option, AcpiGbl_AutoSerializeMethods, has been added to disable this 4346feature if desired. This mechanism and global option obsoletes and 4347supersedes the previous AcpiGbl_SerializeAllMethods option. 4348 4349Added the "Windows 2013" string to the _OSI support. ACPICA will now 4350respond TRUE to _OSI queries with this string. It is the stated policy of 4351ACPICA to add new strings to the _OSI support as soon as possible after 4352they are defined. See the full ACPICA _OSI policy which has been added to 4353the utilities/utosi.c file. 4354 4355Hardened/updated the _PRT return value auto-repair code: 43561) Do not abort the repair on a single subpackage failure, continue to 4357check all subpackages. 43582) Add check for the minimum subpackage length (4). 43593) Properly handle extraneous NULL package elements. 4360 4361Added support to avoid the possibility of infinite loops when traversing 4362object linked lists. Never allow an infinite loop, even in the face of 4363corrupted object lists. 4364 4365ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 4366pack(pop) directives to ensure that the ACPICA headers are independent of 4367compiler settings or other host headers. 4368 4369Example Code and Data Size: These are the sizes for the OS-independent 4370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4371debug version of the code includes the debug output trace mechanism and 4372has a much larger code and data size. 4373 4374 Current Release: 4375 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4376 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4377 Previous Release: 4378 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4379 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4380 4381 43822) iASL Compiler/Disassembler and Tools: 4383 4384iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 4385first reserved field was incorrectly forced to have a value of zero. This 4386change correctly forces the field to have a value of one. ACPICA BZ 1081. 4387 4388Debugger: Added missing support for the "Extra" and "Data" subobjects 4389when displaying object data. 4390 4391Debugger: Added support to display entire object linked lists when 4392displaying object data. 4393 4394iASL: Removed the obsolete -g option to obtain ACPI tables from the 4395Windows registry. This feature has been superseded by the acpidump 4396utility. 4397 4398 4399---------------------------------------- 440014 January 2014. Summary of changes for version 20140114: 4401 44021) ACPICA kernel-resident subsystem: 4403 4404Updated all ACPICA copyrights and signons to 2014. Added the 2014 4405copyright to all module headers and signons, including the standard Linux 4406header. This affects virtually every file in the ACPICA core subsystem, 4407iASL compiler, all ACPICA utilities, and the test suites. 4408 4409Improved parameter validation for AcpiInstallGpeBlock. Added the 4410following checks: 44111) The incoming device handle refers to type ACPI_TYPE_DEVICE. 44122) There is not already a GPE block attached to the device. 4413Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 4414device. 4415 4416Correctly support "references" in the ACPI_OBJECT. This change fixes the 4417support to allow references (namespace nodes) to be passed as arguments 4418to control methods via the evaluate object interface. This is probably 4419most useful for testing purposes, however. 4420 4421Improved support for 32/64 bit physical addresses in printf()-like 4422output. This change improves the support for physical addresses in printf 4423debug statements and other output on both 32-bit and 64-bit hosts. It 4424consistently outputs the appropriate number of bytes for each host. The 4425%p specifier is unsatisfactory since it does not emit uniform output on 4426all hosts/clib implementations (on some, leading zeros are not supported, 4427leading to difficult-to-read output). 4428 4429Example Code and Data Size: These are the sizes for the OS-independent 4430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4431debug version of the code includes the debug output trace mechanism and 4432has a much larger code and data size. 4433 4434 Current Release: 4435 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4436 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4437 Previous Release: 4438 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4439 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4440 4441 44422) iASL Compiler/Disassembler and Tools: 4443 4444iASL: Fix a possible fault when using the Connection() operator. Fixes a 4445problem if the parent Field definition for the Connection operator refers 4446to an operation region that does not exist. ACPICA BZ 1064. 4447 4448AcpiExec: Load of local test tables is now optional. The utility has the 4449capability to load some various tables to test features of ACPICA. 4450However, there are enough of them that the output of the utility became 4451confusing. With this change, only the required local tables are displayed 4452(RSDP, XSDT, etc.) along with the actual tables loaded via the command 4453line specification. This makes the default output simler and easier to 4454understand. The -el command line option restores the original behavior 4455for testing purposes. 4456 4457AcpiExec: Added support for overlapping operation regions. This change 4458expands the simulation of operation regions by supporting regions that 4459overlap within the given address space. Supports SystemMemory and 4460SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 4461 4462AcpiExec: Added region handler support for PCI_Config and EC spaces. This 4463allows AcpiExec to simulate these address spaces, similar to the current 4464support for SystemMemory and SystemIO. 4465 4466Debugger: Added new command to read/write/compare all namespace objects. 4467The command "test objects" will exercise the entire namespace by writing 4468new values to each data object, and ensuring that the write was 4469successful. The original value is then restored and verified. 4470 4471Debugger: Added the "test predefined" command. This change makes this 4472test public and puts it under the new "test" command. The test executes 4473each and every predefined name within the current namespace. 4474 4475 4476---------------------------------------- 447718 December 2013. Summary of changes for version 20131218: 4478 4479Global note: The ACPI 5.0A specification was released this month. There 4480are no changes needed for ACPICA since this release of ACPI is an 4481errata/clarification release. The specification is available at 4482acpi.info. 4483 4484 44851) ACPICA kernel-resident subsystem: 4486 4487Added validation of the XSDT root table if it is present. Some older 4488platforms contain an XSDT that is ill-formed or otherwise invalid (such 4489as containing some or all entries that are NULL pointers). This change 4490adds a new function to validate the XSDT before actually using it. If the 4491XSDT is found to be invalid, ACPICA will now automatically fall back to 4492using the RSDT instead. Original implementation by Zhao Yakui. Ported to 4493ACPICA and enhanced by Lv Zheng and Bob Moore. 4494 4495Added a runtime option to ignore the XSDT and force the use of the RSDT. 4496This change adds a runtime option that will force ACPICA to use the RSDT 4497instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 4498requires that an XSDT be used instead of the RSDT, the XSDT has been 4499found to be corrupt or ill-formed on some machines. Lv Zheng. 4500 4501Added a runtime option to favor 32-bit FADT register addresses over the 450264-bit addresses. This change adds an option to favor 32-bit FADT 4503addresses when there is a conflict between the 32-bit and 64-bit versions 4504of the same register. The default behavior is to use the 64-bit version 4505in accordance with the ACPI specification. This can now be overridden via 4506the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 4507 4508During the change above, the internal "Convert FADT" and "Verify FADT" 4509functions have been merged to simplify the code, making it easier to 4510understand and maintain. ACPICA BZ 933. 4511 4512Improve exception reporting and handling for GPE block installation. 4513Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 4514status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 4515 4516Added helper macros to extract bus/segment numbers from the HEST table. 4517This change adds two macros to extract the encoded bus and segment 4518numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 4519Betty Dall <betty.dall@hp.com> 4520 4521Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 4522by ACPICA. It is not a public macro, so it should have no effect on 4523existing OSV code. Lv Zheng. 4524 4525Example Code and Data Size: These are the sizes for the OS-independent 4526acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4527debug version of the code includes the debug output trace mechanism and 4528has a much larger code and data size. 4529 4530 Current Release: 4531 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4532 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4533 Previous Release: 4534 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4535 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4536 4537 45382) iASL Compiler/Disassembler and Tools: 4539 4540Disassembler: Improved pathname support for emitted External() 4541statements. This change adds full pathname support for external names 4542that have been resolved internally by the inclusion of additional ACPI 4543tables (via the iASL -e option). Without this change, the disassembler 4544can emit multiple externals for the same object, or it become confused 4545when the Scope() operator is used on an external object. Overall, greatly 4546improves the ability to actually recompile the emitted ASL code when 4547objects a referenced across multiple ACPI tables. Reported by Michael 4548Tsirkin (mst@redhat.com). 4549 4550Tests/ASLTS: Updated functional control suite to execute with no errors. 4551David Box. Fixed several errors related to the testing of the interpreter 4552slack mode. Lv Zheng. 4553 4554iASL: Added support to detect names that are declared within a control 4555method, but are unused (these are temporary names that are only valid 4556during the time the method is executing). A remark is issued for these 4557cases. ACPICA BZ 1022. 4558 4559iASL: Added full support for the DBG2 table. Adds full disassembler, 4560table compiler, and template generator support for the DBG2 table (Debug 4561Port 2 table). 4562 4563iASL: Added full support for the PCCT table, update the table definition. 4564Updates the PCCT table definition in the actbl3.h header and adds table 4565compiler and template generator support. 4566 4567iASL: Added an option to emit only error messages (no warnings/remarks). 4568The -ve option will enable only error messages, warnings and remarks are 4569suppressed. This can simplify debugging when only the errors are 4570important, such as when an ACPI table is disassembled and there are many 4571warnings and remarks -- but only the actual errors are of real interest. 4572 4573Example ACPICA code (source/tools/examples): Updated the example code so 4574that it builds to an actual working program, not just example code. Added 4575ACPI tables and execution of an example control method in the DSDT. Added 4576makefile support for Unix generation. 4577 4578 4579---------------------------------------- 458015 November 2013. Summary of changes for version 20131115: 4581 4582This release is available at https://acpica.org/downloads 4583 4584 45851) ACPICA kernel-resident subsystem: 4586 4587Resource Manager: Fixed loop termination for the "get AML length" 4588function. The loop previously had an error termination on a NULL resource 4589pointer, which can never happen since the loop simply increments a valid 4590resource pointer. This fix changes the loop to terminate with an error on 4591an invalid end-of-buffer condition. The problem can be seen as an 4592infinite loop by callers to AcpiSetCurrentResources with an invalid or 4593corrupted resource descriptor, or a resource descriptor that is missing 4594an END_TAG descriptor. Reported by Dan Carpenter 4595<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 4596 4597Table unload and ACPICA termination: Delete all attached data objects 4598during namespace node deletion. This fix updates namespace node deletion 4599to delete the entire list of attached objects (attached via 4600AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 46011024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 4602 4603ACPICA termination: Added support to delete all objects attached to the 4604root namespace node. This fix deletes any and all objects that have been 4605attached to the root node via AcpiAttachData. Previously, none of these 4606objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 4607 4608Debug output: Do not emit the function nesting level for the in-kernel 4609build. The nesting level is really only useful during a single-thread 4610execution. Therefore, only enable this output for the AcpiExec utility. 4611Also, only emit the thread ID when executing under AcpiExec (Context 4612switches are still always detected and a message is emitted). ACPICA BZ 4613972. 4614 4615Example Code and Data Size: These are the sizes for the OS-independent 4616acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4617debug version of the code includes the debug output trace mechanism and 4618has a much larger code and data size. 4619 4620 Current Release: 4621 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4622 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4623 Previous Release: 4624 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4625 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4626 4627 46282) iASL Compiler/Disassembler and Tools: 4629 4630AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 4631correct portable POSIX header for terminal control functions. 4632 4633Disassembler: Fixed control method invocation issues related to the use 4634of the CondRefOf() operator. The problem is seen in the disassembly where 4635control method invocations may not be disassembled properly if the 4636control method name has been used previously as an argument to CondRefOf. 4637The solution is to not attempt to emit an external declaration for the 4638CondRefOf target (it is not necessary in the first place). This prevents 4639disassembler object type confusion. ACPICA BZ 988. 4640 4641Unix Makefiles: Added an option to disable compiler optimizations and the 4642_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 4643with optimizations (reportedly, gcc 4.4 for example). This change adds a 4644command line option for make (NOOPT) that disables all compiler 4645optimizations and the _FORTIFY_SOURCE compiler flag. The default 4646optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 46471034. Lv Zheng, Bob Moore. 4648 4649Tests/ASLTS: Added options to specify individual test cases and modes. 4650This allows testers running aslts.sh to optionally specify individual 4651test modes and test cases. Also added an option to disable the forced 4652generation of the ACPICA tools from source if desired. Lv Zheng. 4653 4654---------------------------------------- 465527 September 2013. Summary of changes for version 20130927: 4656 4657This release is available at https://acpica.org/downloads 4658 4659 46601) ACPICA kernel-resident subsystem: 4661 4662Fixed a problem with store operations to reference objects. This change 4663fixes a problem where a Store operation to an ArgX object that contained 4664a 4665reference to a field object did not complete the automatic dereference 4666and 4667then write to the actual field object. Instead, the object type of the 4668field object was inadvertently changed to match the type of the source 4669operand. The new behavior will actually write to the field object (buffer 4670field or field unit), thus matching the correct ACPI-defined behavior. 4671 4672Implemented support to allow the host to redefine individual OSL 4673prototypes. This change enables the host to redefine OSL prototypes found 4674in the acpiosxf.h file. This allows the host to implement OSL interfaces 4675with a macro or inlined function. Further, it allows the host to add any 4676additional required modifiers such as __iomem, __init, __exit, etc., as 4677necessary on a per-interface basis. Enables maximum flexibility for the 4678OSL interfaces. Lv Zheng. 4679 4680Hardcoded the access width for the FADT-defined reset register. The ACPI 4681specification requires the reset register width to be 8 bits. ACPICA now 4682hardcodes the width to 8 and ignores the FADT width value. This provides 4683compatibility with other ACPI implementations that have allowed BIOS code 4684with bad register width values to go unnoticed. Matthew Garett, Bob 4685Moore, 4686Lv Zheng. 4687 4688Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 4689used 4690in the OSL header (acpiosxf). The change modifies the position of this 4691macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 4692build issues if the OSL defines the implementation of the interface to be 4693an inline stub function. Lv Zheng. 4694 4695Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 4696initialization interfaces. This change adds a new macro for the main init 4697and terminate external interfaces in order to support hosts that require 4698additional or different processing for these functions. Changed from 4699ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 4700Zheng, Bob Moore. 4701 4702Cleaned up the memory allocation macros for configurability. In the 4703common 4704case, the ACPI_ALLOCATE and related macros now resolve directly to their 4705respective AcpiOs* OSL interfaces. Two options: 47061) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 4707default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 47082) For AcpiExec (and for debugging), the macros can optionally be 4709resolved 4710to the local ACPICA interfaces that track each allocation (local tracking 4711is used to immediately detect memory leaks). 4712Lv Zheng. 4713 4714Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 4715to predefine this macro to either TRUE or FALSE during the system build. 4716 4717Replaced __FUNCTION_ with __func__ in the gcc-specific header. 4718 4719Example Code and Data Size: These are the sizes for the OS-independent 4720acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4721debug version of the code includes the debug output trace mechanism and 4722has a much larger code and data size. 4723 4724 Current Release: 4725 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4726 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4727 Previous Release: 4728 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4729 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4730 4731 47322) iASL Compiler/Disassembler and Tools: 4733 4734iASL: Implemented wildcard support for the -e option. This simplifies use 4735when there are many SSDTs that must be included to resolve external 4736method 4737declarations. ACPICA BZ 1041. Example: 4738 iasl -e ssdt*.dat -d dsdt.dat 4739 4740AcpiExec: Add history/line-editing for Unix/Linux systems. This change 4741adds a portable module that implements full history and limited line 4742editing for Unix and Linux systems. It does not use readline() due to 4743portability issues. Instead it uses the POSIX termio interface to put the 4744terminal in raw input mode so that the various special keys can be 4745trapped 4746(such as up/down-arrow for history support and left/right-arrow for line 4747editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 4748 4749AcpiXtract: Add support to handle (ignore) "empty" lines containing only 4750one or more spaces. This provides compatible with early or different 4751versions of the AcpiDump utility. ACPICA BZ 1044. 4752 4753AcpiDump: Do not ignore tables that contain only an ACPI table header. 4754Apparently, some BIOSs create SSDTs that contain an ACPI table header but 4755no other data. This change adds support to dump these tables. Any tables 4756shorter than the length of an ACPI table header remain in error (an error 4757message is emitted). Reported by Yi Li. 4758 4759Debugger: Echo actual command along with the "unknown command" message. 4760 4761---------------------------------------- 476223 August 2013. Summary of changes for version 20130823: 4763 47641) ACPICA kernel-resident subsystem: 4765 4766Implemented support for host-installed System Control Interrupt (SCI) 4767handlers. Certain ACPI functionality requires the host to handle raw 4768SCIs. For example, the "SCI Doorbell" that is defined for memory power 4769state support requires the host device driver to handle SCIs to examine 4770if the doorbell has been activated. Multiple SCI handlers can be 4771installed to allow for future expansion. New external interfaces are 4772AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 4773details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 4774 4775Operation region support: Never locally free the handler "context" 4776pointer. This change removes some dangerous code that attempts to free 4777the handler context pointer in some (rare) circumstances. The owner of 4778the handler owns this pointer and the ACPICA code should never touch it. 4779Although not seen to be an issue in any kernel, it did show up as a 4780problem (fault) under AcpiExec. Also, set the internal storage field for 4781the context pointer to zero when the region is deactivated, simply for 4782sanity. David Box. ACPICA BZ 1039. 4783 4784AcpiRead: On error, do not modify the return value target location. If an 4785error happens in the middle of a split 32/32 64-bit I/O operation, do not 4786modify the target of the return value pointer. Makes the code consistent 4787with the rest of ACPICA. Bjorn Helgaas. 4788 4789Example Code and Data Size: These are the sizes for the OS-independent 4790acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4791debug version of the code includes the debug output trace mechanism and 4792has a much larger code and data size. 4793 4794 Current Release: 4795 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4796 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4797 Previous Release: 4798 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4799 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 4800 4801 48022) iASL Compiler/Disassembler and Tools: 4803 4804AcpiDump: Implemented several new features and fixed some problems: 48051) Added support to dump the RSDP, RSDT, and XSDT tables. 48062) Added support for multiple table instances (SSDT, UEFI). 48073) Added option to dump "customized" (overridden) tables (-c). 48084) Fixed a problem where some table filenames were improperly 4809constructed. 48105) Improved some error messages, removed some unnecessary messages. 4811 4812iASL: Implemented additional support for disassembly of ACPI tables that 4813contain invocations of external control methods. The -fe<file> option 4814allows the import of a file that specifies the external methods along 4815with the required number of arguments for each -- allowing for the 4816correct disassembly of the table. This is a workaround for a limitation 4817of AML code where the disassembler often cannot determine the number of 4818arguments required for an external control method and generates incorrect 4819ASL code. See the iASL reference for details. ACPICA BZ 1030. 4820 4821Debugger: Implemented a new command (paths) that displays the full 4822pathnames (namepaths) and object types of all objects in the namespace. 4823This is an alternative to the namespace command. 4824 4825Debugger: Implemented a new command (sci) that invokes the SCI dispatch 4826mechanism and any installed handlers. 4827 4828iASL: Fixed a possible segfault for "too many parent prefixes" condition. 4829This can occur if there are too many parent prefixes in a namepath (for 4830example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 4831 4832Application OSLs: Set the return value for the PCI read functions. These 4833functions simply return AE_OK, but should set the return value to zero 4834also. This change implements this. ACPICA BZ 1038. 4835 4836Debugger: Prevent possible command line buffer overflow. Increase the 4837size of a couple of the debugger line buffers, and ensure that overflow 4838cannot happen. ACPICA BZ 1037. 4839 4840iASL: Changed to abort immediately on serious errors during the parsing 4841phase. Due to the nature of ASL, there is no point in attempting to 4842compile these types of errors, and they typically end up causing a 4843cascade of hundreds of errors which obscure the original problem. 4844 4845---------------------------------------- 484625 July 2013. Summary of changes for version 20130725: 4847 48481) ACPICA kernel-resident subsystem: 4849 4850Fixed a problem with the DerefOf operator where references to FieldUnits 4851and BufferFields incorrectly returned the parent object, not the actual 4852value of the object. After this change, a dereference of a FieldUnit 4853reference results in a read operation on the field to get the value, and 4854likewise, the appropriate BufferField value is extracted from the target 4855buffer. 4856 4857Fixed a problem where the _WAK method could cause a fault under these 4858circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 4859method returned no value. The problem is rarely seen because most kernels 4860run ACPICA in slack mode. 4861 4862For the DerefOf operator, a fatal error now results if an attempt is made 4863to dereference a reference (created by the Index operator) to a NULL 4864package element. Provides compatibility with other ACPI implementations, 4865and this behavior will be added to a future version of the ACPI 4866specification. 4867 4868The ACPI Power Management Timer (defined in the FADT) is now optional. 4869This provides compatibility with other ACPI implementations and will 4870appear in the next version of the ACPI specification. If there is no PM 4871Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 4872zero in the FADT indicates no PM timer. 4873 4874Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 4875allows the host to globally enable/disable all vendor strings, all 4876feature strings, or both. Intended to be primarily used for debugging 4877purposes only. Lv Zheng. 4878 4879Expose the collected _OSI data to the host via a global variable. This 4880data tracks the highest level vendor ID that has been invoked by the BIOS 4881so that the host (and potentially ACPICA itself) can change behaviors 4882based upon the age of the BIOS. 4883 4884Example Code and Data Size: These are the sizes for the OS-independent 4885acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4886debug version of the code includes the debug output trace mechanism and 4887has a much larger code and data size. 4888 4889 Current Release: 4890 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4891 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4892 Previous Release: 4893 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4894 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4895 4896 48972) iASL Compiler/Disassembler and Tools: 4898 4899iASL: Created the following enhancements for the -so option (create 4900offset table): 49011)Add offsets for the last nameseg in each namepath for every supported 4902object type 49032)Add support for Processor, Device, Thermal Zone, and Scope objects 49043)Add the actual AML opcode for the parent object of every supported 4905object type 49064)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 4907 4908Disassembler: Emit all unresolved external symbols in a single block. 4909These are external references to control methods that could not be 4910resolved, and thus, the disassembler had to make a guess at the number of 4911arguments to parse. 4912 4913iASL: The argument to the -T option (create table template) is now 4914optional. If not specified, the default table is a DSDT, typically the 4915most common case. 4916 4917---------------------------------------- 491826 June 2013. Summary of changes for version 20130626: 4919 49201) ACPICA kernel-resident subsystem: 4921 4922Fixed an issue with runtime repair of the _CST object. Null or invalid 4923elements were not always removed properly. Lv Zheng. 4924 4925Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 4926FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 4927the maximum number of GPEs is 1016. Use of multiple GPE block devices 4928makes the system-wide number of GPEs essentially unlimited. 4929 4930Example Code and Data Size: These are the sizes for the OS-independent 4931acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4932debug version of the code includes the debug output trace mechanism and 4933has a much larger code and data size. 4934 4935 Current Release: 4936 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4937 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4938 Previous Release: 4939 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4940 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4941 4942 49432) iASL Compiler/Disassembler and Tools: 4944 4945Portable AcpiDump: Implemented full support for the Linux and FreeBSD 4946hosts. Now supports Linux, FreeBSD, and Windows. 4947 4948Disassembler: Added some missing types for the HEST and EINJ tables: "Set 4949Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 4950 4951iASL/Preprocessor: Implemented full support for nested 4952#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 4953 4954Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 4955max. The original purpose of this constraint was to limit the amount of 4956debug output. However, the string function in question (UtPrintString) is 4957now used for the disassembler also, where 256 bytes is insufficient. 4958Reported by RehabMan@GitHub. 4959 4960iASL/DataTables: Fixed some problems and issues with compilation of DMAR 4961tables. ACPICA BZ 999. Lv Zheng. 4962 4963iASL: Fixed a couple of error exit issues that could result in a "Could 4964not delete <file>" message during ASL compilation. 4965 4966AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 4967the actual signatures for these tables are "FACP" and "APIC", 4968respectively. 4969 4970AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 4971tables are allowed to have multiple instances. 4972 4973---------------------------------------- 497417 May 2013. Summary of changes for version 20130517: 4975 49761) ACPICA kernel-resident subsystem: 4977 4978Fixed a regression introduced in version 20130328 for _INI methods. This 4979change fixes a problem introduced in 20130328 where _INI methods are no 4980longer executed properly because of a memory block that was not 4981initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 4982<tomasz.nowicki@linaro.org>. 4983 4984Fixed a possible problem with the new extended sleep registers in the 4985ACPI 49865.0 FADT. Do not use these registers (even if populated) unless the HW- 4987reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 49881020. Lv Zheng. 4989 4990Implemented return value repair code for _CST predefined objects: Sort 4991the 4992list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 4993 4994Implemented a debug-only option to disable loading of SSDTs from the 4995RSDT/XSDT during ACPICA initialization. This can be useful for debugging 4996ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 4997acglobal.h - ACPICA BZ 1005. Lv Zheng. 4998 4999Fixed some issues in the ACPICA initialization and termination code: 5000Tomasz Nowicki <tomasz.nowicki@linaro.org> 50011) Clear events initialized flag upon event component termination. ACPICA 5002BZ 1013. 50032) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 50043) Delete global lock pending lock during termination. ACPICA BZ 1012. 50054) Clear debug buffer global on termination to prevent possible multiple 5006delete. ACPICA BZ 1010. 5007 5008Standardized all switch() blocks across the entire source base. After 5009many 5010years, different formatting for switch() had crept in. This change makes 5011the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5012 5013Split some files to enhance ACPICA modularity and configurability: 50141) Split buffer dump routines into utilities/utbuffer.c 50152) Split internal error message routines into utilities/uterror.c 50163) Split table print utilities into tables/tbprint.c 50174) Split iASL command-line option processing into asloptions.c 5018 5019Makefile enhancements: 50201) Support for all new files above. 50212) Abort make on errors from any subcomponent. Chao Guan. 50223) Add build support for Apple Mac OS X. Liang Qi. 5023 5024Example Code and Data Size: These are the sizes for the OS-independent 5025acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5026debug version of the code includes the debug output trace mechanism and 5027has a much larger code and data size. 5028 5029 Current Release: 5030 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5031 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5032 Previous Release: 5033 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5034 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5035 5036 50372) iASL Compiler/Disassembler and Tools: 5038 5039New utility: Implemented an easily portable version of the acpidump 5040utility to extract ACPI tables from the system (or a file) in an ASCII 5041hex 5042dump format. The top-level code implements the various command line 5043options, file I/O, and table dump routines. To port to a new host, only 5044three functions need to be implemented to get tables -- since this 5045functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5046the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 50471) The Windows version obtains the ACPI tables from the Registry. 50482) The Linux version is under development. 50493) Other hosts - If an OS-dependent module is submitted, it will be 5050distributed with ACPICA. 5051 5052iASL: Fixed a regression for -D preprocessor option (define symbol). A 5053restructuring/change to the initialization sequence caused this option to 5054no longer work properly. 5055 5056iASL: Implemented a mechanism to disable specific warnings and remarks. 5057Adds a new command line option, "-vw <messageid> as well as "#pragma 5058disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5059 5060iASL: Fix for too-strict package object validation. The package object 5061validation for return values from the predefined names is a bit too 5062strict, it does not allow names references within the package (which will 5063be resolved at runtime.) These types of references cannot be validated at 5064compile time. This change ignores named references within package objects 5065for names that return or define static packages. 5066 5067Debugger: Fixed the 80-character command line limitation for the History 5068command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5069 5070iASL: Added control method and package support for the -so option 5071(generates AML offset table for BIOS support.) 5072 5073iASL: issue a remark if a non-serialized method creates named objects. If 5074a thread blocks within the method for any reason, and another thread 5075enters the method, the method will fail because an attempt will be made 5076to 5077create the same (named) object twice. In this case, issue a remark that 5078the method should be marked serialized. NOTE: may become a warning later. 5079ACPICA BZ 909. 5080 5081---------------------------------------- 508218 April 2013. Summary of changes for version 20130418: 5083 50841) ACPICA kernel-resident subsystem: 5085 5086Fixed a possible buffer overrun during some rare but specific field unit 5087read operations. This overrun can only happen if the DSDT version is 1 -- 5088meaning that all AML integers are 32 bits -- and the field length is 5089between 33 and 55 bits long. During the read, an internal buffer object 5090is 5091created for the field unit because the field is larger than an integer 5092(32 5093bits). However, in this case, the buffer will be incorrectly written 5094beyond the end because the buffer length is less than the internal 5095minimum 5096of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5097long, but a full 8 bytes will be written. 5098 5099Updated the Embedded Controller "orphan" _REG method support. This refers 5100to _REG methods under the EC device that have no corresponding operation 5101region. This is allowed by the ACPI specification. This update removes a 5102dependency on the existence an ECDT table. It will execute an orphan _REG 5103method as long as the operation region handler for the EC is installed at 5104the EC device node and not the namespace root. Rui Zhang (original 5105update), Bob Moore (update/integrate). 5106 5107Implemented run-time argument typechecking for all predefined ACPI names 5108(_STA, _BIF, etc.) This change performs object typechecking on all 5109incoming arguments for all predefined names executed via 5110AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5111passing correct object types as well as the correct number of arguments 5112(therefore identifying any issues immediately). Also, the ASL/namespace 5113definition of the predefined name is checked against the ACPI 5114specification for the proper argument count. Adds one new file, 5115nsarguments.c 5116 5117Changed an exception code for the ASL UnLoad() operator. Changed the 5118exception code for the case where the input DdbHandle is invalid, from 5119AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5120 5121Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5122global makefile. The use of this flag causes compiler errors on earlier 5123versions of GCC, so it has been removed for compatibility. 5124 5125Miscellaneous cleanup: 51261) Removed some unused/obsolete macros 51272) Fixed a possible memory leak in the _OSI support 51283) Removed an unused variable in the predefined name support 51294) Windows OSL: remove obsolete reference to a memory list field 5130 5131Example Code and Data Size: These are the sizes for the OS-independent 5132acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5133debug version of the code includes the debug output trace mechanism and 5134has a much larger code and data size. 5135 5136 Current Release: 5137 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5138 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5139 Previous Release: 5140 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5141 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5142 5143 51442) iASL Compiler/Disassembler and Tools: 5145 5146AcpiExec: Added installation of a handler for the SystemCMOS address 5147space. This prevents control method abort if a method accesses this 5148space. 5149 5150AcpiExec: Added support for multiple EC devices, and now install EC 5151operation region handler(s) at the actual EC device instead of the 5152namespace root. This reflects the typical behavior of host operating 5153systems. 5154 5155AcpiExec: Updated to ensure that all operation region handlers are 5156installed before the _REG methods are executed. This prevents a _REG 5157method from aborting if it accesses an address space has no handler. 5158AcpiExec installs a handler for every possible address space. 5159 5160Debugger: Enhanced the "handlers" command to display non-root handlers. 5161This change enhances the handlers command to display handlers associated 5162with individual devices throughout the namespace, in addition to the 5163currently supported display of handlers associated with the root 5164namespace 5165node. 5166 5167ASL Test Suite: Several test suite errors have been identified and 5168resolved, reducing the total error count during execution. Chao Guan. 5169 5170---------------------------------------- 517128 March 2013. Summary of changes for version 20130328: 5172 51731) ACPICA kernel-resident subsystem: 5174 5175Fixed several possible race conditions with the internal object reference 5176counting mechanism. Some of the external ACPICA interfaces update object 5177reference counts without holding the interpreter or namespace lock. This 5178change adds a spinlock to protect reference count updates on the internal 5179ACPICA objects. Reported by and with assistance from Andriy Gapon 5180(avg@FreeBSD.org). 5181 5182FADT support: Removed an extraneous warning for very large GPE register 5183sets. This change removes a size mismatch warning if the legacy length 5184field for a GPE register set is larger than the 64-bit GAS structure can 5185accommodate. GPE register sets can be larger than the 255-bit width 5186limitation of the GAS structure. Linn Crosetto (linn@hp.com). 5187 5188_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 5189return from this interface. Handles a possible timeout case if 5190ACPI_WAIT_FOREVER is modified by the host to be a value less than 5191"forever". Jung-uk Kim. 5192 5193Predefined name support: Add allowed/required argument type information 5194to 5195the master predefined info table. This change adds the infrastructure to 5196enable typechecking on incoming arguments for all predefined 5197methods/objects. It does not actually contain the code that will fully 5198utilize this information, this is still under development. Also condenses 5199some duplicate code for the predefined names into a new module, 5200utilities/utpredef.c 5201 5202Example Code and Data Size: These are the sizes for the OS-independent 5203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5204debug version of the code includes the debug output trace mechanism and 5205has a much larger code and data size. 5206 5207 Previous Release: 5208 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5209 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5210 Current Release: 5211 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5212 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5213 5214 52152) iASL Compiler/Disassembler and Tools: 5216 5217iASL: Implemented a new option to simplify the development of ACPI- 5218related 5219BIOS code. Adds support for a new "offset table" output file. The -so 5220option will create a C table containing the AML table offsets of various 5221named objects in the namespace so that BIOS code can modify them easily 5222at 5223boot time. This can simplify BIOS runtime code by eliminating expensive 5224searches for "magic values", enhancing boot times and adding greater 5225reliability. With assistance from Lee Hamel. 5226 5227iASL: Allow additional predefined names to return zero-length packages. 5228Now, all predefined names that are defined by the ACPI specification to 5229return a "variable-length package of packages" are allowed to return a 5230zero length top-level package. This allows the BIOS to tell the host that 5231the requested feature is not supported, and supports existing BIOS/ASL 5232code and practices. 5233 5234iASL: Changed the "result not used" warning to an error. This is the case 5235where an ASL operator is effectively a NOOP because the result of the 5236operation is not stored anywhere. For example: 5237 Add (4, Local0) 5238There is no target (missing 3rd argument), nor is the function return 5239value used. This is potentially a very serious problem -- since the code 5240was probably intended to do something, but for whatever reason, the value 5241was not stored. Therefore, this issue has been upgraded from a warning to 5242an error. 5243 5244AcpiHelp: Added allowable/required argument types to the predefined names 5245info display. This feature utilizes the recent update to the predefined 5246names table (above). 5247 5248---------------------------------------- 524914 February 2013. Summary of changes for version 20130214: 5250 52511) ACPICA Kernel-resident Subsystem: 5252 5253Fixed a possible regression on some hosts: Reinstated the safe return 5254macros (return_ACPI_STATUS, etc.) that ensure that the argument is 5255evaluated only once. Although these macros are not needed for the ACPICA 5256code itself, they are often used by ACPI-related host device drivers 5257where 5258the safe feature may be necessary. 5259 5260Fixed several issues related to the ACPI 5.0 reduced hardware support 5261(SOC): Now ensure that if the platform declares itself as hardware- 5262reduced 5263via the FADT, the following functions become NOOPs (and always return 5264AE_OK) because ACPI is always enabled by definition on these machines: 5265 AcpiEnable 5266 AcpiDisable 5267 AcpiHwGetMode 5268 AcpiHwSetMode 5269 5270Dynamic Object Repair: Implemented additional runtime repairs for 5271predefined name return values. Both of these repairs can simplify code in 5272the related device drivers that invoke these methods: 52731) For the _STR and _MLS names, automatically repair/convert an ASCII 5274string to a Unicode buffer. 52752) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 5276a 5277lone end tag descriptor in the following cases: A Return(0) was executed, 5278a null buffer was returned, or no object at all was returned (non-slack 5279mode only). Adds a new file, nsconvert.c 5280ACPICA BZ 998. Bob Moore, Lv Zheng. 5281 5282Resource Manager: Added additional code to prevent possible infinite 5283loops 5284while traversing corrupted or ill-formed resource template buffers. Check 5285for zero-length resource descriptors in all code that loops through 5286resource templates (the length field is used to index through the 5287template). This change also hardens the external AcpiWalkResources and 5288AcpiWalkResourceBuffer interfaces. 5289 5290Local Cache Manager: Enhanced the main data structure to eliminate an 5291unnecessary mechanism to access the next object in the list. Actually 5292provides a small performance enhancement for hosts that use the local 5293ACPICA cache manager. Jung-uk Kim. 5294 5295Example Code and Data Size: These are the sizes for the OS-independent 5296acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5297debug version of the code includes the debug output trace mechanism and 5298has a much larger code and data size. 5299 5300 Previous Release: 5301 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5302 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5303 Current Release: 5304 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5305 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5306 5307 53082) iASL Compiler/Disassembler and Tools: 5309 5310iASL/Disassembler: Fixed several issues with the definition of the ACPI 53115.0 RASF table (RAS Feature Table). This change incorporates late changes 5312that were made to the ACPI 5.0 specification. 5313 5314iASL/Disassembler: Added full support for the following new ACPI tables: 5315 1) The MTMR table (MID Timer Table) 5316 2) The VRTC table (Virtual Real Time Clock Table). 5317Includes header file, disassembler, table compiler, and template support 5318for both tables. 5319 5320iASL: Implemented compile-time validation of package objects returned by 5321predefined names. This new feature validates static package objects 5322returned by the various predefined names defined to return packages. Both 5323object types and package lengths are validated, for both parent packages 5324and sub-packages, if any. The code is similar in structure and behavior 5325to 5326the runtime repair mechanism within the AML interpreter and uses the 5327existing predefined name information table. Adds a new file, aslprepkg.c. 5328ACPICA BZ 938. 5329 5330iASL: Implemented auto-detection of binary ACPI tables for disassembly. 5331This feature detects a binary file with a valid ACPI table header and 5332invokes the disassembler automatically. Eliminates the need to 5333specifically invoke the disassembler with the -d option. ACPICA BZ 862. 5334 5335iASL/Disassembler: Added several warnings for the case where there are 5336unresolved control methods during the disassembly. This can potentially 5337cause errors when the output file is compiled, because the disassembler 5338assumes zero method arguments in these cases (it cannot determine the 5339actual number of arguments without resolution/definition of the method). 5340 5341Debugger: Added support to display all resources with a single command. 5342Invocation of the resources command with no arguments will now display 5343all 5344resources within the current namespace. 5345 5346AcpiHelp: Added descriptive text for each ACPICA exception code displayed 5347via the -e option. 5348 5349---------------------------------------- 535017 January 2013. Summary of changes for version 20130117: 5351 53521) ACPICA Kernel-resident Subsystem: 5353 5354Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 5355return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 5356objects to return a package containing one integer, most BIOS code 5357returns 5358two integers and the previous code reflects that. However, we also need 5359to 5360support BIOS code that actually implements to the ACPI spec, and this 5361change reflects this. 5362 5363Fixed two issues with the ACPI_DEBUG_PRINT macros: 53641) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 5365C compilers that require this support. 53662) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 5367ACPI_DEBUG is already used by many of the various hosts. 5368 5369Updated all ACPICA copyrights and signons to 2013. Added the 2013 5370copyright to all module headers and signons, including the standard Linux 5371header. This affects virtually every file in the ACPICA core subsystem, 5372iASL compiler, all ACPICA utilities, and the test suites. 5373 5374Example Code and Data Size: These are the sizes for the OS-independent 5375acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5376debug version of the code includes the debug output trace mechanism and 5377has a much larger code and data size. 5378 5379 Previous Release: 5380 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5381 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5382 Current Release: 5383 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5384 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5385 5386 53872) iASL Compiler/Disassembler and Tools: 5388 5389Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 5390prevent a possible fault on some hosts. Some C libraries modify the arg 5391pointer parameter to vfprintf making it difficult to call it twice in the 5392AcpiOsVprintf function. Use a local buffer to workaround this issue. This 5393does not affect the Windows OSL since the Win C library does not modify 5394the arg pointer. Chao Guan, Bob Moore. 5395 5396iASL: Fixed a possible infinite loop when the maximum error count is 5397reached. If an output file other than the .AML file is specified (such as 5398a listing file), and the maximum number of errors is reached, do not 5399attempt to flush data to the output file(s) as the compiler is aborting. 5400This can cause an infinite loop as the max error count code essentially 5401keeps calling itself. 5402 5403iASL/Disassembler: Added an option (-in) to ignore NOOP 5404opcodes/operators. 5405Implemented for both the compiler and the disassembler. Often, the NOOP 5406opcode is used as padding for packages that are changed dynamically by 5407the 5408BIOS. When disassembled and recompiled, these NOOPs will cause syntax 5409errors. This option causes the disassembler to ignore all NOOP opcodes 5410(0xA3), and it also causes the compiler to ignore all ASL source code 5411NOOP 5412statements as well. 5413 5414Debugger: Enhanced the Sleep command to execute all sleep states. This 5415change allows Sleep to be invoked with no arguments and causes the 5416debugger to execute all of the sleep states, 0-5, automatically. 5417 5418---------------------------------------- 541920 December 2012. Summary of changes for version 20121220: 5420 54211) ACPICA Kernel-resident Subsystem: 5422 5423Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 5424alternate entry point for AcpiWalkResources and improves the usability of 5425the resource manager by accepting as input a buffer containing the output 5426of either a _CRS, _PRS, or _AEI method. The key functionality is that the 5427input buffer is not deleted by this interface so that it can be used by 5428the host later. See the ACPICA reference for details. 5429 5430Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 5431(DSDT version < 2). The constant will be truncated and this warning 5432reflects that behavior. 5433 5434Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 5435ExtendedInterrupt, and GpioInt descriptors. This change adds support to 5436both get and set the new wake bit in these descriptors, separately from 5437the existing share bit. Reported by Aaron Lu. 5438 5439Interpreter: Fix Store() when an implicit conversion is not possible. For 5440example, in the cases such as a store of a string to an existing package 5441object, implement the store as a CopyObject(). This is a small departure 5442from the ACPI specification which states that the control method should 5443be 5444aborted in this case. However, the ASLTS suite depends on this behavior. 5445 5446Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 5447macros: check if debug output is currently enabled as soon as possible to 5448minimize performance impact if debug is in fact not enabled. 5449 5450Source code restructuring: Cleanup to improve modularity. The following 5451new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 5452psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 5453Associated makefiles and project files have been updated. 5454 5455Changed an exception code for LoadTable operator. For the case where one 5456of the input strings is too long, change the returned exception code from 5457AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 5458 5459Fixed a possible memory leak in dispatcher error path. On error, delete 5460the mutex object created during method mutex creation. Reported by 5461tim.gardner@canonical.com. 5462 5463Example Code and Data Size: These are the sizes for the OS-independent 5464acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5465debug version of the code includes the debug output trace mechanism and 5466has a much larger code and data size. 5467 5468 Previous Release: 5469 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5470 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5471 Current Release: 5472 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5473 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5474 5475 54762) iASL Compiler/Disassembler and Tools: 5477 5478iASL: Disallow a method call as argument to the ObjectType ASL operator. 5479This change tracks an errata to the ACPI 5.0 document. The AML grammar 5480will not allow the interpreter to differentiate between a method and a 5481method invocation when these are used as an argument to the ObjectType 5482operator. The ACPI specification change is to disallow a method 5483invocation 5484(UserTerm) for the ObjectType operator. 5485 5486Finish support for the TPM2 and CSRT tables in the headers, table 5487compiler, and disassembler. 5488 5489Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 5490always expires immediately if the semaphore is not available. The 5491original 5492code was using a relative-time timeout, but sem_timedwait requires the 5493use 5494of an absolute time. 5495 5496iASL: Added a remark if the Timer() operator is used within a 32-bit 5497table. This operator returns a 64-bit time value that will be truncated 5498within a 32-bit table. 5499 5500iASL Source code restructuring: Cleanup to improve modularity. The 5501following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 5502aslmethod.c, and aslfileio.c. Associated makefiles and project files have 5503been updated. 5504 5505 5506---------------------------------------- 550714 November 2012. Summary of changes for version 20121114: 5508 55091) ACPICA Kernel-resident Subsystem: 5510 5511Implemented a performance enhancement for ACPI/AML Package objects. This 5512change greatly increases the performance of Package objects within the 5513interpreter. It changes the processing of reference counts for packages 5514by 5515optimizing for the most common case where the package sub-objects are 5516either Integers, Strings, or Buffers. Increases the overall performance 5517of 5518the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 55192X.) 5520Chao Guan. ACPICA BZ 943. 5521 5522Implemented and deployed common macros to extract flag bits from resource 5523descriptors. Improves readability and maintainability of the code. Fixes 5524a 5525problem with the UART serial bus descriptor for the number of data bits 5526flags (was incorrectly 2 bits, should be 3). 5527 5528Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 5529of the macros and changed the SETx macros to the style of (destination, 5530source). Also added ACPI_CASTx companion macros. Lv Zheng. 5531 5532Example Code and Data Size: These are the sizes for the OS-independent 5533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5534debug version of the code includes the debug output trace mechanism and 5535has a much larger code and data size. 5536 5537 Previous Release: 5538 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5539 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5540 Current Release: 5541 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5542 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5543 5544 55452) iASL Compiler/Disassembler and Tools: 5546 5547Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 5548adds the ShareAndWake and ExclusiveAndWake flags which were added to the 5549Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 5550 5551Disassembler: Fixed a problem with external declaration generation. Fixes 5552a problem where an incorrect pathname could be generated for an external 5553declaration if the original reference to the object includes leading 5554carats (^). ACPICA BZ 984. 5555 5556Debugger: Completed a major update for the Disassemble<method> command. 5557This command was out-of-date and did not properly disassemble control 5558methods that had any reasonable complexity. This fix brings the command 5559up 5560to the same level as the rest of the disassembler. Adds one new file, 5561dmdeferred.c, which is existing code that is now common with the main 5562disassembler and the debugger disassemble command. ACPICA MZ 978. 5563 5564iASL: Moved the parser entry prototype to avoid a duplicate declaration. 5565Newer versions of Bison emit this prototype, so moved the prototype out 5566of 5567the iASL header to where it is actually used in order to avoid a 5568duplicate 5569declaration. 5570 5571iASL/Tools: Standardized use of the stream I/O functions: 5572 1) Ensure check for I/O error after every fopen/fread/fwrite 5573 2) Ensure proper order of size/count arguments for fread/fwrite 5574 3) Use test of (Actual != Requested) after all fwrite, and most fread 5575 4) Standardize I/O error messages 5576Improves reliability and maintainability of the code. Bob Moore, Lv 5577Zheng. 5578ACPICA BZ 981. 5579 5580Disassembler: Prevent duplicate External() statements. During generation 5581of external statements, detect similar pathnames that are actually 5582duplicates such as these: 5583 External (\ABCD) 5584 External (ABCD) 5585Remove all leading '\' characters from pathnames during the external 5586statement generation so that duplicates will be detected and tossed. 5587ACPICA BZ 985. 5588 5589Tools: Replace low-level I/O with stream I/O functions. Replace 5590open/read/write/close with the stream I/O equivalents 5591fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 5592Moore. 5593 5594AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 5595name header so that AcpiXtract recognizes the output file/table. 5596 5597iASL: Remove obsolete -2 option flag. Originally intended to force the 5598compiler/disassembler into an ACPI 2.0 mode, this was never implemented 5599and the entire concept is now obsolete. 5600 5601---------------------------------------- 560218 October 2012. Summary of changes for version 20121018: 5603 5604 56051) ACPICA Kernel-resident Subsystem: 5606 5607Updated support for the ACPI 5.0 MPST table. Fixes some problems 5608introduced by late changes to the table as it was added to the ACPI 5.0 5609specification. Includes header, disassembler, and data table compiler 5610support as well as a new version of the MPST template. 5611 5612AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 56135.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 5614methods: _HID, _CID, and _UID. 5615 5616Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 5617ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 5618name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 5619names for their various drivers. Affects the AcpiGetObjectInfo external 5620interface, and other internal interfaces as well. 5621 5622Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 5623This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 5624on machines that support non-aligned transfers. Optimizes for this case 5625rather than using a strncpy. With assistance from Zheng Lv. 5626 5627Resource Manager: Small fix for buffer size calculation. Fixed a one byte 5628error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 5629 5630Added a new debug print message for AML mutex objects that are force- 5631released. At control method termination, any currently acquired mutex 5632objects are force-released. Adds a new debug-only message for each one 5633that is released. 5634 5635Audited/updated all ACPICA return macros and the function debug depth 5636counter: 1) Ensure that all functions that use the various TRACE macros 5637also use the appropriate ACPICA return macros. 2) Ensure that all normal 5638return statements surround the return expression (value) with parens to 5639ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 5640Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 5641 5642Global source code changes/maintenance: All extra lines at the start and 5643end of each source file have been removed for consistency. Also, within 5644comments, all new sentences start with a single space instead of a double 5645space, again for consistency across the code base. 5646 5647Example Code and Data Size: These are the sizes for the OS-independent 5648acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5649debug version of the code includes the debug output trace mechanism and 5650has a much larger code and data size. 5651 5652 Previous Release: 5653 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5654 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5655 Current Release: 5656 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5657 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5658 5659 56602) iASL Compiler/Disassembler and Tools: 5661 5662AcpiExec: Improved the algorithm used for memory leak/corruption 5663detection. Added some intelligence to the code that maintains the global 5664list of allocated memory. The list is now ordered by allocated memory 5665address, significantly improving performance. When running AcpiExec on 5666the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 5667on the platform and/or the environment. Note, this performance 5668enhancement affects the AcpiExec utility only, not the kernel-resident 5669ACPICA code. 5670 5671Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 5672the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 5673incorrect table offset reported for invalid opcodes. Report the original 567432-bit value for bad ACPI_NAMEs (as well as the repaired name.) 5675 5676Disassembler: Enhanced the -vt option to emit the binary table data in 5677hex format to assist with debugging. 5678 5679Fixed a potential filename buffer overflow in osunixdir.c. Increased the 5680size of file structure. Colin Ian King. 5681 5682---------------------------------------- 568313 September 2012. Summary of changes for version 20120913: 5684 5685 56861) ACPICA Kernel-resident Subsystem: 5687 5688ACPI 5.0: Added two new notify types for the Hardware Error Notification 5689Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 5690and 5691MCE(6). 5692 5693Table Manager: Merged/removed duplicate code in the root table resize 5694functions. One function is external, the other is internal. Lv Zheng, 5695ACPICA 5696BZ 846. 5697 5698Makefiles: Completely removed the obsolete "Linux" makefiles under 5699acpica/generate/linux. These makefiles are obsolete and have been 5700replaced 5701by 5702the generic unix makefiles under acpica/generate/unix. 5703 5704Makefiles: Ensure that binary files always copied properly. Minor rule 5705change 5706to ensure that the final binary output files are always copied up to the 5707appropriate binary directory (bin32 or bin64.) 5708 5709Example Code and Data Size: These are the sizes for the OS-independent 5710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5711debug 5712version of the code includes the debug output trace mechanism and has a 5713much 5714larger code and data size. 5715 5716 Previous Release: 5717 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5718 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5719 Current Release: 5720 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5721 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5722 5723 57242) iASL Compiler/Disassembler and Tools: 5725 5726Disassembler: Fixed a possible fault during the disassembly of resource 5727descriptors when a second parse is required because of the invocation of 5728external control methods within the table. With assistance from 5729adq@lidskialf.net. ACPICA BZ 976. 5730 5731iASL: Fixed a namepath optimization problem. An error can occur if the 5732parse 5733node that contains the namepath to be optimized does not have a parent 5734node 5735that is a named object. This change fixes the problem. 5736 5737iASL: Fixed a regression where the AML file is not deleted on errors. The 5738AML 5739output file should be deleted if there are any errors during the 5740compiler. 5741The 5742only exception is if the -f (force output) option is used. ACPICA BZ 974. 5743 5744iASL: Added a feature to automatically increase internal line buffer 5745sizes. 5746Via realloc(), automatically increase the internal line buffer sizes as 5747necessary to support very long source code lines. The current version of 5748the 5749preprocessor requires a buffer long enough to contain full source code 5750lines. 5751This change increases the line buffer(s) if the input lines go beyond the 5752current buffer size. This eliminates errors that occurred when a source 5753code 5754line was longer than the buffer. 5755 5756iASL: Fixed a problem with constant folding in method declarations. The 5757SyncLevel term is a ByteConstExpr, and incorrect code would be generated 5758if a 5759Type3 opcode was used. 5760 5761Debugger: Improved command help support. For incorrect argument count, 5762display 5763full help for the command. For help command itself, allow an argument to 5764specify a command. 5765 5766Test Suites: Several bug fixes for the ASLTS suite reduces the number of 5767errors during execution of the suite. Guan Chao. 5768 5769---------------------------------------- 577016 August 2012. Summary of changes for version 20120816: 5771 5772 57731) ACPICA Kernel-resident Subsystem: 5774 5775Removed all use of the deprecated _GTS and _BFS predefined methods. The 5776_GTS 5777(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 5778deprecated and will probably be removed from the ACPI specification. 5779Windows 5780does not invoke them, and reportedly never will. The final nail in the 5781coffin 5782is that the ACPI specification states that these methods must be run with 5783interrupts off, which is not going to happen in a kernel interpreter. 5784Note: 5785Linux has removed all use of the methods also. It was discovered that 5786invoking these functions caused failures on some machines, probably 5787because 5788they were never tested since Windows does not call them. Affects two 5789external 5790interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 5791ACPICA BZ 969. 5792 5793Implemented support for complex bit-packed buffers returned from the _PLD 5794(Physical Location of Device) predefined method. Adds a new external 5795interface, AcpiDecodePldBuffer that parses the buffer into a more usable 5796C 5797structure. Note: C Bitfields cannot be used for this type of predefined 5798structure since the memory layout of individual bitfields is not defined 5799by 5800the C language. In addition, there are endian concerns where a compiler 5801will 5802change the bitfield ordering based on the machine type. The new ACPICA 5803interface eliminates these issues, and should be called after _PLD is 5804executed. ACPICA BZ 954. 5805 5806Implemented a change to allow a scope change to root (via "Scope (\)") 5807during 5808execution of module-level ASL code (code that is executed at table load 5809time.) Lin Ming. 5810 5811Added the Windows8/Server2012 string for the _OSI method. This change 5812adds 5813a 5814new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 58152012. 5816 5817Added header support for the new ACPI tables DBG2 (Debug Port Table Type 58182) 5819and CSRT (Core System Resource Table). 5820 5821Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 5822names. This simplifies access to the buffers returned by these predefined 5823names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 5824 5825GPE support: Removed an extraneous parameter from the various low-level 5826internal GPE functions. Tang Feng. 5827 5828Removed the linux makefiles from the unix packages. The generate/linux 5829makefiles are obsolete and have been removed from the unix tarball 5830release 5831packages. The replacement makefiles are under generate/unix, and there is 5832a 5833top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 5834 5835Updates for Unix makefiles: 58361) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 58372) Update linker flags (move to end of command line) for AcpiExec 5838utility. 5839Guan Chao. 5840 5841Split ACPICA initialization functions to new file, utxfinit.c. Split from 5842utxface.c to improve modularity and reduce file size. 5843 5844Example Code and Data Size: These are the sizes for the OS-independent 5845acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5846debug version of the code includes the debug output trace mechanism and 5847has a 5848much larger code and data size. 5849 5850 Previous Release: 5851 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5852 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5853 Current Release: 5854 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5855 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5856 5857 58582) iASL Compiler/Disassembler and Tools: 5859 5860iASL: Fixed a problem with constant folding for fixed-length constant 5861expressions. The constant-folding code was not being invoked for constant 5862expressions that allow the use of type 3/4/5 opcodes to generate 5863constants 5864for expressions such as ByteConstExpr, WordConstExpr, etc. This could 5865result 5866in the generation of invalid AML bytecode. ACPICA BZ 970. 5867 5868iASL: Fixed a generation issue on newer versions of Bison. Newer versions 5869apparently automatically emit some of the necessary externals. This 5870change 5871handles these versions in order to eliminate generation warnings. 5872 5873Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 5874 5875Disassembler: Add support to decode _PLD buffers. The decoded buffer 5876appears 5877within comments in the output file. 5878 5879Debugger: Fixed a regression with the "Threads" command where 5880AE_BAD_PARAMETER was always returned. 5881 5882---------------------------------------- 588311 July 2012. Summary of changes for version 20120711: 5884 58851) ACPICA Kernel-resident Subsystem: 5886 5887Fixed a possible fault in the return package object repair code. Fixes a 5888problem that can occur when a lone package object is wrapped with an 5889outer 5890package object in order to force conformance to the ACPI specification. 5891Can 5892affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 5893_DLM, 5894_CSD, _PSD, _TSD. 5895 5896Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 5897PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 5898ARB_DIS bit must be implemented in the host-dependent C3 processor power 5899state 5900support. Note, ARB_DIS is obsolete and only applies to older chipsets, 5901both 5902Intel and other vendors. (for Intel: ICH4-M and earlier) 5903 5904This change removes the code to disable/enable bus master arbitration 5905during 5906suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 5907causes 5908resume problems on some machines. The change has been in use for over 5909seven 5910years within Linux. 5911 5912Implemented two new external interfaces to support host-directed dynamic 5913ACPI 5914table load and unload. They are intended to simplify the host 5915implementation 5916of hot-plug support: 5917 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 5918 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 5919table. 5920See the ACPICA reference for additional details. Adds one new file, 5921components/tables/tbxfload.c 5922 5923Implemented and deployed two new interfaces for errors and warnings that 5924are 5925known to be caused by BIOS/firmware issues: 5926 AcpiBiosError: Prints "ACPI Firmware Error" message. 5927 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 5928Deployed these new interfaces in the ACPICA Table Manager code for ACPI 5929table 5930and FADT errors. Additional deployment to be completed as appropriate in 5931the 5932future. The associated conditional macros are ACPI_BIOS_ERROR and 5933ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 5934ACPICA 5935BZ 5936843. 5937 5938Implicit notify support: ensure that no memory allocation occurs within a 5939critical region. This fix moves a memory allocation outside of the time 5940that a 5941spinlock is held. Fixes issues on systems that do not allow this 5942behavior. 5943Jung-uk Kim. 5944 5945Split exception code utilities and tables into a new file, 5946utilities/utexcep.c 5947 5948Example Code and Data Size: These are the sizes for the OS-independent 5949acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5950debug 5951version of the code includes the debug output trace mechanism and has a 5952much 5953larger code and data size. 5954 5955 Previous Release: 5956 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5957 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5958 Current Release: 5959 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5960 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5961 5962 59632) iASL Compiler/Disassembler and Tools: 5964 5965iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 5966of 59670. Jung-uk Kim. 5968 5969Debugger: Enhanced the "tables" command to emit additional information 5970about 5971the current set of ACPI tables, including the owner ID and flags decode. 5972 5973Debugger: Reimplemented the "unload" command to use the new 5974AcpiUnloadParentTable external interface. This command was disable 5975previously 5976due to need for an unload interface. 5977 5978AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 5979option 5980will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 5981 5982---------------------------------------- 598320 June 2012. Summary of changes for version 20120620: 5984 5985 59861) ACPICA Kernel-resident Subsystem: 5987 5988Implemented support to expand the "implicit notify" feature to allow 5989multiple 5990devices to be notified by a single GPE. This feature automatically 5991generates a 5992runtime device notification in the absence of a BIOS-provided GPE control 5993method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 5994notify is 5995provided by ACPICA for Windows compatibility, and is a workaround for 5996BIOS 5997AML 5998code errors. See the description of the AcpiSetupGpeForWake interface in 5999the 6000APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6001 6002Changed some comments and internal function names to simplify and ensure 6003correctness of the Linux code translation. No functional changes. 6004 6005Example Code and Data Size: These are the sizes for the OS-independent 6006acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6007debug 6008version of the code includes the debug output trace mechanism and has a 6009much 6010larger code and data size. 6011 6012 Previous Release: 6013 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6014 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6015 Current Release: 6016 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6017 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6018 6019 60202) iASL Compiler/Disassembler and Tools: 6021 6022Disassembler: Added support to emit short, commented descriptions for the 6023ACPI 6024predefined names in order to improve the readability of the disassembled 6025output. ACPICA BZ 959. Changes include: 6026 1) Emit descriptions for all standard predefined names (_INI, _STA, 6027_PRW, 6028etc.) 6029 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6030 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6031etc.) 6032 6033AcpiSrc: Fixed several long-standing Linux code translation issues. 6034Argument 6035descriptions in function headers are now translated properly to lower 6036case 6037and 6038underscores. ACPICA BZ 961. Also fixes translation problems such as 6039these: 6040(old -> new) 6041 i_aSL -> iASL 6042 00-7_f -> 00-7F 6043 16_k -> 16K 6044 local_fADT -> local_FADT 6045 execute_oSI -> execute_OSI 6046 6047iASL: Fixed a problem where null bytes were inadvertently emitted into 6048some 6049listing files. 6050 6051iASL: Added the existing debug options to the standard help screen. There 6052are 6053no longer two different help screens. ACPICA BZ 957. 6054 6055AcpiHelp: Fixed some typos in the various predefined name descriptions. 6056Also 6057expand some of the descriptions where appropriate. 6058 6059iASL: Fixed the -ot option (display compile times/statistics). Was not 6060working 6061properly for standard output; only worked for the debug file case. 6062 6063---------------------------------------- 606418 May 2012. Summary of changes for version 20120518: 6065 6066 60671) ACPICA Core Subsystem: 6068 6069Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6070defined 6071to block until asynchronous events such as notifies and GPEs have 6072completed. 6073Within ACPICA, it is only called before a notify or GPE handler is 6074removed/uninstalled. It also may be useful for the host OS within related 6075drivers such as the Embedded Controller driver. See the ACPICA reference 6076for 6077additional information. ACPICA BZ 868. 6078 6079ACPI Tables: Added a new error message for a possible overflow failure 6080during 6081the conversion of FADT 32-bit legacy register addresses to internal 6082common 608364- 6084bit GAS structure representation. The GAS has a one-byte "bit length" 6085field, 6086thus limiting the register length to 255 bits. ACPICA BZ 953. 6087 6088Example Code and Data Size: These are the sizes for the OS-independent 6089acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6090debug 6091version of the code includes the debug output trace mechanism and has a 6092much 6093larger code and data size. 6094 6095 Previous Release: 6096 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6097 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6098 Current Release: 6099 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6100 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6101 6102 61032) iASL Compiler/Disassembler and Tools: 6104 6105iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6106macro. 6107This keyword was added late in the ACPI 5.0 release cycle and was not 6108implemented until now. 6109 6110Disassembler: Added support for Operation Region externals. Adds missing 6111support for operation regions that are defined in another table, and 6112referenced locally via a Field or BankField ASL operator. Now generates 6113the 6114correct External statement. 6115 6116Disassembler: Several additional fixes for the External() statement 6117generation 6118related to some ASL operators. Also, order the External() statements 6119alphabetically in the disassembler output. Fixes the External() 6120generation 6121for 6122the Create* field, Alias, and Scope operators: 6123 1) Create* buffer field operators - fix type mismatch warning on 6124disassembly 6125 2) Alias - implement missing External support 6126 3) Scope - fix to make sure all necessary externals are emitted. 6127 6128iASL: Improved pathname support. For include files, merge the prefix 6129pathname 6130with the file pathname and eliminate unnecessary components. Convert 6131backslashes in all pathnames to forward slashes, for readability. Include 6132file 6133pathname changes affect both #include and Include() type operators. 6134 6135iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 6136end 6137of a valid line by inserting a newline and then returning the EOF during 6138the 6139next call to GetNextLine. Prevents the line from being ignored due to EOF 6140condition. 6141 6142iASL: Implemented some changes to enhance the IDE support (-vi option.) 6143Error 6144and Warning messages are now correctly recognized for both the source 6145code 6146browser and the global error and warning counts. 6147 6148---------------------------------------- 614920 April 2012. Summary of changes for version 20120420: 6150 6151 61521) ACPICA Core Subsystem: 6153 6154Implemented support for multiple notify handlers. This change adds 6155support 6156to 6157allow multiple system and device notify handlers on Device, Thermal Zone, 6158and 6159Processor objects. This can simplify the host OS notification 6160implementation. 6161Also re-worked and restructured the entire notify support code to 6162simplify 6163handler installation, handler removal, notify event queuing, and notify 6164dispatch to handler(s). Note: there can still only be two global notify 6165handlers - one for system notifies and one for device notifies. There are 6166no 6167changes to the existing handler install/remove interfaces. Lin Ming, Bob 6168Moore, Rafael Wysocki. 6169 6170Fixed a regression in the package repair code where the object reference 6171count was calculated incorrectly. Regression was introduced in the commit 6172"Support to add Package wrappers". 6173 6174Fixed a couple possible memory leaks in the AML parser, in the error 6175recovery 6176path. Jesper Juhl, Lin Ming. 6177 6178Example Code and Data Size: These are the sizes for the OS-independent 6179acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6180debug version of the code includes the debug output trace mechanism and 6181has a 6182much larger code and data size. 6183 6184 Previous Release: 6185 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6186 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6187 Current Release: 6188 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6189 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6190 6191 61922) iASL Compiler/Disassembler and Tools: 6193 6194iASL: Fixed a problem with the resource descriptor support where the 6195length 6196of the StartDependentFn and StartDependentFnNoPrio descriptors were not 6197included in cumulative descriptor offset, resulting in incorrect values 6198for 6199resource tags within resource descriptors appearing after a 6200StartDependent* 6201descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 6202 6203iASL and Preprocessor: Implemented full support for the #line directive 6204to 6205correctly track original source file line numbers through the .i 6206preprocessor 6207output file - for error and warning messages. 6208 6209iASL: Expand the allowable byte constants for address space IDs. 6210Previously, 6211the allowable range was 0x80-0xFF (user-defined spaces), now the range is 62120x0A-0xFF to allow for custom and new IDs without changing the compiler. 6213 6214iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 6215 6216iASL: Add option to completely disable the preprocessor (-Pn). 6217 6218iASL: Now emit all error/warning messages to standard error (stderr) by 6219default (instead of the previous stdout). 6220 6221ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 6222Update 6223for resource descriptor offset fix above. Update/cleanup error output 6224routines. Enable and send iASL errors/warnings to an error logfile 6225(error.txt). Send all other iASL output to a logfile (compiler.txt). 6226Fixed 6227several extraneous "unrecognized operator" messages. 6228 6229---------------------------------------- 623020 March 2012. Summary of changes for version 20120320: 6231 6232 62331) ACPICA Core Subsystem: 6234 6235Enhanced the sleep/wake interfaces to optionally execute the _GTS method 6236(Going To Sleep) and the _BFS method (Back From Sleep). Windows 6237apparently 6238does not execute these methods, and therefore these methods are often 6239untested. It has been seen on some systems where the execution of these 6240methods causes errors and also prevents the machine from entering S5. It 6241is 6242therefore suggested that host operating systems do not execute these 6243methods 6244by default. In the future, perhaps these methods can be optionally 6245executed 6246based on the age of the system and/or what is the newest version of 6247Windows 6248that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 6249and 6250AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 6251Ming. 6252 6253Fixed a problem where the length of the local/common FADT was set too 6254early. 6255The local FADT table length cannot be set to the common length until the 6256original length has been examined. There is code that checks the table 6257length 6258and sets various fields appropriately. This can affect older machines 6259with 6260early FADT versions. For example, this can cause inadvertent writes to 6261the 6262CST_CNT register. Julian Anastasov. 6263 6264Fixed a mapping issue related to a physical table override. Use the 6265deferred 6266mapping mechanism for tables loaded via the physical override OSL 6267interface. 6268This allows for early mapping before the virtual memory manager is 6269available. 6270Thomas Renninger, Bob Moore. 6271 6272Enhanced the automatic return-object repair code: Repair a common problem 6273with 6274predefined methods that are defined to return a variable-length Package 6275of 6276sub-objects. If there is only one sub-object, some BIOS ASL code 6277mistakenly 6278simply returns the single object instead of a Package with one sub- 6279object. 6280This new support will repair this error by wrapping a Package object 6281around 6282the original object, creating the correct and expected Package with one 6283sub- 6284object. Names that can be repaired in this manner include: _ALR, _CSD, 6285_HPX, 6286_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 6287939. 6288 6289Changed the exception code returned for invalid ACPI paths passed as 6290parameters to external interfaces such as AcpiEvaluateObject. Was 6291AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 6292 6293Example Code and Data Size: These are the sizes for the OS-independent 6294acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6295debug 6296version of the code includes the debug output trace mechanism and has a 6297much 6298larger code and data size. 6299 6300 Previous Release: 6301 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6302 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6303 Current Release: 6304 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6305 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6306 6307 63082) iASL Compiler/Disassembler and Tools: 6309 6310iASL: Added the infrastructure and initial implementation of a integrated 6311C- 6312like preprocessor. This will simplify BIOS development process by 6313eliminating 6314the need for a separate preprocessing step during builds. On Windows, it 6315also 6316eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 6317features including full #define() macro support are still under 6318development. 6319These preprocessor directives are supported: 6320 #define 6321 #elif 6322 #else 6323 #endif 6324 #error 6325 #if 6326 #ifdef 6327 #ifndef 6328 #include 6329 #pragma message 6330 #undef 6331 #warning 6332In addition, these new command line options are supported: 6333 -D <symbol> Define symbol for preprocessor use 6334 -li Create preprocessed output file (*.i) 6335 -P Preprocess only and create preprocessor output file (*.i) 6336 6337Table Compiler: Fixed a problem where the equals operator within an 6338expression 6339did not work properly. 6340 6341Updated iASL to use the current versions of Bison/Flex. Updated the 6342Windows 6343project file to invoke these tools from the standard location. ACPICA BZ 6344904. 6345Versions supported: 6346 Flex for Windows: V2.5.4 6347 Bison for Windows: V2.4.1 6348 6349---------------------------------------- 635015 February 2012. Summary of changes for version 20120215: 6351 6352 63531) ACPICA Core Subsystem: 6354 6355There have been some major changes to the sleep/wake support code, as 6356described below (a - e). 6357 6358a) The AcpiLeaveSleepState has been split into two interfaces, similar to 6359AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 6360AcpiLeaveSleepStatePrep. This allows the host to perform actions between 6361the 6362time the _BFS method is called and the _WAK method is called. NOTE: all 6363hosts 6364must update their wake/resume code or else sleep/wake will not work 6365properly. 6366Rafael Wysocki. 6367 6368b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 6369_WAK 6370method. Some machines require that the GPEs are enabled before the _WAK 6371method 6372is executed. Thomas Renninger. 6373 6374c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 6375bit. 6376Some BIOS code assumes that WAK_STS will be cleared on resume and use it 6377to 6378determine whether the system is rebooting or resuming. Matthew Garrett. 6379 6380d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 6381Sleep) to 6382match the ACPI specification requirement. Rafael Wysocki. 6383 6384e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 6385registers within the V5 FADT. This support adds two new files: 6386hardware/hwesleep.c implements the support for the new registers. Moved 6387all 6388sleep/wake external interfaces to hardware/hwxfsleep.c. 6389 6390 6391Added a new OSL interface for ACPI table overrides, 6392AcpiOsPhysicalTableOverride. This interface allows the host to override a 6393table via a physical address, instead of the logical address required by 6394AcpiOsTableOverride. This simplifies the host implementation. Initial 6395implementation by Thomas Renninger. The ACPICA implementation creates a 6396single 6397shared function for table overrides that attempts both a logical and a 6398physical override. 6399 6400Expanded the OSL memory read/write interfaces to 64-bit data 6401(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 6402transfer support for GAS register structures passed to AcpiRead and 6403AcpiWrite. 6404 6405Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 6406custom 6407build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 6408model. 6409See the ACPICA reference for details. ACPICA BZ 942. This option removes 6410about 641110% of the code and 5% of the static data, and the following hardware 6412ACPI 6413features become unavailable: 6414 PM Event and Control registers 6415 SCI interrupt (and handler) 6416 Fixed Events 6417 General Purpose Events (GPEs) 6418 Global Lock 6419 ACPI PM timer 6420 FACS table (Waking vectors and Global Lock) 6421 6422Updated the unix tarball directory structure to match the ACPICA git 6423source 6424tree. This ensures that the generic unix makefiles work properly (in 6425generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 6426867. 6427 6428Updated the return value of the _REV predefined method to integer value 5 6429to 6430reflect ACPI 5.0 support. 6431 6432Moved the external ACPI PM timer interface prototypes to the public 6433acpixf.h 6434file where they belong. 6435 6436Example Code and Data Size: These are the sizes for the OS-independent 6437acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6438debug 6439version of the code includes the debug output trace mechanism and has a 6440much 6441larger code and data size. 6442 6443 Previous Release: 6444 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6445 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6446 Current Release: 6447 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6448 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6449 6450 64512) iASL Compiler/Disassembler and Tools: 6452 6453Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 6454descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 6455incorrectly displayed. 6456 6457AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 6458specification. 6459 6460---------------------------------------- 646111 January 2012. Summary of changes for version 20120111: 6462 6463 64641) ACPICA Core Subsystem: 6465 6466Implemented a new mechanism to allow host device drivers to check for 6467address 6468range conflicts with ACPI Operation Regions. Both SystemMemory and 6469SystemIO 6470address spaces are supported. A new external interface, 6471AcpiCheckAddressRange, 6472allows drivers to check an address range against the ACPI namespace. See 6473the 6474ACPICA reference for additional details. Adds one new file, 6475utilities/utaddress.c. Lin Ming, Bob Moore. 6476 6477Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 6478Control 6479and 6480Status registers, update the ACPI 5.0 flags, and update internal data 6481structures to handle an FADT larger than 256 bytes. The size of the ACPI 64825.0 6483FADT is 268 bytes. 6484 6485Updated all ACPICA copyrights and signons to 2012. Added the 2012 6486copyright to 6487all module headers and signons, including the standard Linux header. This 6488affects virtually every file in the ACPICA core subsystem, iASL compiler, 6489and 6490all ACPICA utilities. 6491 6492Example Code and Data Size: These are the sizes for the OS-independent 6493acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6494debug 6495version of the code includes the debug output trace mechanism and has a 6496much 6497larger code and data size. 6498 6499 Previous Release: 6500 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6501 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6502 Current Release: 6503 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6504 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6505 6506 65072) iASL Compiler/Disassembler and Tools: 6508 6509Disassembler: fixed a problem with the automatic resource tag generation 6510support. Fixes a problem where the resource tags are inadvertently not 6511constructed if the table being disassembled contains external references 6512to 6513control methods. Moved the actual construction of the tags to after the 6514final 6515namespace is constructed (after 2nd parse is invoked due to external 6516control 6517method references.) ACPICA BZ 941. 6518 6519Table Compiler: Make all "generic" operators caseless. These are the 6520operators 6521like UINT8, String, etc. Making these caseless improves ease-of-use. 6522ACPICA BZ 6523934. 6524 6525---------------------------------------- 652623 November 2011. Summary of changes for version 20111123: 6527 65280) ACPI 5.0 Support: 6529 6530This release contains full support for the ACPI 5.0 specification, as 6531summarized below. 6532 6533Reduced Hardware Support: 6534------------------------- 6535 6536This support allows for ACPI systems without the usual ACPI hardware. 6537This 6538support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 6539will 6540not attempt to initialize or use any of the usual ACPI hardware. Note, 6541when 6542this flag is set, all of the following ACPI hardware is assumed to be not 6543present and is not initialized or accessed: 6544 6545 General Purpose Events (GPEs) 6546 Fixed Events (PM1a/PM1b and PM Control) 6547 Power Management Timer and Console Buttons (power/sleep) 6548 Real-time Clock Alarm 6549 Global Lock 6550 System Control Interrupt (SCI) 6551 The FACS is assumed to be non-existent 6552 6553ACPI Tables: 6554------------ 6555 6556All new tables and updates to existing tables are fully supported in the 6557ACPICA headers (for use by device drivers), the disassembler, and the 6558iASL 6559Data Table Compiler. ACPI 5.0 defines these new tables: 6560 6561 BGRT /* Boot Graphics Resource Table */ 6562 DRTM /* Dynamic Root of Trust for Measurement table */ 6563 FPDT /* Firmware Performance Data Table */ 6564 GTDT /* Generic Timer Description Table */ 6565 MPST /* Memory Power State Table */ 6566 PCCT /* Platform Communications Channel Table */ 6567 PMTT /* Platform Memory Topology Table */ 6568 RASF /* RAS Feature table */ 6569 6570Operation Regions/SpaceIDs: 6571--------------------------- 6572 6573All new operation regions are fully supported by the iASL compiler, the 6574disassembler, and the ACPICA runtime code (for dispatch to region 6575handlers.) 6576The new operation region Space IDs are: 6577 6578 GeneralPurposeIo 6579 GenericSerialBus 6580 6581Resource Descriptors: 6582--------------------- 6583 6584All new ASL resource descriptors are fully supported by the iASL 6585compiler, 6586the 6587ASL/AML disassembler, and the ACPICA runtime Resource Manager code 6588(including 6589all new predefined resource tags). New descriptors are: 6590 6591 FixedDma 6592 GpioIo 6593 GpioInt 6594 I2cSerialBus 6595 SpiSerialBus 6596 UartSerialBus 6597 6598ASL/AML Operators, New and Modified: 6599------------------------------------ 6600 6601One new operator is added, the Connection operator, which is used to 6602associate 6603a GeneralPurposeIo or GenericSerialBus resource descriptor with 6604individual 6605field objects within an operation region. Several new protocols are 6606associated 6607with the AccessAs operator. All are fully supported by the iASL compiler, 6608disassembler, and runtime ACPICA AML interpreter: 6609 6610 Connection // Declare Field Connection 6611attributes 6612 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 6613 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 6614Protocol 6615 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 6616 RawDataBuffer // Data type for Vendor Data 6617fields 6618 6619Predefined ASL/AML Objects: 6620--------------------------- 6621 6622All new predefined objects/control-methods are supported by the iASL 6623compiler 6624and the ACPICA runtime validation/repair (arguments and return values.) 6625New 6626predefined names include the following: 6627 6628Standard Predefined Names (Objects or Control Methods): 6629 _AEI, _CLS, _CPC, _CWS, _DEP, 6630 _DLM, _EVT, _GCP, _CRT, _GWS, 6631 _HRV, _PRE, _PSE, _SRT, _SUB. 6632 6633Resource Tags (Names used to access individual fields within resource 6634descriptors): 6635 _DBT, _DPL, _DRS, _END, _FLC, 6636 _IOR, _LIN, _MOD, _PAR, _PHA, 6637 _PIN, _PPI, _POL, _RXL, _SLV, 6638 _SPE, _STB, _TXL, _VEN. 6639 6640ACPICA External Interfaces: 6641--------------------------- 6642 6643Several new interfaces have been defined for use by ACPI-related device 6644drivers and other host OS services: 6645 6646AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 6647to 6648acquire and release AML mutexes that are defined in the DSDT/SSDT tables 6649provided by the BIOS. They are intended to be used in conjunction with 6650the 6651ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 6652mutual exclusion with the AML code/interpreter. 6653 6654AcpiGetEventResources: Returns the (formatted) resource descriptors as 6655defined 6656by the ACPI 5.0 _AEI object (ACPI Event Information). This object 6657provides 6658resource descriptors associated with hardware-reduced platform events, 6659similar 6660to the AcpiGetCurrentResources interface. 6661 6662Operation Region Handlers: For General Purpose IO and Generic Serial Bus 6663operation regions, information about the Connection() object and any 6664optional 6665length information is passed to the region handler within the Context 6666parameter. 6667 6668AcpiBufferToResource: This interface converts a raw AML buffer containing 6669a 6670resource template or resource descriptor to the ACPI_RESOURCE internal 6671format 6672suitable for use by device drivers. Can be used by an operation region 6673handler 6674to convert the Connection() buffer object into a ACPI_RESOURCE. 6675 6676Miscellaneous/Tools/TestSuites: 6677------------------------------- 6678 6679Support for extended _HID names (Four alpha characters instead of three). 6680Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 6681Support for ACPI 5.0 features in the ASLTS test suite. 6682Fully updated documentation (ACPICA and iASL reference documents.) 6683 6684ACPI Table Definition Language: 6685------------------------------- 6686 6687Support for this language was implemented and released as a subsystem of 6688the 6689iASL compiler in 2010. (See the iASL compiler User Guide.) 6690 6691 6692Non-ACPI 5.0 changes for this release: 6693-------------------------------------- 6694 66951) ACPICA Core Subsystem: 6696 6697Fix a problem with operation region declarations where a failure can 6698occur 6699if 6700the region name and an argument that evaluates to an object (such as the 6701region address) are in different namespace scopes. Lin Ming, ACPICA BZ 6702937. 6703 6704Do not abort an ACPI table load if an invalid space ID is found within. 6705This 6706will be caught later if the offending method is executed. ACPICA BZ 925. 6707 6708Fixed an issue with the FFixedHW space ID where the ID was not always 6709recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 6710 6711Fixed a problem with the 32-bit generation of the unix-specific OSL 6712(osunixxf.c). Lin Ming, ACPICA BZ 936. 6713 6714Several changes made to enable generation with the GCC 4.6 compiler. 6715ACPICA BZ 6716935. 6717 6718New error messages: Unsupported I/O requests (not 8/16/32 bit), and 6719Index/Bank 6720field registers out-of-range. 6721 67222) iASL Compiler/Disassembler and Tools: 6723 6724iASL: Implemented the __PATH__ operator, which returns the full pathname 6725of 6726the current source file. 6727 6728AcpiHelp: Automatically display expanded keyword information for all ASL 6729operators. 6730 6731Debugger: Add "Template" command to disassemble/dump resource template 6732buffers. 6733 6734Added a new master script to generate and execute the ASLTS test suite. 6735Automatically handles 32- and 64-bit generation. See tests/aslts.sh 6736 6737iASL: Fix problem with listing generation during processing of the 6738Switch() 6739operator where AML listing was disabled until the entire Switch block was 6740completed. 6741 6742iASL: Improve support for semicolon statement terminators. Fix "invalid 6743character" message for some cases when the semicolon is used. Semicolons 6744are 6745now allowed after every <Term> grammar element. ACPICA BZ 927. 6746 6747iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 6748923. 6749 6750Disassembler: Fix problem with disassembly of the DataTableRegion 6751operator 6752where an inadvertent "Unhandled deferred opcode" message could be 6753generated. 6754 67553) Example Code and Data Size 6756 6757These are the sizes for the OS-independent acpica.lib produced by the 6758Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6759includes the debug output trace mechanism and has a much larger code and 6760data 6761size. 6762 6763 Previous Release: 6764 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6765 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6766 Current Release: 6767 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6768 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6769 6770---------------------------------------- 677122 September 2011. Summary of changes for version 20110922: 6772 67730) ACPI 5.0 News: 6774 6775Support for ACPI 5.0 in ACPICA has been underway for several months and 6776will 6777be released at the same time that ACPI 5.0 is officially released. 6778 6779The ACPI 5.0 specification is on track for release in the next few 6780months. 6781 67821) ACPICA Core Subsystem: 6783 6784Fixed a problem where the maximum sleep time for the Sleep() operator was 6785intended to be limited to two seconds, but was inadvertently limited to 678620 6787seconds instead. 6788 6789Linux and Unix makefiles: Added header file dependencies to ensure 6790correct 6791generation of ACPICA core code and utilities. Also simplified the 6792makefiles 6793considerably through the use of the vpath variable to specify search 6794paths. 6795ACPICA BZ 924. 6796 67972) iASL Compiler/Disassembler and Tools: 6798 6799iASL: Implemented support to check the access length for all fields 6800created to 6801access named Resource Descriptor fields. For example, if a resource field 6802is 6803defined to be two bits, a warning is issued if a CreateXxxxField() is 6804used 6805with an incorrect bit length. This is implemented for all current 6806resource 6807descriptor names. ACPICA BZ 930. 6808 6809Disassembler: Fixed a byte ordering problem with the output of 24-bit and 681056- 6811bit integers. 6812 6813iASL: Fixed a couple of issues associated with variable-length package 6814objects. 1) properly handle constants like One, Ones, Zero -- do not make 6815a 6816VAR_PACKAGE when these are used as a package length. 2) Allow the 6817VAR_PACKAGE 6818opcode (in addition to PACKAGE) when validating object types for 6819predefined 6820names. 6821 6822iASL: Emit statistics for all output files (instead of just the ASL input 6823and 6824AML output). Includes listings, hex files, etc. 6825 6826iASL: Added -G option to the table compiler to allow the compilation of 6827custom 6828ACPI tables. The only part of a table that is required is the standard 682936- 6830byte 6831ACPI header. 6832 6833AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 6834headers), 6835which also adds correct 64-bit support. Also, now all output filenames 6836are 6837completely lower case. 6838 6839AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 6840loading table files. A warning is issued for any such tables. The only 6841exception is an FADT. This also fixes a possible fault when attempting to 6842load 6843non-AML tables. ACPICA BZ 932. 6844 6845AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 6846a 6847missing table terminator could cause a fault when using the -p option. 6848 6849AcpiSrc: Fixed a possible divide-by-zero fault when generating file 6850statistics. 6851 68523) Example Code and Data Size 6853 6854These are the sizes for the OS-independent acpica.lib produced by the 6855Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6856includes the debug output trace mechanism and has a much larger code and 6857data 6858size. 6859 6860 Previous Release (VC 9.0): 6861 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6862 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6863 Current Release (VC 9.0): 6864 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6865 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6866 6867 6868---------------------------------------- 686923 June 2011. Summary of changes for version 20110623: 6870 68711) ACPI CA Core Subsystem: 6872 6873Updated the predefined name repair mechanism to not attempt repair of a 6874_TSS 6875return object if a _PSS object is present. We can only sort the _TSS 6876return 6877package if there is no _PSS within the same scope. This is because if 6878_PSS 6879is 6880present, the ACPI specification dictates that the _TSS Power Dissipation 6881field 6882is to be ignored, and therefore some BIOSs leave garbage values in the 6883_TSS 6884Power field(s). In this case, it is best to just return the _TSS package 6885as- 6886is. Reported by, and fixed with assistance from Fenghua Yu. 6887 6888Added an option to globally disable the control method return value 6889validation 6890and repair. This runtime option can be used to disable return value 6891repair 6892if 6893this is causing a problem on a particular machine. Also added an option 6894to 6895AcpiExec (-dr) to set this disable flag. 6896 6897All makefiles and project files: Major changes to improve generation of 6898ACPICA 6899tools. ACPICA BZ 912: 6900 Reduce default optimization levels to improve compatibility 6901 For Linux, add strict-aliasing=0 for gcc 4 6902 Cleanup and simplify use of command line defines 6903 Cleanup multithread library support 6904 Improve usage messages 6905 6906Linux-specific header: update handling of THREAD_ID and pthread. For the 690732- 6908bit case, improve casting to eliminate possible warnings, especially with 6909the 6910acpica tools. 6911 6912Example Code and Data Size: These are the sizes for the OS-independent 6913acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6914debug 6915version of the code includes the debug output trace mechanism and has a 6916much 6917larger code and data size. 6918 6919 Previous Release (VC 9.0): 6920 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6921 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6922 Current Release (VC 9.0): 6923 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6924 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6925 69262) iASL Compiler/Disassembler and Tools: 6927 6928With this release, a new utility named "acpihelp" has been added to the 6929ACPICA 6930package. This utility summarizes the ACPI specification chapters for the 6931ASL 6932and AML languages. It generates under Linux/Unix as well as Windows, and 6933provides the following functionality: 6934 Find/display ASL operator(s) -- with description and syntax. 6935 Find/display ASL keyword(s) -- with exact spelling and descriptions. 6936 Find/display ACPI predefined name(s) -- with description, number 6937 of arguments, and the return value data type. 6938 Find/display AML opcode name(s) -- with opcode, arguments, and 6939grammar. 6940 Decode/display AML opcode -- with opcode name, arguments, and 6941grammar. 6942 6943Service Layers: Make multi-thread support configurable. Conditionally 6944compile 6945the multi-thread support so that threading libraries will not be linked 6946if 6947not 6948necessary. The only tool that requires multi-thread support is AcpiExec. 6949 6950iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 6951of 6952Bison appear to want the interface to yyerror to be a const char * (or at 6953least this is a problem when generating iASL on some systems.) ACPICA BZ 6954923 6955Pierre Lejeune. 6956 6957Tools: Fix for systems where O_BINARY is not defined. Only used for 6958Windows 6959versions of the tools. 6960 6961---------------------------------------- 696227 May 2011. Summary of changes for version 20110527: 6963 69641) ACPI CA Core Subsystem: 6965 6966ASL Load() operator: Reinstate most restrictions on the incoming ACPI 6967table 6968signature. Now, only allow SSDT, OEMx, and a null signature. History: 6969 1) Originally, we checked the table signature for "SSDT" or "PSDT". 6970 (PSDT is now obsolete.) 6971 2) We added support for OEMx tables, signature "OEM" plus a fourth 6972 "don't care" character. 6973 3) Valid tables were encountered with a null signature, so we just 6974 gave up on validating the signature, (05/2008). 6975 4) We encountered non-AML tables such as the MADT, which caused 6976 interpreter errors and kernel faults. So now, we once again allow 6977 only SSDT, OEMx, and now, also a null signature. (05/2011). 6978 6979Added the missing _TDL predefined name to the global name list in order 6980to 6981enable validation. Affects both the core ACPICA code and the iASL 6982compiler. 6983 6984Example Code and Data Size: These are the sizes for the OS-independent 6985acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6986debug 6987version of the code includes the debug output trace mechanism and has a 6988much 6989larger code and data size. 6990 6991 Previous Release (VC 9.0): 6992 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6993 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6994 Current Release (VC 9.0): 6995 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6996 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6997 69982) iASL Compiler/Disassembler and Tools: 6999 7000Debugger/AcpiExec: Implemented support for "complex" method arguments on 7001the 7002debugger command line. This adds support beyond simple integers -- 7003including 7004Strings, Buffers, and Packages. Includes support for nested packages. 7005Increased the default command line buffer size to accommodate these 7006arguments. 7007See the ACPICA reference for details and syntax. ACPICA BZ 917. 7008 7009Debugger/AcpiExec: Implemented support for "default" method arguments for 7010the 7011Execute/Debug command. Now, the debugger will always invoke a control 7012method 7013with the required number of arguments -- even if the command line 7014specifies 7015none or insufficient arguments. It uses default integer values for any 7016missing 7017arguments. Also fixes a bug where only six method arguments maximum were 7018supported instead of the required seven. 7019 7020Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7021and 7022also return status in order to prevent buffer overruns. See the ACPICA 7023reference for details and syntax. ACPICA BZ 921 7024 7025iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7026makefiles to simplify support for the two different but similar parser 7027generators, bison and yacc. 7028 7029Updated the generic unix makefile for gcc 4. The default gcc version is 7030now 7031expected to be 4 or greater, since options specific to gcc 4 are used. 7032 7033---------------------------------------- 703413 April 2011. Summary of changes for version 20110413: 7035 70361) ACPI CA Core Subsystem: 7037 7038Implemented support to execute a so-called "orphan" _REG method under the 7039EC 7040device. This change will force the execution of a _REG method underneath 7041the 7042EC 7043device even if there is no corresponding operation region of type 7044EmbeddedControl. Fixes a problem seen on some machines and apparently is 7045compatible with Windows behavior. ACPICA BZ 875. 7046 7047Added more predefined methods that are eligible for automatic NULL 7048package 7049element removal. This change adds another group of predefined names to 7050the 7051list 7052of names that can be repaired by having NULL package elements dynamically 7053removed. This group are those methods that return a single variable- 7054length 7055package containing simple data types such as integers, buffers, strings. 7056This 7057includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7058_PSL, 7059_Sx, 7060and _TZD. ACPICA BZ 914. 7061 7062Split and segregated all internal global lock functions to a new file, 7063evglock.c. 7064 7065Updated internal address SpaceID for DataTable regions. Moved this 7066internal 7067space 7068id in preparation for ACPI 5.0 changes that will include some new space 7069IDs. 7070This 7071change should not affect user/host code. 7072 7073Example Code and Data Size: These are the sizes for the OS-independent 7074acpica.lib 7075produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7076version of 7077the code includes the debug output trace mechanism and has a much larger 7078code 7079and 7080data size. 7081 7082 Previous Release (VC 9.0): 7083 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7084 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7085 Current Release (VC 9.0): 7086 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7087 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7088 70892) iASL Compiler/Disassembler and Tools: 7090 7091iASL/DTC: Major update for new grammar features. Allow generic data types 7092in 7093custom ACPI tables. Field names are now optional. Any line can be split 7094to 7095multiple lines using the continuation char (\). Large buffers now use 7096line- 7097continuation character(s) and no colon on the continuation lines. See the 7098grammar 7099update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7100Moore. 7101 7102iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7103statements. 7104Since the parser stuffs a "zero" as the return value for these statements 7105(due 7106to 7107the underlying AML grammar), they were seen as "return with value" by the 7108iASL 7109semantic checking. They are now seen correctly as "null" return 7110statements. 7111 7112iASL: Check if a_REG declaration has a corresponding Operation Region. 7113Adds a 7114check for each _REG to ensure that there is in fact a corresponding 7115operation 7116region declaration in the same scope. If not, the _REG method is not very 7117useful 7118since it probably won't be executed. ACPICA BZ 915. 7119 7120iASL/DTC: Finish support for expression evaluation. Added a new 7121expression 7122parser 7123that implements c-style operator precedence and parenthesization. ACPICA 7124bugzilla 7125908. 7126 7127Disassembler/DTC: Remove support for () and <> style comments in data 7128tables. 7129Now 7130that DTC has full expression support, we don't want to have comment 7131strings 7132that 7133start with a parentheses or a less-than symbol. Now, only the standard /* 7134and 7135// 7136comments are supported, as well as the bracket [] comments. 7137 7138AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 7139"unusual" 7140headers in the acpidump file. Update the header validation to support 7141these 7142tables. Problem introduced in previous AcpiXtract version in the change 7143to 7144support "wrong checksum" error messages emitted by acpidump utility. 7145 7146iASL: Add a * option to generate all template files (as a synonym for 7147ALL) 7148as 7149in 7150"iasl -T *" or "iasl -T ALL". 7151 7152iASL/DTC: Do not abort compiler on fatal errors. We do not want to 7153completely 7154abort the compiler on "fatal" errors, simply should abort the current 7155compile. 7156This allows multiple compiles with a single (possibly wildcard) compiler 7157invocation. 7158 7159---------------------------------------- 716016 March 2011. Summary of changes for version 20110316: 7161 71621) ACPI CA Core Subsystem: 7163 7164Fixed a problem caused by a _PRW method appearing at the namespace root 7165scope 7166during the setup of wake GPEs. A fault could occur if a _PRW directly 7167under 7168the 7169root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 7170 7171Implemented support for "spurious" Global Lock interrupts. On some 7172systems, a 7173global lock interrupt can occur without the pending flag being set. Upon 7174a 7175GL 7176interrupt, we now ensure that a thread is actually waiting for the lock 7177before 7178signaling GL availability. Rafael Wysocki, Bob Moore. 7179 7180Example Code and Data Size: These are the sizes for the OS-independent 7181acpica.lib 7182produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7183version of 7184the code includes the debug output trace mechanism and has a much larger 7185code 7186and 7187data size. 7188 7189 Previous Release (VC 9.0): 7190 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7191 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7192 Current Release (VC 9.0): 7193 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7194 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7195 71962) iASL Compiler/Disassembler and Tools: 7197 7198Implemented full support for the "SLIC" ACPI table. Includes support in 7199the 7200header files, disassembler, table compiler, and template generator. Bob 7201Moore, 7202Lin Ming. 7203 7204AcpiXtract: Correctly handle embedded comments and messages from 7205AcpiDump. 7206Apparently some or all versions of acpidump will occasionally emit a 7207comment 7208like 7209"Wrong checksum", etc., into the dump file. This was causing problems for 7210AcpiXtract. ACPICA BZ 905. 7211 7212iASL: Fix the Linux makefile by removing an inadvertent double file 7213inclusion. 7214ACPICA BZ 913. 7215 7216AcpiExec: Update installation of operation region handlers. Install one 7217handler 7218for a user-defined address space. This is used by the ASL test suite 7219(ASLTS). 7220 7221---------------------------------------- 722211 February 2011. Summary of changes for version 20110211: 7223 72241) ACPI CA Core Subsystem: 7225 7226Added a mechanism to defer _REG methods for some early-installed 7227handlers. 7228Most user handlers should be installed before call to 7229AcpiEnableSubsystem. 7230However, Event handlers and region handlers should be installed after 7231AcpiInitializeObjects. Override handlers for the "default" regions should 7232be 7233installed early, however. This change executes all _REG methods for the 7234default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 7235chicken/egg issues between them. ACPICA BZ 848. 7236 7237Implemented an optimization for GPE detection. This optimization will 7238simply 7239ignore GPE registers that contain no enabled GPEs -- there is no need to 7240read the register since this information is available internally. This 7241becomes more important on machines with a large GPE space. ACPICA 7242bugzilla 7243884. Lin Ming. Suggestion from Joe Liu. 7244 7245Removed all use of the highly unreliable FADT revision field. The 7246revision 7247number in the FADT has been found to be completely unreliable and cannot 7248be 7249trusted. Only the actual table length can be used to infer the version. 7250This 7251change updates the ACPICA core and the disassembler so that both no 7252longer 7253even look at the FADT version and instead depend solely upon the FADT 7254length. 7255 7256Fix an unresolved name issue for the no-debug and no-error-message source 7257generation cases. The _AcpiModuleName was left undefined in these cases, 7258but 7259it is actually needed as a parameter to some interfaces. Define 7260_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 7261 7262Split several large files (makefiles and project files updated) 7263 utglobal.c -> utdecode.c 7264 dbcomds.c -> dbmethod.c dbnames.c 7265 dsopcode.c -> dsargs.c dscontrol.c 7266 dsload.c -> dsload2.c 7267 aslanalyze.c -> aslbtypes.c aslwalks.c 7268 7269Example Code and Data Size: These are the sizes for the OS-independent 7270acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7271debug version of the code includes the debug output trace mechanism and 7272has 7273a much larger code and data size. 7274 7275 Previous Release (VC 9.0): 7276 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7277 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7278 Current Release (VC 9.0): 7279 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7280 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7281 72822) iASL Compiler/Disassembler and Tools: 7283 7284iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 7285These are useful C-style macros with the standard definitions. ACPICA 7286bugzilla 898. 7287 7288iASL/DTC: Added support for integer expressions and labels. Support for 7289full 7290expressions for all integer fields in all ACPI tables. Support for labels 7291in 7292"generic" portions of tables such as UEFI. See the iASL reference manual. 7293 7294Debugger: Added a command to display the status of global handlers. The 7295"handlers" command will display op region, fixed event, and miscellaneous 7296global handlers. installation status -- and for op regions, whether 7297default 7298or user-installed handler will be used. 7299 7300iASL: Warn if reserved method incorrectly returns a value. Many 7301predefined 7302names are defined such that they do not return a value. If implemented as 7303a 7304method, issue a warning if such a name explicitly returns a value. ACPICA 7305Bugzilla 855. 7306 7307iASL: Added detection of GPE method name conflicts. Detects a conflict 7308where 7309there are two GPE methods of the form _Lxy and _Exy in the same scope. 7310(For 7311example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 7312 7313iASL/DTC: Fixed a couple input scanner issues with comments and line 7314numbers. Comment remover could get confused and miss a comment ending. 7315Fixed 7316a problem with line counter maintenance. 7317 7318iASL/DTC: Reduced the severity of some errors from fatal to error. There 7319is 7320no need to abort on simple errors within a field definition. 7321 7322Debugger: Simplified the output of the help command. All help output now 7323in 7324a single screen, instead of help subcommands. ACPICA Bugzilla 897. 7325 7326---------------------------------------- 732712 January 2011. Summary of changes for version 20110112: 7328 73291) ACPI CA Core Subsystem: 7330 7331Fixed a race condition between method execution and namespace walks that 7332can 7333possibly cause a fault. The problem was apparently introduced in version 733420100528 as a result of a performance optimization that reduces the 7335number 7336of 7337namespace walks upon method exit by using the delete_namespace_subtree 7338function instead of the delete_namespace_by_owner function used 7339previously. 7340Bug is a missing namespace lock in the delete_namespace_subtree function. 7341dana.myers@oracle.com 7342 7343Fixed several issues and a possible fault with the automatic "serialized" 7344method support. History: This support changes a method to "serialized" on 7345the 7346fly if the method generates an AE_ALREADY_EXISTS error, indicating the 7347possibility that it cannot handle reentrancy. This fix repairs a couple 7348of 7349issues seen in the field, especially on machines with many cores: 7350 7351 1) Delete method children only upon the exit of the last thread, 7352 so as to not delete objects out from under other running threads 7353 (and possibly causing a fault.) 7354 2) Set the "serialized" bit for the method only upon the exit of the 7355 Last thread, so as to not cause deadlock when running threads 7356 attempt to exit. 7357 3) Cleanup the use of the AML "MethodFlags" and internal method flags 7358 so that there is no longer any confusion between the two. 7359 7360 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 7361 7362Debugger: Now lock the namespace for duration of a namespace dump. 7363Prevents 7364issues if the namespace is changing dynamically underneath the debugger. 7365Especially affects temporary namespace nodes, since the debugger displays 7366these also. 7367 7368Updated the ordering of include files. The ACPICA headers should appear 7369before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 7370set 7371any necessary compiler-specific defines, etc. Affects the ACPI-related 7372tools 7373and utilities. 7374 7375Updated all ACPICA copyrights and signons to 2011. Added the 2011 7376copyright 7377to all module headers and signons, including the Linux header. This 7378affects 7379virtually every file in the ACPICA core subsystem, iASL compiler, and all 7380utilities. 7381 7382Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 7383project files for VC++ 6.0 are now obsolete. New project files can be 7384found 7385under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 7386details. 7387 7388Example Code and Data Size: These are the sizes for the OS-independent 7389acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7390debug version of the code includes the debug output trace mechanism and 7391has a 7392much larger code and data size. 7393 7394 Previous Release (VC 6.0): 7395 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7396 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7397 Current Release (VC 9.0): 7398 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7399 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7400 74012) iASL Compiler/Disassembler and Tools: 7402 7403iASL: Added generic data types to the Data Table compiler. Add "generic" 7404data 7405types such as UINT32, String, Unicode, etc., to simplify the generation 7406of 7407platform-defined tables such as UEFI. Lin Ming. 7408 7409iASL: Added listing support for the Data Table Compiler. Adds listing 7410support 7411(-l) to display actual binary output for each line of input code. 7412 7413---------------------------------------- 741409 December 2010. Summary of changes for version 20101209: 7415 74161) ACPI CA Core Subsystem: 7417 7418Completed the major overhaul of the GPE support code that was begun in 7419July 74202010. Major features include: removal of _PRW execution in ACPICA (host 7421executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 7422changes to existing interfaces, simplification of GPE handler operation, 7423and 7424a handful of new interfaces: 7425 7426 AcpiUpdateAllGpes 7427 AcpiFinishGpe 7428 AcpiSetupGpeForWake 7429 AcpiSetGpeWakeMask 7430 One new file, evxfgpe.c to consolidate all external GPE interfaces. 7431 7432See the ACPICA Programmer Reference for full details and programming 7433information. See the new section 4.4 "General Purpose Event (GPE) 7434Support" 7435for a full overview, and section 8.7 "ACPI General Purpose Event 7436Management" 7437for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 7438Ming, 7439Bob Moore, Rafael Wysocki. 7440 7441Implemented a new GPE feature for Windows compatibility, the "Implicit 7442Wake 7443GPE Notify". This feature will automatically issue a Notify(2) on a 7444device 7445when a Wake GPE is received if there is no corresponding GPE method or 7446handler. ACPICA BZ 870. 7447 7448Fixed a problem with the Scope() operator during table parse and load 7449phase. 7450During load phase (table load or method execution), the scope operator 7451should 7452not enter the target into the namespace. Instead, it should open a new 7453scope 7454at the target location. Linux BZ 19462, ACPICA BZ 882. 7455 7456Example Code and Data Size: These are the sizes for the OS-independent 7457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7458debug version of the code includes the debug output trace mechanism and 7459has a 7460much larger code and data size. 7461 7462 Previous Release: 7463 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7464 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7465 Current Release: 7466 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7467 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7468 74692) iASL Compiler/Disassembler and Tools: 7470 7471iASL: Relax the alphanumeric restriction on _CID strings. These strings 7472are 7473"bus-specific" per the ACPI specification, and therefore any characters 7474are 7475acceptable. The only checks that can be performed are for a null string 7476and 7477perhaps for a leading asterisk. ACPICA BZ 886. 7478 7479iASL: Fixed a problem where a syntax error that caused a premature EOF 7480condition on the source file emitted a very confusing error message. The 7481premature EOF is now detected correctly. ACPICA BZ 891. 7482 7483Disassembler: Decode the AccessSize within a Generic Address Structure 7484(byte 7485access, word access, etc.) Note, this field does not allow arbitrary bit 7486access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 7487 7488New: AcpiNames utility - Example namespace dump utility. Shows an example 7489of 7490ACPICA configuration for a minimal namespace dump utility. Uses table and 7491namespace managers, but no AML interpreter. Does not add any 7492functionality 7493over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 7494partition and configure ACPICA. ACPICA BZ 883. 7495 7496AML Debugger: Increased the debugger buffer size for method return 7497objects. 7498Was 4K, increased to 16K. Also enhanced error messages for debugger 7499method 7500execution, including the buffer overflow case. 7501 7502---------------------------------------- 750313 October 2010. Summary of changes for version 20101013: 7504 75051) ACPI CA Core Subsystem: 7506 7507Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 7508now 7509clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 7510HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 7511 7512Changed the type of the predefined namespace object _TZ from ThermalZone 7513to 7514Device. This was found to be confusing to the host software that 7515processes 7516the various thermal zones, since _TZ is not really a ThermalZone. 7517However, 7518a 7519Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 7520Zhang. 7521 7522Added Windows Vista SP2 to the list of supported _OSI strings. The actual 7523string is "Windows 2006 SP2". 7524 7525Eliminated duplicate code in AcpiUtExecute* functions. Now that the 7526nsrepair 7527code automatically repairs _HID-related strings, this type of code is no 7528longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 7529878. 7530 7531Example Code and Data Size: These are the sizes for the OS-independent 7532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7533debug version of the code includes the debug output trace mechanism and 7534has a 7535much larger code and data size. 7536 7537 Previous Release: 7538 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7539 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7540 Current Release: 7541 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7542 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7543 75442) iASL Compiler/Disassembler and Tools: 7545 7546iASL: Implemented additional compile-time validation for _HID strings. 7547The 7548non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 7549length 7550of 7551the string must be exactly seven or eight characters. For both _HID and 7552_CID 7553strings, all characters must be alphanumeric. ACPICA BZ 874. 7554 7555iASL: Allow certain "null" resource descriptors. Some BIOS code creates 7556descriptors that are mostly or all zeros, with the expectation that they 7557will 7558be filled in at runtime. iASL now allows this as long as there is a 7559"resource 7560tag" (name) associated with the descriptor, which gives the ASL a handle 7561needed to modify the descriptor. ACPICA BZ 873. 7562 7563Added single-thread support to the generic Unix application OSL. 7564Primarily 7565for iASL support, this change removes the use of semaphores in the 7566single- 7567threaded ACPICA tools/applications - increasing performance. The 7568_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 7569option. ACPICA BZ 879. 7570 7571AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 7572support 7573for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 7574 7575iASL: Moved all compiler messages to a new file, aslmessages.h. 7576 7577---------------------------------------- 757815 September 2010. Summary of changes for version 20100915: 7579 75801) ACPI CA Core Subsystem: 7581 7582Removed the AcpiOsDerivePciId OSL interface. The various host 7583implementations 7584of this function were not OS-dependent and are now obsolete and can be 7585removed from all host OSLs. This function has been replaced by 7586AcpiHwDerivePciId, which is now part of the ACPICA core code. 7587AcpiHwDerivePciId has been implemented without recursion. Adds one new 7588module, hwpci.c. ACPICA BZ 857. 7589 7590Implemented a dynamic repair for _HID and _CID strings. The following 7591problems are now repaired at runtime: 1) Remove a leading asterisk in the 7592string, and 2) the entire string is uppercased. Both repairs are in 7593accordance with the ACPI specification and will simplify host driver 7594code. 7595ACPICA BZ 871. 7596 7597The ACPI_THREAD_ID type is no longer configurable, internally it is now 7598always UINT64. This simplifies the ACPICA code, especially any printf 7599output. 7600UINT64 is the only common data type for all thread_id types across all 7601operating systems. It is now up to the host OSL to cast the native 7602thread_id 7603type to UINT64 before returning the value to ACPICA (via 7604AcpiOsGetThreadId). 7605Lin Ming, Bob Moore. 7606 7607Added the ACPI_INLINE type to enhance the ACPICA configuration. The 7608"inline" 7609keyword is not standard across compilers, and this type allows inline to 7610be 7611configured on a per-compiler basis. Lin Ming. 7612 7613Made the system global AcpiGbl_SystemAwakeAndRunning publicly 7614available. 7615Added an extern for this boolean in acpixf.h. Some hosts utilize this 7616value 7617during suspend/restore operations. ACPICA BZ 869. 7618 7619All code that implements error/warning messages with the "ACPI:" prefix 7620has 7621been moved to a new module, utxferror.c. 7622 7623The UINT64_OVERLAY was moved to utmath.c, which is the only module where 7624it 7625is used. ACPICA BZ 829. Lin Ming, Bob Moore. 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: 89.1K Code, 19.0K Data, 108.1K Total 7635 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7636 Current Release: 7637 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7638 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7639 76402) iASL Compiler/Disassembler and Tools: 7641 7642iASL/Disassembler: Write ACPI errors to stderr instead of the output 7643file. 7644This keeps the output files free of random error messages that may 7645originate 7646from within the namespace/interpreter code. Used this opportunity to 7647merge 7648all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 7649866. Lin Ming, Bob Moore. 7650 7651Tools: update some printfs for ansi warnings on size_t. Handle width 7652change 7653of size_t on 32-bit versus 64-bit generations. Lin Ming. 7654 7655---------------------------------------- 765606 August 2010. Summary of changes for version 20100806: 7657 76581) ACPI CA Core Subsystem: 7659 7660Designed and implemented a new host interface to the _OSI support code. 7661This 7662will allow the host to dynamically add or remove multiple _OSI strings, 7663as 7664well as install an optional handler that is called for each _OSI 7665invocation. 7666Also added a new AML debugger command, 'osi' to display and modify the 7667global 7668_OSI string table, and test support in the AcpiExec utility. See the 7669ACPICA 7670reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 7671New Functions: 7672 AcpiInstallInterface - Add an _OSI string. 7673 AcpiRemoveInterface - Delete an _OSI string. 7674 AcpiInstallInterfaceHandler - Install optional _OSI handler. 7675Obsolete Functions: 7676 AcpiOsValidateInterface - no longer used. 7677New Files: 7678 source/components/utilities/utosi.c 7679 7680Re-introduced the support to enable multi-byte transfers for Embedded 7681Controller (EC) operation regions. A reported problem was found to be a 7682bug 7683in the host OS, not in the multi-byte support. Previously, the maximum 7684data 7685size passed to the EC operation region handler was a single byte. There 7686are 7687often EC Fields larger than one byte that need to be transferred, and it 7688is 7689useful for the EC driver to lock these as a single transaction. This 7690change 7691enables single transfers larger than 8 bits. This effectively changes the 7692access to the EC space from ByteAcc to AnyAcc, and will probably require 7693changes to the host OS Embedded Controller driver to enable 16/32/64/256- 7694bit 7695transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 7696 7697Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 7698prototype in acpiosxf.h had the output value pointer as a (void *). 7699It should be a (UINT64 *). This may affect some host OSL code. 7700 7701Fixed a couple problems with the recently modified Linux makefiles for 7702iASL 7703and AcpiExec. These new makefiles place the generated object files in the 7704local directory so that there can be no collisions between the files that 7705are 7706shared between them that are compiled with different options. 7707 7708Example Code and Data Size: These are the sizes for the OS-independent 7709acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7710debug version of the code includes the debug output trace mechanism and 7711has a 7712much larger code and data size. 7713 7714 Previous Release: 7715 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7716 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7717 Current Release: 7718 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7719 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7720 77212) iASL Compiler/Disassembler and Tools: 7722 7723iASL/Disassembler: Added a new option (-da, "disassemble all") to load 7724the 7725namespace from and disassemble an entire group of AML files. Useful for 7726loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 7727and 7728disassembling with one simple command. ACPICA BZ 865. Lin Ming. 7729 7730iASL: Allow multiple invocations of -e option. This change allows 7731multiple 7732uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 7733834. 7734Lin Ming. 7735 7736---------------------------------------- 773702 July 2010. Summary of changes for version 20100702: 7738 77391) ACPI CA Core Subsystem: 7740 7741Implemented several updates to the recently added GPE reference count 7742support. The model for "wake" GPEs is changing to give the host OS 7743complete 7744control of these GPEs. Eventually, the ACPICA core will not execute any 7745_PRW 7746methods, since the host already must execute them. Also, additional 7747changes 7748were made to help ensure that the reference counts are kept in proper 7749synchronization with reality. Rafael J. Wysocki. 7750 77511) Ensure that GPEs are not enabled twice during initialization. 77522) Ensure that GPE enable masks stay in sync with the reference count. 77533) Do not inadvertently enable GPEs when writing GPE registers. 77544) Remove the internal wake reference counter and add new AcpiGpeWakeup 7755interface. This interface will set or clear individual GPEs for wakeup. 77565) Remove GpeType argument from AcpiEnable and AcpiDisable. These 7757interfaces 7758are now used for "runtime" GPEs only. 7759 7760Changed the behavior of the GPE install/remove handler interfaces. The 7761GPE 7762is 7763no longer disabled during this process, as it was found to cause problems 7764on 7765some machines. Rafael J. Wysocki. 7766 7767Reverted a change introduced in version 20100528 to enable Embedded 7768Controller multi-byte transfers. This change was found to cause problems 7769with 7770Index Fields and possibly Bank Fields. It will be reintroduced when these 7771problems have been resolved. 7772 7773Fixed a problem with references to Alias objects within Package Objects. 7774A 7775reference to an Alias within the definition of a Package was not always 7776resolved properly. Aliases to objects like Processors, Thermal zones, 7777etc. 7778were resolved to the actual object instead of a reference to the object 7779as 7780it 7781should be. Package objects are only allowed to contain integer, string, 7782buffer, package, and reference objects. Redhat bugzilla 608648. 7783 7784Example Code and Data Size: These are the sizes for the OS-independent 7785acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7786debug version of the code includes the debug output trace mechanism and 7787has a 7788much larger code and data size. 7789 7790 Previous Release: 7791 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7792 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7793 Current Release: 7794 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7795 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7796 77972) iASL Compiler/Disassembler and Tools: 7798 7799iASL: Implemented a new compiler subsystem to allow definition and 7800compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 7801These 7802are called "ACPI Data Tables", and the new compiler is the "Data Table 7803Compiler". This compiler is intended to simplify the existing error-prone 7804process of creating these tables for the BIOS, as well as allowing the 7805disassembly, modification, recompilation, and override of existing ACPI 7806data 7807tables. See the iASL User Guide for detailed information. 7808 7809iASL: Implemented a new Template Generator option in support of the new 7810Data 7811Table Compiler. This option will create examples of all known ACPI tables 7812that can be used as the basis for table development. See the iASL 7813documentation and the -T option. 7814 7815Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 7816Descriptor Table). 7817 7818Updated the Linux makefiles for iASL and AcpiExec to place the generated 7819object files in the local directory so that there can be no collisions 7820between the shared files between them that are generated with different 7821options. 7822 7823Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 7824Use 7825the #define __APPLE__ to enable this support. 7826 7827---------------------------------------- 782828 May 2010. Summary of changes for version 20100528: 7829 7830Note: The ACPI 4.0a specification was released on April 5, 2010 and is 7831available at www.acpi.info. This is primarily an errata release. 7832 78331) ACPI CA Core Subsystem: 7834 7835Undefined ACPI tables: We are looking for the definitions for the 7836following 7837ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 7838 7839Implemented support to enable multi-byte transfers for Embedded 7840Controller 7841(EC) operation regions. Previously, the maximum data size passed to the 7842EC 7843operation region handler was a single byte. There are often EC Fields 7844larger 7845than one byte that need to be transferred, and it is useful for the EC 7846driver 7847to lock these as a single transaction. This change enables single 7848transfers 7849larger than 8 bits. This effectively changes the access to the EC space 7850from 7851ByteAcc to AnyAcc, and will probably require changes to the host OS 7852Embedded 7853Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 7854bit 7855transfers. Alexey Starikovskiy, Lin Ming 7856 7857Implemented a performance enhancement for namespace search and access. 7858This 7859change enhances the performance of namespace searches and walks by adding 7860a 7861backpointer to the parent in each namespace node. On large namespaces, 7862this 7863change can improve overall ACPI performance by up to 9X. Adding a pointer 7864to 7865each namespace node increases the overall size of the internal namespace 7866by 7867about 5%, since each namespace entry usually consists of both a namespace 7868node and an ACPI operand object. However, this is the first growth of the 7869namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 7870 7871Implemented a performance optimization that reduces the number of 7872namespace 7873walks. On control method exit, only walk the namespace if the method is 7874known 7875to have created namespace objects outside of its local scope. Previously, 7876the 7877entire namespace was traversed on each control method exit. This change 7878can 7879improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 7880Moore. 7881 7882Added support to truncate I/O addresses to 16 bits for Windows 7883compatibility. 7884Some ASL code has been seen in the field that inadvertently has bits set 7885above bit 15. This feature is optional and is enabled if the BIOS 7886requests 7887any Windows OSI strings. It can also be enabled by the host OS. Matthew 7888Garrett, Bob Moore. 7889 7890Added support to limit the maximum time for the ASL Sleep() operator. To 7891prevent accidental deep sleeps, limit the maximum time that Sleep() will 7892actually sleep. Configurable, the default maximum is two seconds. ACPICA 7893bugzilla 854. 7894 7895Added run-time validation support for the _WDG and_WED Microsoft 7896predefined 7897methods. These objects are defined by "Windows Instrumentation", and are 7898not 7899part of the ACPI spec. ACPICA BZ 860. 7900 7901Expanded all statistic counters used during namespace and device 7902initialization from 16 to 32 bits in order to support very large 7903namespaces. 7904 7905Replaced all instances of %d in printf format specifiers with %u since 7906nearly 7907all integers in ACPICA are unsigned. 7908 7909Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 7910returned 7911as AE_NO_HANDLER. 7912 7913Example Code and Data Size: These are the sizes for the OS-independent 7914acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7915debug version of the code includes the debug output trace mechanism and 7916has a 7917much larger code and data size. 7918 7919 Previous Release: 7920 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7921 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7922 Current Release: 7923 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7924 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7925 79262) iASL Compiler/Disassembler and Tools: 7927 7928iASL: Added compiler support for the _WDG and_WED Microsoft predefined 7929methods. These objects are defined by "Windows Instrumentation", and are 7930not 7931part of the ACPI spec. ACPICA BZ 860. 7932 7933AcpiExec: added option to disable the memory tracking mechanism. The -dt 7934option will disable the tracking mechanism, which improves performance 7935considerably. 7936 7937AcpiExec: Restructured the command line options into -d (disable) and -e 7938(enable) options. 7939 7940---------------------------------------- 794128 April 2010. Summary of changes for version 20100428: 7942 79431) ACPI CA Core Subsystem: 7944 7945Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 7946including FADT-based and GPE Block Devices, execute any _PRW methods in 7947the 7948new table, and process any _Lxx/_Exx GPE methods in the new table. Any 7949runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 7950immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 7951Devices. Provides compatibility with other ACPI implementations. Two new 7952files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 7953Moore. 7954 7955Fixed a regression introduced in version 20100331 within the table 7956manager 7957where initial table loading could fail. This was introduced in the fix 7958for 7959AcpiReallocateRootTable. Also, renamed some of fields in the table 7960manager 7961data structures to clarify their meaning and use. 7962 7963Fixed a possible allocation overrun during internal object copy in 7964AcpiUtCopySimpleObject. The original code did not correctly handle the 7965case 7966where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 7967847. 7968 7969Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 7970possible access beyond end-of-allocation. Also, now fully validate 7971descriptor 7972(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 7973 7974Example Code and Data Size: These are the sizes for the OS-independent 7975acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7976debug version of the code includes the debug output trace mechanism and 7977has a 7978much larger code and data size. 7979 7980 Previous Release: 7981 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7982 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7983 Current Release: 7984 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7985 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7986 79872) iASL Compiler/Disassembler and Tools: 7988 7989iASL: Implemented Min/Max/Len/Gran validation for address resource 7990descriptors. This change implements validation for the address fields 7991that 7992are common to all address-type resource descriptors. These checks are 7993implemented: Checks for valid Min/Max, length within the Min/Max window, 7994valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 7995per 7996table 6-40 in the ACPI 4.0a specification. Also split the large 7997aslrestype1.c 7998and aslrestype2.c files into five new files. ACPICA BZ 840. 7999 8000iASL: Added support for the _Wxx predefined names. This support was 8001missing 8002and these names were not recognized by the compiler as valid predefined 8003names. ACPICA BZ 851. 8004 8005iASL: Added an error for all predefined names that are defined to return 8006no 8007value and thus must be implemented as Control Methods. These include all 8008of 8009the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8010names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8011 8012iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8013an 8014ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8015be 8016dynamically loaded via the Load() operator. Also cleaned up output for 8017the 8018- 8019ta and -tc options. ACPICA BZ 853. 8020 8021Tests: Added a new file with examples of extended iASL error checking. 8022Demonstrates the advanced error checking ability of the iASL compiler. 8023Available at tests/misc/badcode.asl. 8024 8025---------------------------------------- 802631 March 2010. Summary of changes for version 20100331: 8027 80281) ACPI CA Core Subsystem: 8029 8030Completed a major update for the GPE support in order to improve support 8031for 8032shared GPEs and to simplify both host OS and ACPICA code. Added a 8033reference 8034count mechanism to support shared GPEs that require multiple device 8035drivers. 8036Several external interfaces have changed. One external interface has been 8037removed. One new external interface was added. Most of the GPE external 8038interfaces now use the GPE spinlock instead of the events mutex (and the 8039Flags parameter for many GPE interfaces has been removed.) See the 8040updated 8041ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8042Rafael 8043Wysocki. ACPICA BZ 831. 8044 8045Changed: 8046 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8047Removed: 8048 AcpiSetGpeType 8049New: 8050 AcpiSetGpe 8051 8052Implemented write support for DataTable operation regions. These regions 8053are 8054defined via the DataTableRegion() operator. Previously, only read support 8055was 8056implemented. The ACPI specification allows DataTableRegions to be 8057read/write, 8058however. 8059 8060Implemented a new subsystem option to force a copy of the DSDT to local 8061memory. Optionally copy the entire DSDT to local memory (instead of 8062simply 8063mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8064replace 8065the original DSDT, creating the need for this option. Default is FALSE, 8066do 8067not copy the DSDT. 8068 8069Implemented detection of a corrupted or replaced DSDT. This change adds 8070support to detect a DSDT that has been corrupted and/or replaced from 8071outside 8072the OS (by firmware). This is typically catastrophic for the system, but 8073has 8074been seen on some machines. Once this problem has been detected, the DSDT 8075copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8076 8077Fixed two problems with AcpiReallocateRootTable during the root table 8078copy. 8079When copying the root table to the new allocation, the length used was 8080incorrect. The new size was used instead of the current table size, 8081meaning 8082too much data was copied. Also, the count of available slots for ACPI 8083tables 8084was not set correctly. Alexey Starikovskiy, Bob Moore. 8085 8086Example Code and Data Size: These are the sizes for the OS-independent 8087acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8088debug version of the code includes the debug output trace mechanism and 8089has a 8090much larger code and data size. 8091 8092 Previous Release: 8093 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8094 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8095 Current Release: 8096 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8097 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8098 80992) iASL Compiler/Disassembler and Tools: 8100 8101iASL: Implement limited typechecking for values returned from predefined 8102control methods. The type of any returned static (unnamed) object is now 8103validated. For example, Return(1). ACPICA BZ 786. 8104 8105iASL: Fixed a predefined name object verification regression. Fixes a 8106problem 8107introduced in version 20100304. An error is incorrectly generated if a 8108predefined name is declared as a static named object with a value defined 8109using the keywords "Zero", "One", or "Ones". Lin Ming. 8110 8111iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8112by 8113reducing the requested registry access rights. ACPICA BZ 842. 8114 8115Disassembler: fixed a possible fault when generating External() 8116statements. 8117Introduced in commit ae7d6fd: Properly handle externals with parent- 8118prefix 8119(carat). Fixes a string length allocation calculation. Lin Ming. 8120 8121---------------------------------------- 812204 March 2010. Summary of changes for version 20100304: 8123 81241) ACPI CA Core Subsystem: 8125 8126Fixed a possible problem with the AML Mutex handling function 8127AcpiExReleaseMutex where the function could fault under the very rare 8128condition when the interpreter has blocked, the interpreter lock is 8129released, 8130the interpreter is then reentered via the same thread, and attempts to 8131acquire an AML mutex that was previously acquired. FreeBSD report 140979. 8132Lin 8133Ming. 8134 8135Implemented additional configuration support for the AML "Debug Object". 8136Output from the debug object can now be enabled via a global variable, 8137AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 8138debugging. 8139This debug output is now available in the release version of ACPICA 8140instead 8141of just the debug version. Also, the entire debug output module can now 8142be 8143configured out of the ACPICA build if desired. One new file added, 8144executer/exdebug.c. Lin Ming, Bob Moore. 8145 8146Added header support for the ACPI MCHI table (Management Controller Host 8147Interface Table). This table was added in ACPI 4.0, but the defining 8148document 8149has only recently become available. 8150 8151Standardized output of integer values for ACPICA warnings/errors. Always 8152use 81530x prefix for hex output, always use %u for unsigned integer decimal 8154output. 8155Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 8156400 8157invocations.) These invocations were converted from the original 8158ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 8159 8160Example Code and Data Size: These are the sizes for the OS-independent 8161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8162debug version of the code includes the debug output trace mechanism and 8163has a 8164much larger code and data size. 8165 8166 Previous Release: 8167 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8168 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8169 Current Release: 8170 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8171 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8172 81732) iASL Compiler/Disassembler and Tools: 8174 8175iASL: Implemented typechecking support for static (non-control method) 8176predefined named objects that are declared with the Name() operator. For 8177example, the type of this object is now validated to be of type Integer: 8178Name(_BBN, 1). This change migrates the compiler to using the core 8179predefined 8180name table instead of maintaining a local version. Added a new file, 8181aslpredef.c. ACPICA BZ 832. 8182 8183Disassembler: Added support for the ACPI 4.0 MCHI table. 8184 8185---------------------------------------- 818621 January 2010. Summary of changes for version 20100121: 8187 81881) ACPI CA Core Subsystem: 8189 8190Added the 2010 copyright to all module headers and signons. This affects 8191virtually every file in the ACPICA core subsystem, the iASL compiler, the 8192tools/utilities, and the test suites. 8193 8194Implemented a change to the AcpiGetDevices interface to eliminate 8195unnecessary 8196invocations of the _STA method. In the case where a specific _HID is 8197requested, do not run _STA until a _HID match is found. This eliminates 8198potentially dozens of _STA calls during a search for a particular 8199device/HID, 8200which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 8201 8202Implemented an additional repair for predefined method return values. 8203Attempt 8204to repair unexpected NULL elements within returned Package objects. 8205Create 8206an 8207Integer of value zero, a NULL String, or a zero-length Buffer as 8208appropriate. 8209ACPICA BZ 818. Lin Ming, Bob Moore. 8210 8211Removed the obsolete ACPI_INTEGER data type. This type was introduced as 8212the 8213code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 8214(with 821564-bit AML integers). It is now obsolete and this change removes it from 8216the 8217ACPICA code base, replaced by UINT64. The original typedef has been 8218retained 8219for now for compatibility with existing device driver code. ACPICA BZ 8220824. 8221 8222Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 8223in 8224the parse tree object. 8225 8226Added additional warning options for the gcc-4 generation. Updated the 8227source 8228accordingly. This includes some code restructuring to eliminate 8229unreachable 8230code, elimination of some gotos, elimination of unused return values, 8231some 8232additional casting, and removal of redundant declarations. 8233 8234Example Code and Data Size: These are the sizes for the OS-independent 8235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8236debug version of the code includes the debug output trace mechanism and 8237has a 8238much larger code and data size. 8239 8240 Previous Release: 8241 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8242 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8243 Current Release: 8244 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8245 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8246 82472) iASL Compiler/Disassembler and Tools: 8248 8249No functional changes for this release. 8250 8251---------------------------------------- 825214 December 2009. Summary of changes for version 20091214: 8253 82541) ACPI CA Core Subsystem: 8255 8256Enhanced automatic data type conversions for predefined name repairs. 8257This 8258change expands the automatic repairs/conversions for predefined name 8259return 8260values to make Integers, Strings, and Buffers fully interchangeable. 8261Also, 8262a 8263Buffer can be converted to a Package of Integers if necessary. The 8264nsrepair.c 8265module was completely restructured. Lin Ming, Bob Moore. 8266 8267Implemented automatic removal of null package elements during predefined 8268name 8269repairs. This change will automatically remove embedded and trailing NULL 8270package elements from returned package objects that are defined to 8271contain 8272a 8273variable number of sub-packages. The driver is then presented with a 8274package 8275with no null elements to deal with. ACPICA BZ 819. 8276 8277Implemented a repair for the predefined _FDE and _GTM names. The expected 8278return value for both names is a Buffer of 5 DWORDs. This repair fixes 8279two 8280possible problems (both seen in the field), where a package of integers 8281is 8282returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 8283Kim. 8284 8285Implemented additional module-level code support. This change will 8286properly 8287execute module-level code that is not at the root of the namespace (under 8288a 8289Device object, etc.). Now executes the code within the current scope 8290instead 8291of the root. ACPICA BZ 762. Lin Ming. 8292 8293Fixed possible mutex acquisition errors when running _REG methods. Fixes 8294a 8295problem where mutex errors can occur when running a _REG method that is 8296in 8297the same scope as a method-defined operation region or an operation 8298region 8299under a module-level IF block. This type of code is rare, so the problem 8300has 8301not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 8302 8303Fixed a possible memory leak during module-level code execution. An 8304object 8305could be leaked for each block of executed module-level code if the 8306interpreter slack mode is enabled This change deletes any implicitly 8307returned 8308object from the module-level code block. Lin Ming. 8309 8310Removed messages for successful predefined repair(s). The repair 8311mechanism 8312was considered too wordy. Now, messages are only unconditionally emitted 8313if 8314the return object cannot be repaired. Existing messages for successful 8315repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 8316827. 8317 8318Example Code and Data Size: These are the sizes for the OS-independent 8319acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8320debug version of the code includes the debug output trace mechanism and 8321has a 8322much larger code and data size. 8323 8324 Previous Release: 8325 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8326 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8327 Current Release: 8328 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8329 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8330 83312) iASL Compiler/Disassembler and Tools: 8332 8333iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 8334files 8335were no longer automatically removed at the termination of the compile. 8336 8337acpiexec: Implemented the -f option to specify default region fill value. 8338This option specifies the value used to initialize buffers that simulate 8339operation regions. Default value is zero. Useful for debugging problems 8340that 8341depend on a specific initial value for a region or field. 8342 8343---------------------------------------- 834412 November 2009. Summary of changes for version 20091112: 8345 83461) ACPI CA Core Subsystem: 8347 8348Implemented a post-order callback to AcpiWalkNamespace. The existing 8349interface only has a pre-order callback. This change adds an additional 8350parameter for a post-order callback which will be more useful for bus 8351scans. 8352ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 8353 8354Modified the behavior of the operation region memory mapping cache for 8355SystemMemory. Ensure that the memory mappings created for operation 8356regions 8357do not cross 4K page boundaries. Crossing a page boundary while mapping 8358regions can cause kernel warnings on some hosts if the pages have 8359different 8360attributes. Such regions are probably BIOS bugs, and this is the 8361workaround. 8362Linux BZ 14445. Lin Ming. 8363 8364Implemented an automatic repair for predefined methods that must return 8365sorted lists. This change will repair (by sorting) packages returned by 8366_ALR, 8367_PSS, and _TSS. Drivers can now assume that the packages are correctly 8368sorted 8369and do not contain NULL package elements. Adds one new file, 8370namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 8371 8372Fixed a possible fault during predefined name validation if a return 8373Package 8374object contains NULL elements. Also adds a warning if a NULL element is 8375followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 8376may 8377include repair or removal of all such NULL elements where possible. 8378 8379Implemented additional module-level executable AML code support. This 8380change 8381will execute module-level code that is not at the root of the namespace 8382(under a Device object, etc.) at table load time. Module-level executable 8383AML 8384code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 8385 8386Implemented a new internal function to create Integer objects. This 8387function 8388simplifies miscellaneous object creation code. ACPICA BZ 823. 8389 8390Reduced the severity of predefined repair messages, Warning to Info. 8391Since 8392the object was successfully repaired, a warning is too severe. Reduced to 8393an 8394info message for now. These messages may eventually be changed to debug- 8395only. 8396ACPICA BZ 812. 8397 8398Example Code and Data Size: These are the sizes for the OS-independent 8399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8400debug version of the code includes the debug output trace mechanism and 8401has a 8402much larger code and data size. 8403 8404 Previous Release: 8405 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8406 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8407 Current Release: 8408 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8409 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8410 84112) iASL Compiler/Disassembler and Tools: 8412 8413iASL: Implemented Switch() with While(1) so that Break works correctly. 8414This 8415change correctly implements the Switch operator with a surrounding 8416While(1) 8417so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 8418 8419iASL: Added a message if a package initializer list is shorter than 8420package 8421length. Adds a new remark for a Package() declaration if an initializer 8422list 8423exists, but is shorter than the declared length of the package. Although 8424technically legal, this is probably a coding error and it is seen in the 8425field. ACPICA BZ 815. Lin Ming, Bob Moore. 8426 8427iASL: Fixed a problem where the compiler could fault after the maximum 8428number 8429of errors was reached (200). 8430 8431acpixtract: Fixed a possible warning for pointer cast if the compiler 8432warning 8433level set very high. 8434 8435---------------------------------------- 843613 October 2009. Summary of changes for version 20091013: 8437 84381) ACPI CA Core Subsystem: 8439 8440Fixed a problem where an Operation Region _REG method could be executed 8441more 8442than once. If a custom address space handler is installed by the host 8443before 8444the "initialize operation regions" phase of the ACPICA initialization, 8445any 8446_REG methods for that address space could be executed twice. This change 8447fixes the problem. ACPICA BZ 427. Lin Ming. 8448 8449Fixed a possible memory leak for the Scope() ASL operator. When the exact 8450invocation of "Scope(\)" is executed (change scope to root), one internal 8451operand object was leaked. Lin Ming. 8452 8453Implemented a run-time repair for the _MAT predefined method. If the _MAT 8454return value is defined as a Field object in the AML, and the field 8455size is less than or equal to the default width of an integer (32 or 845664),_MAT 8457can incorrectly return an Integer instead of a Buffer. ACPICA now 8458automatically repairs this problem. ACPICA BZ 810. 8459 8460Implemented a run-time repair for the _BIF and _BIX predefined methods. 8461The 8462"OEM Information" field is often incorrectly returned as an Integer with 8463value zero if the field is not supported by the platform. This is due to 8464an 8465ambiguity in the ACPI specification. The field should always be a string. 8466ACPICA now automatically repairs this problem by returning a NULL string 8467within the returned Package. ACPICA BZ 807. 8468 8469Example Code and Data Size: These are the sizes for the OS-independent 8470acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8471debug version of the code includes the debug output trace mechanism and 8472has a 8473much larger code and data size. 8474 8475 Previous Release: 8476 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8477 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8478 Current Release: 8479 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8480 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8481 84822) iASL Compiler/Disassembler and Tools: 8483 8484Disassembler: Fixed a problem where references to external symbols that 8485contained one or more parent-prefixes (carats) were not handled 8486correctly, 8487possibly causing a fault. ACPICA BZ 806. Lin Ming. 8488 8489Disassembler: Restructured the code so that all functions that handle 8490external symbols are in a single module. One new file is added, 8491common/dmextern.c. 8492 8493AML Debugger: Added a max count argument for the Batch command (which 8494executes multiple predefined methods within the namespace.) 8495 8496iASL: Updated the compiler documentation (User Reference.) Available at 8497http://www.acpica.org/documentation/. ACPICA BZ 750. 8498 8499AcpiXtract: Updated for Lint and other formatting changes. Close all open 8500files. 8501 8502---------------------------------------- 850303 September 2009. Summary of changes for version 20090903: 8504 85051) ACPI CA Core Subsystem: 8506 8507For Windows Vista compatibility, added the automatic execution of an _INI 8508method located at the namespace root (\_INI). This method is executed at 8509table load time. This support is in addition to the automatic execution 8510of 8511\_SB._INI. Lin Ming. 8512 8513Fixed a possible memory leak in the interpreter for AML package objects 8514if 8515the package initializer list is longer than the defined size of the 8516package. 8517This apparently can only happen if the BIOS changes the package size on 8518the 8519fly (seen in a _PSS object), as ASL compilers do not allow this. The 8520interpreter will truncate the package to the defined size (and issue an 8521error 8522message), but previously could leave the extra objects undeleted if they 8523were 8524pre-created during the argument processing (such is the case if the 8525package 8526consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 8527 8528Fixed a problem seen when a Buffer or String is stored to itself via ASL. 8529This has been reported in the field. Previously, ACPICA would zero out 8530the 8531buffer/string. Now, the operation is treated as a noop. Provides Windows 8532compatibility. ACPICA BZ 803. Lin Ming. 8533 8534Removed an extraneous error message for ASL constructs of the form 8535Store(LocalX,LocalX) when LocalX is uninitialized. These curious 8536statements 8537are seen in many BIOSs and are once again treated as NOOPs and no error 8538is 8539emitted when they are encountered. ACPICA BZ 785. 8540 8541Fixed an extraneous warning message if a _DSM reserved method returns a 8542Package object. _DSM can return any type of object, so validation on the 8543return type cannot be performed. ACPICA BZ 802. 8544 8545Example Code and Data Size: These are the sizes for the OS-independent 8546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8547debug version of the code includes the debug output trace mechanism and 8548has a 8549much larger code and data size. 8550 8551 Previous Release: 8552 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8553 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8554 Current Release: 8555 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8556 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8557 85582) iASL Compiler/Disassembler and Tools: 8559 8560iASL: Fixed a problem with the use of the Alias operator and Resource 8561Templates. The correct alias is now constructed and no error is emitted. 8562ACPICA BZ 738. 8563 8564iASL: Implemented the -I option to specify additional search directories 8565for 8566include files. Allows multiple additional search paths for include files. 8567Directories are searched in the order specified on the command line 8568(after 8569the local directory is searched.) ACPICA BZ 800. 8570 8571iASL: Fixed a problem where the full pathname for include files was not 8572emitted for warnings/errors. This caused the IDE support to not work 8573properly. ACPICA BZ 765. 8574 8575iASL: Implemented the -@ option to specify a Windows-style response file 8576containing additional command line options. ACPICA BZ 801. 8577 8578AcpiExec: Added support to load multiple AML files simultaneously (such 8579as 8580a 8581DSDT and multiple SSDTs). Also added support for wildcards within the AML 8582pathname. These features allow all machine tables to be easily loaded and 8583debugged together. ACPICA BZ 804. 8584 8585Disassembler: Added missing support for disassembly of HEST table Error 8586Bank 8587subtables. 8588 8589---------------------------------------- 859030 July 2009. Summary of changes for version 20090730: 8591 8592The ACPI 4.0 implementation for ACPICA is complete with this release. 8593 85941) ACPI CA Core Subsystem: 8595 8596ACPI 4.0: Added header file support for all new and changed ACPI tables. 8597Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 8598new 8599for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 8600BERT, 8601EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 8602There 8603have been some ACPI 4.0 changes to other existing tables. Split the large 8604actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 8605 8606ACPI 4.0: Implemented predefined name validation for all new names. There 8607are 860831 new names in ACPI 4.0. The predefined validation module was split into 8609two 8610files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 8611 8612Implemented support for so-called "module-level executable code". This is 8613executable AML code that exists outside of any control method and is 8614intended 8615to be executed at table load time. Although illegal since ACPI 2.0, this 8616type 8617of code still exists and is apparently still being created. Blocks of 8618this 8619code are now detected and executed as intended. Currently, the code 8620blocks 8621must exist under either an If, Else, or While construct; these are the 8622typical cases seen in the field. ACPICA BZ 762. Lin Ming. 8623 8624Implemented an automatic dynamic repair for predefined names that return 8625nested Package objects. This applies to predefined names that are defined 8626to 8627return a variable-length Package of sub-packages. If the number of sub- 8628packages is one, BIOS code is occasionally seen that creates a simple 8629single 8630package with no sub-packages. This code attempts to fix the problem by 8631wrapping a new package object around the existing package. These methods 8632can 8633be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 8634BZ 8635790. 8636 8637Fixed a regression introduced in 20090625 for the AcpiGetDevices 8638interface. 8639The _HID/_CID matching was broken and no longer matched IDs correctly. 8640ACPICA 8641BZ 793. 8642 8643Fixed a problem with AcpiReset where the reset would silently fail if the 8644register was one of the protected I/O ports. AcpiReset now bypasses the 8645port 8646validation mechanism. This may eventually be driven into the 8647AcpiRead/Write 8648interfaces. 8649 8650Fixed a regression related to the recent update of the AcpiRead/Write 8651interfaces. A sleep/suspend could fail if the optional PM2 Control 8652register 8653does not exist during an attempt to write the Bus Master Arbitration bit. 8654(However, some hosts already delete the code that writes this bit, and 8655the 8656code may in fact be obsolete at this date.) ACPICA BZ 799. 8657 8658Fixed a problem where AcpiTerminate could fault if inadvertently called 8659twice 8660in succession. ACPICA BZ 795. 8661 8662Example Code and Data Size: These are the sizes for the OS-independent 8663acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8664debug version of the code includes the debug output trace mechanism and 8665has a 8666much larger code and data size. 8667 8668 Previous Release: 8669 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8670 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8671 Current Release: 8672 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8673 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8674 86752) iASL Compiler/Disassembler and Tools: 8676 8677ACPI 4.0: Implemented disassembler support for all new ACPI tables and 8678changes to existing tables. ACPICA BZ 775. 8679 8680---------------------------------------- 868125 June 2009. Summary of changes for version 20090625: 8682 8683The ACPI 4.0 Specification was released on June 16 and is available at 8684www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 8685continue for the next few releases. 8686 86871) ACPI CA Core Subsystem: 8688 8689ACPI 4.0: Implemented interpreter support for the IPMI operation region 8690address space. Includes support for bi-directional data buffers and an 8691IPMI 8692address space handler (to be installed by an IPMI device driver.) ACPICA 8693BZ 8694773. Lin Ming. 8695 8696ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 8697Includes 8698support in both the header files and the disassembler. 8699 8700Completed a major update for the AcpiGetObjectInfo external interface. 8701Changes include: 8702 - Support for variable, unlimited length HID, UID, and CID strings. 8703 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 8704etc.) 8705 - Call the _SxW power methods on behalf of a device object. 8706 - Determine if a device is a PCI root bridge. 8707 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 8708These changes will require an update to all callers of this interface. 8709See 8710the updated ACPICA Programmer Reference for details. One new source file 8711has 8712been added - utilities/utids.c. ACPICA BZ 368, 780. 8713 8714Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 8715transfers. The Value parameter has been extended from 32 bits to 64 bits 8716in 8717order to support new ACPI 4.0 tables. These changes will require an 8718update 8719to 8720all callers of these interfaces. See the ACPICA Programmer Reference for 8721details. ACPICA BZ 768. 8722 8723Fixed several problems with AcpiAttachData. The handler was not invoked 8724when 8725the host node was deleted. The data sub-object was not automatically 8726deleted 8727when the host node was deleted. The interface to the handler had an 8728unused 8729parameter, this was removed. ACPICA BZ 778. 8730 8731Enhanced the function that dumps ACPI table headers. All non-printable 8732characters in the string fields are now replaced with '?' (Signature, 8733OemId, 8734OemTableId, and CompilerId.) ACPI tables with non-printable characters in 8735these fields are occasionally seen in the field. ACPICA BZ 788. 8736 8737Fixed a problem with predefined method repair code where the code that 8738attempts to repair/convert an object of incorrect type is only executed 8739on 8740the first time the predefined method is called. The mechanism that 8741disables 8742warnings on subsequent calls was interfering with the repair mechanism. 8743ACPICA BZ 781. 8744 8745Fixed a possible memory leak in the predefined validation/repair code 8746when 8747a 8748buffer is automatically converted to an expected string object. 8749 8750Removed obsolete 16-bit files from the distribution and from the current 8751git 8752tree head. ACPICA BZ 776. 8753 8754Example Code and Data Size: These are the sizes for the OS-independent 8755acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8756debug version of the code includes the debug output trace mechanism and 8757has a 8758much larger code and data size. 8759 8760 Previous Release: 8761 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8762 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8763 Current Release: 8764 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8765 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8766 87672) iASL Compiler/Disassembler and Tools: 8768 8769ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 8770operation region keyword. ACPICA BZ 771, 772. Lin Ming. 8771 8772ACPI 4.0: iASL - implemented compile-time validation support for all new 8773predefined names and control methods (31 total). ACPICA BZ 769. 8774 8775---------------------------------------- 877621 May 2009. Summary of changes for version 20090521: 8777 87781) ACPI CA Core Subsystem: 8779 8780Disabled the preservation of the SCI enable bit in the PM1 control 8781register. 8782The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 8783to 8784be 8785a "preserved" bit - "OSPM always preserves this bit position", section 87864.7.3.2.1. However, some machines fail if this bit is in fact preserved 8787because the bit needs to be explicitly set by the OS as a workaround. No 8788machines fail if the bit is not preserved. Therefore, ACPICA no longer 8789attempts to preserve this bit. 8790 8791Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 8792incorrectly formed _PRT package could cause a fault. Added validation to 8793ensure that each package element is actually a sub-package. 8794 8795Implemented a new interface to install or override a single control 8796method, 8797AcpiInstallMethod. This interface is useful when debugging in order to 8798repair 8799an existing method or to install a missing method without having to 8800override 8801the entire ACPI table. See the ACPICA Programmer Reference for use and 8802examples. Lin Ming, Bob Moore. 8803 8804Fixed several reference count issues with the DdbHandle object that is 8805created from a Load or LoadTable operator. Prevent premature deletion of 8806the 8807object. Also, mark the object as invalid once the table has been 8808unloaded. 8809This is needed because the handle itself may not be deleted after the 8810table 8811unload, depending on whether it has been stored in a named object by the 8812caller. Lin Ming. 8813 8814Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 8815mutexes of the same sync level are acquired but then not released in 8816strict 8817opposite order, the internally maintained Current Sync Level becomes 8818confused 8819and can cause subsequent execution errors. ACPICA BZ 471. 8820 8821Changed the allowable release order for ASL mutex objects. The ACPI 4.0 8822specification has been changed to make the SyncLevel for mutex objects 8823more 8824useful. When releasing a mutex, the SyncLevel of the mutex must now be 8825the 8826same as the current sync level. This makes more sense than the previous 8827rule 8828(SyncLevel less than or equal). This change updates the code to match the 8829specification. 8830 8831Fixed a problem with the local version of the AcpiOsPurgeCache function. 8832The 8833(local) cache must be locked during all cache object deletions. Andrew 8834Baumann. 8835 8836Updated the Load operator to use operation region interfaces. This 8837replaces 8838direct memory mapping with region access calls. Now, all region accesses 8839go 8840through the installed region handler as they should. 8841 8842Simplified and optimized the NsGetNextNode function. Reduced parameter 8843count 8844and reduced code for this frequently used function. 8845 8846Example Code and Data Size: These are the sizes for the OS-independent 8847acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8848debug version of the code includes the debug output trace mechanism and 8849has a 8850much larger code and data size. 8851 8852 Previous Release: 8853 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8854 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8855 Current Release: 8856 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8857 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8858 88592) iASL Compiler/Disassembler and Tools: 8860 8861Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 8862problems 8863with sub-table disassembly and handling invalid sub-tables. Attempt 8864recovery 8865after an invalid sub-table ID. 8866 8867---------------------------------------- 886822 April 2009. Summary of changes for version 20090422: 8869 88701) ACPI CA Core Subsystem: 8871 8872Fixed a compatibility issue with the recently released I/O port 8873protection 8874mechanism. For windows compatibility, 1) On a port protection violation, 8875simply ignore the request and do not return an exception (allow the 8876control 8877method to continue execution.) 2) If only part of the request overlaps a 8878protected port, read/write the individual ports that are not protected. 8879Linux 8880BZ 13036. Lin Ming 8881 8882Enhanced the execution of the ASL/AML BreakPoint operator so that it 8883actually 8884breaks into the AML debugger if the debugger is present. This matches the 8885ACPI-defined behavior. 8886 8887Fixed several possible warnings related to the use of the configurable 8888ACPI_THREAD_ID. This type can now be configured as either an integer or a 8889pointer with no warnings. Also fixes several warnings in printf-like 8890statements for the 64-bit build when the type is configured as a pointer. 8891ACPICA BZ 766, 767. 8892 8893Fixed a number of possible warnings when compiling with gcc 4+ (depending 8894on 8895warning options.) Examples include printf formats, aliasing, unused 8896globals, 8897missing prototypes, missing switch default statements, use of non-ANSI 8898library functions, use of non-ANSI constructs. See generate/unix/Makefile 8899for 8900a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 8901 8902Example Code and Data Size: These are the sizes for the OS-independent 8903acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8904debug version of the code includes the debug output trace mechanism and 8905has a 8906much larger code and data size. 8907 8908 Previous Release: 8909 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8910 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8911 Current Release: 8912 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8913 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8914 89152) iASL Compiler/Disassembler and Tools: 8916 8917iASL: Fixed a generation warning from Bison 2.3 and fixed several 8918warnings 8919on 8920the 64-bit build. 8921 8922iASL: Fixed a problem where the Unix/Linux versions of the compiler could 8923not 8924correctly digest Windows/DOS formatted files (with CR/LF). 8925 8926iASL: Added a new option for "quiet mode" (-va) that produces only the 8927compilation summary, not individual errors and warnings. Useful for large 8928batch compilations. 8929 8930AcpiExec: Implemented a new option (-z) to enable a forced 8931semaphore/mutex 8932timeout that can be used to detect hang conditions during execution of 8933AML 8934code (includes both internal semaphores and AML-defined mutexes and 8935events.) 8936 8937Added new makefiles for the generation of acpica in a generic unix-like 8938environment. These makefiles are intended to generate the acpica tools 8939and 8940utilities from the original acpica git source tree structure. 8941 8942Test Suites: Updated and cleaned up the documentation files. Updated the 8943copyrights to 2009, affecting all source files. Use the new version of 8944iASL 8945with quiet mode. Increased the number of available semaphores in the 8946Windows 8947OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 8948added 8949an alternate implementation of the semaphore timeout to allow aslts to 8950execute fully on Cygwin. 8951 8952---------------------------------------- 895320 March 2009. Summary of changes for version 20090320: 8954 89551) ACPI CA Core Subsystem: 8956 8957Fixed a possible race condition between AcpiWalkNamespace and dynamic 8958table 8959unloads. Added a reader/writer locking mechanism to allow multiple 8960concurrent 8961namespace walks (readers), but block a dynamic table unload until it can 8962gain 8963exclusive write access to the namespace. This fixes a problem where a 8964table 8965unload could (possibly catastrophically) delete the portion of the 8966namespace 8967that is currently being examined by a walk. Adds a new file, utlock.c, 8968that 8969implements the reader/writer lock mechanism. ACPICA BZ 749. 8970 8971Fixed a regression introduced in version 20090220 where a change to the 8972FADT 8973handling could cause the ACPICA subsystem to access non-existent I/O 8974ports. 8975 8976Modified the handling of FADT register and table (FACS/DSDT) addresses. 8977The 8978FADT can contain both 32-bit and 64-bit versions of these addresses. 8979Previously, the 64-bit versions were favored, meaning that if both 32 and 898064 8981versions were valid, but not equal, the 64-bit version was used. This was 8982found to cause some machines to fail. Now, in this case, the 32-bit 8983version 8984is used instead. This now matches the Windows behavior. 8985 8986Implemented a new mechanism to protect certain I/O ports. Provides 8987Microsoft 8988compatibility and protects the standard PC I/O ports from access via AML 8989code. Adds a new file, hwvalid.c 8990 8991Fixed a possible extraneous warning message from the FADT support. The 8992message warns of a 32/64 length mismatch between the legacy and GAS 8993definitions for a register. 8994 8995Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 8996is 8997made obsolete by the port protection mechanism above. It was previously 8998used 8999to validate the entire address range of an operation region, which could 9000be 9001incorrect if the range included illegal ports, but fields within the 9002operation region did not actually access those ports. Validation is now 9003performed on a per-field basis instead of the entire region. 9004 9005Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9006Ignored bits must be "preserved" according to the ACPI spec. Usually, 9007this 9008means a read/modify/write when writing to the register. However, for 9009status 9010registers, writing a one means clear the event. Writing a zero means 9011preserve 9012the event (do not clear.) This behavior is clarified in the ACPI 4.0 9013spec, 9014and the ACPICA code now simply always writes a zero to the ignored bit. 9015 9016Modified the handling of ignored bits for the PM1 A/B Control Registers. 9017As 9018per the ACPI specification, for the control registers, preserve 9019(read/modify/write) all bits that are defined as either reserved or 9020ignored. 9021 9022Updated the handling of write-only bits in the PM1 A/B Control Registers. 9023When reading the register, zero the write-only bits as per the ACPI spec. 9024ACPICA BZ 443. Lin Ming. 9025 9026Removed "Linux" from the list of supported _OSI strings. Linux no longer 9027wants to reply true to this request. The Windows strings are the only 9028paths 9029through the AML that are tested and known to work properly. 9030 9031 Previous Release: 9032 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9033 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9034 Current Release: 9035 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9036 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9037 90382) iASL Compiler/Disassembler and Tools: 9039 9040Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9041and 9042aetables.c 9043 9044---------------------------------------- 904520 February 2009. Summary of changes for version 20090220: 9046 90471) ACPI CA Core Subsystem: 9048 9049Optimized the ACPI register locking. Removed locking for reads from the 9050ACPI 9051bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9052is 9053not required when reading the single-bit registers. The 9054AcpiGetRegisterUnlocked function is no longer needed and has been 9055removed. 9056This will improve performance for reads on these registers. ACPICA BZ 9057760. 9058 9059Fixed the parameter validation for AcpiRead/Write. Now return 9060AE_BAD_PARAMETER if the input register pointer is null, and 9061AE_BAD_ADDRESS 9062if 9063the register has an address of zero. Previously, these cases simply 9064returned 9065AE_OK. For optional registers such as PM1B status/enable/control, the 9066caller 9067should check for a valid register address before calling. ACPICA BZ 748. 9068 9069Renamed the external ACPI bit register access functions. Renamed 9070AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9071functions. The new names are AcpiReadBitRegister and 9072AcpiWriteBitRegister. 9073Also, restructured the code for these functions by simplifying the code 9074path 9075and condensing duplicate code to reduce code size. 9076 9077Added new functions to transparently handle the possibly split PM1 A/B 9078registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9079functions 9080now handle the split registers for PM1 Status, Enable, and Control. 9081ACPICA 9082BZ 9083746. 9084 9085Added a function to handle the PM1 control registers, 9086AcpiHwWritePm1Control. 9087This function writes both of the PM1 control registers (A/B). These 9088registers 9089are different than the PM1 A/B status and enable registers in that 9090different 9091values can be written to the A/B registers. Most notably, the SLP_TYP 9092bits 9093can be different, as per the values returned from the _Sx predefined 9094methods. 9095 9096Removed an extra register write within AcpiHwClearAcpiStatus. This 9097function 9098was writing an optional PM1B status register twice. The existing call to 9099the 9100low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9101A/B 9102register. ACPICA BZ 751. 9103 9104Split out the PM1 Status registers from the FADT. Added new globals for 9105these 9106registers (A/B), similar to the way the PM1 Enable registers are handled. 9107Instead of overloading the FADT Event Register blocks. This makes the 9108code 9109clearer and less prone to error. 9110 9111Fixed the warning message for when the platform contains too many ACPI 9112tables 9113for the default size of the global root table data structure. The 9114calculation 9115for the truncation value was incorrect. 9116 9117Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9118obsolete macro, since it is now a simple reference to ->common.type. 9119There 9120were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9121 9122Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9123TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9124simply SLEEP_TYPE. ACPICA BZ 754. 9125 9126Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9127function is only needed on 64-bit host operating systems and is thus not 9128included for 32-bit hosts. 9129 9130Debug output: print the input and result for invocations of the _OSI 9131reserved 9132control method via the ACPI_LV_INFO debug level. Also, reduced some of 9133the 9134verbosity of this debug level. Len Brown. 9135 9136Example Code and Data Size: These are the sizes for the OS-independent 9137acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9138debug version of the code includes the debug output trace mechanism and 9139has a 9140much larger code and data size. 9141 9142 Previous Release: 9143 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9144 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9145 Current Release: 9146 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9147 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9148 91492) iASL Compiler/Disassembler and Tools: 9150 9151Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 9152various legal performance profiles. 9153 9154---------------------------------------- 915523 January 2009. Summary of changes for version 20090123: 9156 91571) ACPI CA Core Subsystem: 9158 9159Added the 2009 copyright to all module headers and signons. This affects 9160virtually every file in the ACPICA core subsystem, the iASL compiler, and 9161the tools/utilities. 9162 9163Implemented a change to allow the host to override any ACPI table, 9164including 9165dynamically loaded tables. Previously, only the DSDT could be replaced by 9166the 9167host. With this change, the AcpiOsTableOverride interface is called for 9168each 9169table found in the RSDT/XSDT during ACPICA initialization, and also 9170whenever 9171a table is dynamically loaded via the AML Load operator. 9172 9173Updated FADT flag definitions, especially the Boot Architecture flags. 9174 9175Debugger: For the Find command, automatically pad the input ACPI name 9176with 9177underscores if the name is shorter than 4 characters. This enables a 9178match 9179with the actual namespace entry which is itself padded with underscores. 9180 9181Example Code and Data Size: These are the sizes for the OS-independent 9182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9183debug version of the code includes the debug output trace mechanism and 9184has a 9185much larger code and data size. 9186 9187 Previous Release: 9188 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9189 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9190 Current Release: 9191 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9192 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9193 91942) iASL Compiler/Disassembler and Tools: 9195 9196Fix build error under Bison-2.4. 9197 9198Disassembler: Enhanced FADT support. Added decoding of the Boot 9199Architecture 9200flags. Now decode all flags, regardless of the FADT version. Flag output 9201includes the FADT version which first defined each flag. 9202 9203The iASL -g option now dumps the RSDT to a file (in addition to the FADT 9204and 9205DSDT). Windows only. 9206 9207---------------------------------------- 920804 December 2008. Summary of changes for version 20081204: 9209 92101) ACPI CA Core Subsystem: 9211 9212The ACPICA Programmer Reference has been completely updated and revamped 9213for 9214this release. This includes updates to the external interfaces, OSL 9215interfaces, the overview sections, and the debugger reference. 9216 9217Several new ACPICA interfaces have been implemented and documented in the 9218programmer reference: 9219AcpiReset - Writes the reset value to the FADT-defined reset register. 9220AcpiDisableAllGpes - Disable all available GPEs. 9221AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 9222AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 9223AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 9224AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 9225AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 9226 9227Most of the public ACPI hardware-related interfaces have been moved to a 9228new 9229file, components/hardware/hwxface.c 9230 9231Enhanced the FADT parsing and low-level ACPI register access: The ACPI 9232register lengths within the FADT are now used, and the low level ACPI 9233register access no longer hardcodes the ACPI register lengths. Given that 9234there may be some risk in actually trusting the FADT register lengths, a 9235run- 9236time option was added to fall back to the default hardcoded lengths if 9237the 9238FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 9239option is set to true for now, and a warning is issued if a suspicious 9240FADT 9241register length is overridden with the default value. 9242 9243Fixed a reference count issue in NsRepairObject. This problem was 9244introduced 9245in version 20081031 as part of a fix to repair Buffer objects within 9246Packages. Lin Ming. 9247 9248Added semaphore support to the Linux/Unix application OS-services layer 9249(OSL). ACPICA BZ 448. Lin Ming. 9250 9251Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 9252will 9253be implemented in the OSL, or will binary semaphores be used instead. 9254 9255Example Code and Data Size: These are the sizes for the OS-independent 9256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9257debug version of the code includes the debug output trace mechanism and 9258has a 9259much larger code and data size. 9260 9261 Previous Release: 9262 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9263 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9264 Current Release: 9265 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9266 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9267 92682) iASL Compiler/Disassembler and Tools: 9269 9270iASL: Completed the '-e' option to include additional ACPI tables in 9271order 9272to 9273aid with disassembly and External statement generation. ACPICA BZ 742. 9274Lin 9275Ming. 9276 9277iASL: Removed the "named object in while loop" error. The compiler cannot 9278determine how many times a loop will execute. ACPICA BZ 730. 9279 9280Disassembler: Implemented support for FADT revision 2 (MS extension). 9281ACPICA 9282BZ 743. 9283 9284Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 9285MCFG). 9286 9287---------------------------------------- 928831 October 2008. Summary of changes for version 20081031: 9289 92901) ACPI CA Core Subsystem: 9291 9292Restructured the ACPICA header files into public/private. acpi.h now 9293includes 9294only the "public" acpica headers. All other acpica headers are "private" 9295and 9296should not be included by acpica users. One new file, accommon.h is used 9297to 9298include the commonly used private headers for acpica code generation. 9299Future 9300plans include moving all private headers to a new subdirectory. 9301 9302Implemented an automatic Buffer->String return value conversion for 9303predefined ACPI methods. For these methods (such as _BIF), added 9304automatic 9305conversion for return objects that are required to be a String, but a 9306Buffer 9307was found instead. This can happen when reading string battery data from 9308an 9309operation region, because it used to be difficult to convert the data 9310from 9311buffer to string from within the ASL. Ensures that the host OS is 9312provided 9313with a valid null-terminated string. Linux BZ 11822. 9314 9315Updated the FACS waking vector interfaces. Split 9316AcpiSetFirmwareWakingVector 9317into two: one for the 32-bit vector, another for the 64-bit vector. This 9318is 9319required because the host OS must setup the wake much differently for 9320each 9321vector (real vs. protected mode, etc.) and the interface itself should 9322not 9323be 9324deciding which vector to use. Also, eliminated the 9325GetFirmwareWakingVector 9326interface, as it served no purpose (only the firmware reads the vector, 9327OS 9328only writes the vector.) ACPICA BZ 731. 9329 9330Implemented a mechanism to escape infinite AML While() loops. Added a 9331loop 9332counter to force exit from AML While loops if the count becomes too 9333large. 9334This can occur in poorly written AML when the hardware does not respond 9335within a while loop and the loop does not implement a timeout. The 9336maximum 9337loop count is configurable. A new exception code is returned when a loop 9338is 9339broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 9340 9341Optimized the execution of AML While loops. Previously, a control state 9342object was allocated and freed for each execution of the loop. The 9343optimization is to simply reuse the control state for each iteration. 9344This 9345speeds up the raw loop execution time by about 5%. 9346 9347Enhanced the implicit return mechanism. For Windows compatibility, return 9348an 9349implicit integer of value zero for methods that contain no executable 9350code. 9351Such methods are seen in the field as stubs (presumably), and can cause 9352drivers to fail if they expect a return value. Lin Ming. 9353 9354Allow multiple backslashes as root prefixes in namepaths. In a fully 9355qualified namepath, allow multiple backslash prefixes. This can happen 9356(and 9357is seen in the field) because of the use of a double-backslash in strings 9358(since backslash is the escape character) causing confusion. ACPICA BZ 9359739 9360Lin Ming. 9361 9362Emit a warning if two different FACS or DSDT tables are discovered in the 9363FADT. Checks if there are two valid but different addresses for the FACS 9364and 9365DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 9366 9367Consolidated the method argument count validation code. Merged the code 9368that 9369validates control method argument counts into the predefined validation 9370module. Eliminates possible multiple warnings for incorrect argument 9371counts. 9372 9373Implemented ACPICA example code. Includes code for ACPICA initialization, 9374handler installation, and calling a control method. Available at 9375source/tools/examples. 9376 9377Added a global pointer for FACS table to simplify internal FACS access. 9378Use 9379the global pointer instead of using AcpiGetTableByIndex for each FACS 9380access. 9381This simplifies the code for the Global Lock and the Firmware Waking 9382Vector(s). 9383 9384Example Code and Data Size: These are the sizes for the OS-independent 9385acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9386debug version of the code includes the debug output trace mechanism and 9387has a 9388much larger code and data size. 9389 9390 Previous Release: 9391 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9392 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9393 Current Release: 9394 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9395 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9396 93972) iASL Compiler/Disassembler and Tools: 9398 9399iASL: Improved disassembly of external method calls. Added the -e option 9400to 9401allow the inclusion of additional ACPI tables to help with the 9402disassembly 9403of 9404method invocations and the generation of external declarations during the 9405disassembly. Certain external method invocations cannot be disassembled 9406properly without the actual declaration of the method. Use the -e option 9407to 9408include the table where the external method(s) are actually declared. 9409Most 9410useful for disassembling SSDTs that make method calls back to the master 9411DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 9412-d 9413-e dsdt.aml ssdt1.aml 9414 9415iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 9416problem where the use of an alias within a namepath would result in a not 9417found error or cause the compiler to fault. Also now allows forward 9418references from the Alias operator itself. ACPICA BZ 738. 9419 9420---------------------------------------- 942126 September 2008. Summary of changes for version 20080926: 9422 94231) ACPI CA Core Subsystem: 9424 9425Designed and implemented a mechanism to validate predefined ACPI methods 9426and 9427objects. This code validates the predefined ACPI objects (objects whose 9428names 9429start with underscore) that appear in the namespace, at the time they are 9430evaluated. The argument count and the type of the returned object are 9431validated against the ACPI specification. The purpose of this validation 9432is 9433to detect problems with the BIOS-implemented predefined ACPI objects 9434before 9435the results are returned to the ACPI-related drivers. Future enhancements 9436may 9437include actual repair of incorrect return objects where possible. Two new 9438files are nspredef.c and acpredef.h. 9439 9440Fixed a fault in the AML parser if a memory allocation fails during the 9441Op 9442completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 9443 9444Fixed an issue with implicit return compatibility. This change improves 9445the 9446implicit return mechanism to be more compatible with the MS interpreter. 9447Lin 9448Ming, ACPICA BZ 349. 9449 9450Implemented support for zero-length buffer-to-string conversions. Allow 9451zero 9452length strings during interpreter buffer-to-string conversions. For 9453example, 9454during the ToDecimalString and ToHexString operators, as well as implicit 9455conversions. Fiodor Suietov, ACPICA BZ 585. 9456 9457Fixed two possible memory leaks in the error exit paths of 9458AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 9459are 9460similar in that they use a stack of state objects in order to eliminate 9461recursion. The stack must be fully unwound and deallocated if an error 9462occurs. Lin Ming. ACPICA BZ 383. 9463 9464Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 9465global 9466ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 9467Moore ACPICA BZ 442. 9468 9469Removed the obsolete version number in module headers. Removed the 9470"$Revision" number that appeared in each module header. This version 9471number 9472was useful under SourceSafe and CVS, but has no meaning under git. It is 9473not 9474only incorrect, it could also be misleading. 9475 9476Example Code and Data Size: These are the sizes for the OS-independent 9477acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9478debug version of the code includes the debug output trace mechanism and 9479has a 9480much larger code and data size. 9481 9482 Previous Release: 9483 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9484 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9485 Current Release: 9486 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9487 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9488 9489---------------------------------------- 949029 August 2008. Summary of changes for version 20080829: 9491 94921) ACPI CA Core Subsystem: 9493 9494Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 9495Reference. Changes include the elimination of cheating on the Object 9496field 9497for the DdbHandle subtype, addition of a reference class field to 9498differentiate the various reference types (instead of an AML opcode), and 9499the 9500cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 9501 9502Reduce an error to a warning for an incorrect method argument count. 9503Previously aborted with an error if too few arguments were passed to a 9504control method via the external ACPICA interface. Now issue a warning 9505instead 9506and continue. Handles the case where the method inadvertently declares 9507too 9508many arguments, but does not actually use the extra ones. Applies mainly 9509to 9510the predefined methods. Lin Ming. Linux BZ 11032. 9511 9512Disallow the evaluation of named object types with no intrinsic value. 9513Return 9514AE_TYPE for objects that have no value and therefore evaluation is 9515undefined: 9516Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 9517of 9518these types were allowed, but an exception would be generated at some 9519point 9520during the evaluation. Now, the error is generated up front. 9521 9522Fixed a possible memory leak in the AcpiNsGetExternalPathname function 9523(nsnames.c). Fixes a leak in the error exit path. 9524 9525Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 9526debug 9527levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 9528ACPI_EXCEPTION 9529interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 9530ACPI_LV_EVENTS. 9531 9532Removed obsolete and/or unused exception codes from the acexcep.h header. 9533There is the possibility that certain device drivers may be affected if 9534they 9535use any of these exceptions. 9536 9537The ACPICA documentation has been added to the public git source tree, 9538under 9539acpica/documents. Included are the ACPICA programmer reference, the iASL 9540compiler reference, and the changes.txt release logfile. 9541 9542Example Code and Data Size: These are the sizes for the OS-independent 9543acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9544debug version of the code includes the debug output trace mechanism and 9545has a 9546much larger code and data size. 9547 9548 Previous Release: 9549 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9550 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9551 Current Release: 9552 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9553 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9554 95552) iASL Compiler/Disassembler and Tools: 9556 9557Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 9558defines _SCP with 3 arguments. Previous versions defined it with only 1 9559argument. iASL now allows both definitions. 9560 9561iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 9562zero- 9563length subtables when disassembling ACPI tables. Also fixed a couple of 9564errors where a full 16-bit table type field was not extracted from the 9565input 9566properly. 9567 9568acpisrc: Improve comment counting mechanism for generating source code 9569statistics. Count first and last lines of multi-line comments as 9570whitespace, 9571not comment lines. Handle Linux legal header in addition to standard 9572acpica 9573header. 9574 9575---------------------------------------- 9576 957729 July 2008. Summary of changes for version 20080729: 9578 95791) ACPI CA Core Subsystem: 9580 9581Fix a possible deadlock in the GPE dispatch. Remove call to 9582AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 9583attempt 9584to acquire the GPE lock but can deadlock since the GPE lock is already 9585held 9586at dispatch time. This code was introduced in version 20060831 as a 9587response 9588to Linux BZ 6881 and has since been removed from Linux. 9589 9590Add a function to dereference returned reference objects. Examines the 9591return 9592object from a call to AcpiEvaluateObject. Any Index or RefOf references 9593are 9594automatically dereferenced in an attempt to return something useful 9595(these 9596reference types cannot be converted into an external ACPI_OBJECT.) 9597Provides 9598MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 9599 9600x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 9601subtables for the MADT and one new subtable for the SRAT. Includes 9602disassembler and AcpiSrc support. Data from the Intel 64 Architecture 9603x2APIC 9604Specification, June 2008. 9605 9606Additional error checking for pathname utilities. Add error check after 9607all 9608calls to AcpiNsGetPathnameLength. Add status return from 9609AcpiNsBuildExternalPath and check after all calls. Add parameter 9610validation 9611to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 9612 9613Return status from the global init function AcpiUtGlobalInitialize. This 9614is 9615used by both the kernel subsystem and the utilities such as iASL 9616compiler. 9617The function could possibly fail when the caches are initialized. Yang 9618Yi. 9619 9620Add a function to decode reference object types to strings. Created for 9621improved error messages. 9622 9623Improve object conversion error messages. Better error messages during 9624object 9625conversion from internal to the external ACPI_OBJECT. Used for external 9626calls 9627to AcpiEvaluateObject. 9628 9629Example Code and Data Size: These are the sizes for the OS-independent 9630acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9631debug version of the code includes the debug output trace mechanism and 9632has a 9633much larger code and data size. 9634 9635 Previous Release: 9636 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9637 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9638 Current Release: 9639 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9640 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9641 96422) iASL Compiler/Disassembler and Tools: 9643 9644Debugger: fix a possible hang when evaluating non-methods. Fixes a 9645problem 9646introduced in version 20080701. If the object being evaluated (via 9647execute 9648command) is not a method, the debugger can hang while trying to obtain 9649non- 9650existent parameters. 9651 9652iASL: relax error for using reserved "_T_x" identifiers. These names can 9653appear in a disassembled ASL file if they were emitted by the original 9654compiler. Instead of issuing an error or warning and forcing the user to 9655manually change these names, issue a remark instead. 9656 9657iASL: error if named object created in while loop. Emit an error if any 9658named 9659object is created within a While loop. If allowed, this code will 9660generate 9661a 9662run-time error on the second iteration of the loop when an attempt is 9663made 9664to 9665create the same named object twice. ACPICA bugzilla 730. 9666 9667iASL: Support absolute pathnames for include files. Add support for 9668absolute 9669pathnames within the Include operator. previously, only relative 9670pathnames 9671were supported. 9672 9673iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 9674Descriptor. 9675The ACPI spec requires one interrupt minimum. BZ 423 9676 9677iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 9678Handles the case for the Interrupt Resource Descriptor where 9679the ResourceSource argument is omitted but ResourceSourceIndex 9680is present. Now leave room for the Index. BZ 426 9681 9682iASL: Prevent error message if CondRefOf target does not exist. Fixes 9683cases 9684where an error message is emitted if the target does not exist. BZ 516 9685 9686iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 9687(get ACPI tables on Windows). This was apparently broken in version 968820070919. 9689 9690AcpiXtract: Handle EOF while extracting data. Correctly handle the case 9691where 9692the EOF happens immediately after the last table in the input file. Print 9693completion message. Previously, no message was displayed in this case. 9694 9695---------------------------------------- 969601 July 2008. Summary of changes for version 20080701: 9697 96980) Git source tree / acpica.org 9699 9700Fixed a problem where a git-clone from http would not transfer the entire 9701source tree. 9702 97031) ACPI CA Core Subsystem: 9704 9705Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 9706enable bit. Now performs a read-change-write of the enable register 9707instead 9708of simply writing out the cached enable mask. This will prevent 9709inadvertent 9710enabling of GPEs if a rogue GPE is received during initialization (before 9711GPE 9712handlers are installed.) 9713 9714Implemented a copy for dynamically loaded tables. Previously, dynamically 9715loaded tables were simply mapped - but on some machines this memory is 9716corrupted after suspend. Now copy the table to a local buffer. For the 9717OpRegion case, added checksum verify. Use the table length from the table 9718header, not the region length. For the Buffer case, use the table length 9719also. Dennis Noordsij, Bob Moore. BZ 10734 9720 9721Fixed a problem where the same ACPI table could not be dynamically loaded 9722and 9723unloaded more than once. Without this change, a table cannot be loaded 9724again 9725once it has been loaded/unloaded one time. The current mechanism does not 9726unregister a table upon an unload. During a load, if the same table is 9727found, 9728this no longer returns an exception. BZ 722 9729 9730Fixed a problem where the wrong descriptor length was calculated for the 9731EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 9732EndTag 9733are calculated as 12 bytes long, but the actual length in the internal 9734descriptor is 16 because of the round-up to 8 on the 64-bit build. 9735Reported 9736by Linn Crosetto. BZ 728 9737 9738Fixed a possible memory leak in the Unload operator. The DdbHandle 9739returned 9740by Load() did not have its reference count decremented during unload, 9741leading 9742to a memory leak. Lin Ming. BZ 727 9743 9744Fixed a possible memory leak when deleting thermal/processor objects. Any 9745associated notify handlers (and objects) were not being deleted. Fiodor 9746Suietov. BZ 506 9747 9748Fixed the ordering of the ASCII names in the global mutex table to match 9749the 9750actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 9751only. 9752Vegard Nossum. BZ 726 9753 9754Enhanced the AcpiGetObjectInfo interface to return the number of required 9755arguments if the object is a control method. Added this call to the 9756debugger 9757so the proper number of default arguments are passed to a method. This 9758prevents a warning when executing methods from AcpiExec. 9759 9760Added a check for an invalid handle in AcpiGetObjectInfo. Return 9761AE_BAD_PARAMETER if input handle is invalid. BZ 474 9762 9763Fixed an extraneous warning from exconfig.c on the 64-bit build. 9764 9765Example Code and Data Size: These are the sizes for the OS-independent 9766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9767debug version of the code includes the debug output trace mechanism and 9768has a 9769much larger code and data size. 9770 9771 Previous Release: 9772 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9773 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9774 Current Release: 9775 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9776 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9777 97782) iASL Compiler/Disassembler and Tools: 9779 9780iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 9781resource descriptor names. 9782 9783iASL: Detect invalid ASCII characters in input (windows version). Removed 9784the 9785"-CF" flag from the flex compile, enables correct detection of non-ASCII 9786characters in the input. BZ 441 9787 9788iASL: Eliminate warning when result of LoadTable is not used. Eliminate 9789the 9790"result of operation not used" warning when the DDB handle returned from 9791LoadTable is not used. The warning is not needed. BZ 590 9792 9793AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 9794method 9795to 9796pass address of table to the AML. Added option to disable OpRegion 9797simulation 9798to allow creation of an OpRegion with a real address that was passed to 9799_CFG. 9800All of this allows testing of the Load and Unload operators from 9801AcpiExec. 9802 9803Debugger: update tables command for unloaded tables. Handle unloaded 9804tables 9805and use the standard table header output routine. 9806 9807---------------------------------------- 980809 June 2008. Summary of changes for version 20080609: 9809 98101) ACPI CA Core Subsystem: 9811 9812Implemented a workaround for reversed _PRT entries. A significant number 9813of 9814BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 9815change dynamically detects and repairs this problem. Provides 9816compatibility 9817with MS ACPI. BZ 6859 9818 9819Simplified the internal ACPI hardware interfaces to eliminate the locking 9820flag parameter from Register Read/Write. Added a new external interface, 9821AcpiGetRegisterUnlocked. 9822 9823Fixed a problem where the invocation of a GPE control method could hang. 9824This 9825was a regression introduced in 20080514. The new method argument count 9826validation mechanism can enter an infinite loop when a GPE method is 9827dispatched. Problem fixed by removing the obsolete code that passed GPE 9828block 9829information to the notify handler via the control method parameter 9830pointer. 9831 9832Fixed a problem where the _SST execution status was incorrectly returned 9833to 9834the caller of AcpiEnterSleepStatePrep. This was a regression introduced 9835in 983620080514. _SST is optional and a NOT_FOUND exception should never be 9837returned. BZ 716 9838 9839Fixed a problem where a deleted object could be accessed from within the 9840AML 9841parser. This was a regression introduced in version 20080123 as a fix for 9842the 9843Unload operator. Lin Ming. BZ 10669 9844 9845Cleaned up the debug operand dump mechanism. Eliminated unnecessary 9846operands 9847and eliminated the use of a negative index in a loop. Operands are now 9848displayed in the correct order, not backwards. This also fixes a 9849regression 9850introduced in 20080514 on 64-bit systems where the elimination of 9851ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 9852715 9853 9854Fixed a possible memory leak in EvPciConfigRegionSetup where the error 9855exit 9856path did not delete a locally allocated structure. 9857 9858Updated definitions for the DMAR and SRAT tables to synchronize with the 9859current specifications. Includes disassembler support. 9860 9861Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 9862loop termination value was used. Loop terminated on iteration early, 9863missing 9864one mutex. Linn Crosetto 9865 9866Example Code and Data Size: These are the sizes for the OS-independent 9867acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9868debug version of the code includes the debug output trace mechanism and 9869has a 9870much larger code and data size. 9871 9872 Previous Release: 9873 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9874 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9875 Current Release: 9876 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9877 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9878 98792) iASL Compiler/Disassembler and Tools: 9880 9881Disassembler: Implemented support for EisaId() within _CID objects. Now 9882disassemble integer _CID objects back to EisaId invocations, including 9883multiple integers within _CID packages. Includes single-step support for 9884debugger also. 9885 9886Disassembler: Added support for DMAR and SRAT table definition changes. 9887 9888---------------------------------------- 988914 May 2008. Summary of changes for version 20080514: 9890 98911) ACPI CA Core Subsystem: 9892 9893Fixed a problem where GPEs were enabled too early during the ACPICA 9894initialization. This could lead to "handler not installed" errors on some 9895machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 9896This 9897ensures that all operation regions and devices throughout the namespace 9898have 9899been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 9900 9901Implemented a change to the enter sleep code. Moved execution of the _GTS 9902method to just before setting sleep enable bit. The execution was moved 9903from 9904AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 9905immediately before the SLP_EN bit is set, as per the ACPI specification. 9906Luming Yu, BZ 1653. 9907 9908Implemented a fix to disable unknown GPEs (2nd version). Now always 9909disable 9910the GPE, even if ACPICA thinks that that it is already disabled. It is 9911possible that the AML or some other code has enabled the GPE unbeknownst 9912to 9913the ACPICA code. 9914 9915Fixed a problem with the Field operator where zero-length fields would 9916return 9917an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 9918ASL 9919field declarations in Field(), BankField(), and IndexField(). BZ 10606. 9920 9921Implemented a fix for the Load operator, now load the table at the 9922namespace 9923root. This reverts a change introduced in version 20071019. The table is 9924now 9925loaded at the namespace root even though this goes against the ACPI 9926specification. This provides compatibility with other ACPI 9927implementations. 9928The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 9929Ming. 9930 9931Fixed a problem where ACPICA would not Load() tables with unusual 9932signatures. 9933Now ignore ACPI table signature for Load() operator. Only "SSDT" is 9934acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 9935Therefore, signature validation is worthless. Apparently MS ACPI accepts 9936such 9937signatures, ACPICA must be compatible. BZ 10454. 9938 9939Fixed a possible negative array index in AcpiUtValidateException. Added 9940NULL 9941fields to the exception string arrays to eliminate a -1 subtraction on 9942the 9943SubStatus field. 9944 9945Updated the debug tracking macros to reduce overall code and data size. 9946Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 9947instead of pointers to static strings. Jan Beulich and Bob Moore. 9948 9949Implemented argument count checking in control method invocation via 9950AcpiEvaluateObject. Now emit an error if too few arguments, warning if 9951too 9952many. This applies only to extern programmatic control method execution, 9953not 9954method-to-method calls within the AML. Lin Ming. 9955 9956Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 9957no 9958longer needed, especially with the removal of 16-bit support. It was 9959replaced 9960mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 9961bit 9962on 996332/64-bit platforms is required. 9964 9965Added the C const qualifier for appropriate string constants -- mostly 9966MODULE_NAME and printf format strings. Jan Beulich. 9967 9968Example Code and Data Size: These are the sizes for the OS-independent 9969acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9970debug version of the code includes the debug output trace mechanism and 9971has a 9972much larger code and data size. 9973 9974 Previous Release: 9975 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9976 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9977 Current Release: 9978 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9979 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9980 99812) iASL Compiler/Disassembler and Tools: 9982 9983Implemented ACPI table revision ID validation in the disassembler. Zero 9984is 9985always invalid. For DSDTs, the ID controls the interpreter integer width. 99861 9987means 32-bit and this is unusual. 2 or greater is 64-bit. 9988 9989---------------------------------------- 999021 March 2008. Summary of changes for version 20080321: 9991 99921) ACPI CA Core Subsystem: 9993 9994Implemented an additional change to the GPE support in order to suppress 9995spurious or stray GPEs. The AcpiEvDisableGpe function will now 9996permanently 9997disable incoming GPEs that are neither enabled nor disabled -- meaning 9998that 9999the GPE is unknown to the system. This should prevent future interrupt 10000floods 10001from that GPE. BZ 6217 (Zhang Rui) 10002 10003Fixed a problem where NULL package elements were not returned to the 10004AcpiEvaluateObject interface correctly. The element was simply ignored 10005instead of returning a NULL ACPI_OBJECT package element, potentially 10006causing 10007a buffer overflow and/or confusing the caller who expected a fixed number 10008of 10009elements. BZ 10132 (Lin Ming, Bob Moore) 10010 10011Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10012Dword, 10013Qword), Field, BankField, and IndexField operators when invoked from 10014inside 10015an executing control method. In this case, these operators created 10016namespace 10017nodes that were incorrectly left marked as permanent nodes instead of 10018temporary nodes. This could cause a problem if there is race condition 10019between an exiting control method and a running namespace walk. (Reported 10020by 10021Linn Crosetto) 10022 10023Fixed a problem where the CreateField and CreateXXXField operators would 10024incorrectly allow duplicate names (the name of the field) with no 10025exception 10026generated. 10027 10028Implemented several changes for Notify handling. Added support for new 10029Notify 10030values (ACPI 2.0+) and improved the Notify debug output. Notify on 10031PowerResource objects is no longer allowed, as per the ACPI 10032specification. 10033(Bob Moore, Zhang Rui) 10034 10035All Reference Objects returned via the AcpiEvaluateObject interface are 10036now 10037marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10038for 10039NULL objects - either NULL package elements or unresolved named 10040references. 10041 10042Fixed a problem where an extraneous debug message was produced for 10043package 10044objects (when debugging enabled). The message "Package List length larger 10045than NumElements count" is now produced in the correct case, and is now 10046an 10047error message rather than a debug message. Added a debug message for the 10048opposite case, where NumElements is larger than the Package List (the 10049package 10050will be padded out with NULL elements as per the ACPI spec.) 10051 10052Implemented several improvements for the output of the ASL "Debug" object 10053to 10054clarify and keep all data for a given object on one output line. 10055 10056Fixed two size calculation issues with the variable-length Start 10057Dependent 10058resource descriptor. 10059 10060Example Code and Data Size: These are the sizes for the OS-independent 10061acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10062debug version of the code includes the debug output trace mechanism and 10063has 10064a much larger code and data size. 10065 10066 Previous Release: 10067 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10068 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10069 Current Release: 10070 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10071 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10072 100732) iASL Compiler/Disassembler and Tools: 10074 10075Fixed a problem with the use of the Switch operator where execution of 10076the 10077containing method by multiple concurrent threads could cause an 10078AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10079actual Switch opcode, it must be simulated with local named temporary 10080variables and if/else pairs. The solution chosen was to mark any method 10081that 10082uses Switch as Serialized, thus preventing multiple thread entries. BZ 10083469. 10084 10085---------------------------------------- 1008613 February 2008. Summary of changes for version 20080213: 10087 100881) ACPI CA Core Subsystem: 10089 10090Implemented another MS compatibility design change for GPE/Notify 10091handling. 10092GPEs are now cleared/enabled asynchronously to allow all pending notifies 10093to 10094complete first. It is expected that the OSL will queue the enable request 10095behind all pending notify requests (may require changes to the local host 10096OSL 10097in AcpiOsExecute). Alexey Starikovskiy. 10098 10099Fixed a problem where buffer and package objects passed as arguments to a 10100control method via the external AcpiEvaluateObject interface could cause 10101an 10102AE_AML_INTERNAL exception depending on the order and type of operators 10103executed by the target control method. 10104 10105Fixed a problem where resource descriptor size optimization could cause a 10106problem when a _CRS resource template is passed to a _SRS method. The 10107_SRS 10108resource template must use the same descriptors (with the same size) as 10109returned from _CRS. This change affects the following resource 10110descriptors: 10111IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 101129487) 10113 10114Fixed a problem where a CopyObject to RegionField, BankField, and 10115IndexField 10116objects did not perform an implicit conversion as it should. These types 10117must 10118retain their initial type permanently as per the ACPI specification. 10119However, 10120a CopyObject to all other object types should not perform an implicit 10121conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10122 10123Fixed a problem with the AcpiGetDevices interface where the mechanism to 10124match device CIDs did not examine the entire list of available CIDs, but 10125instead aborted on the first non-matching CID. Andrew Patterson. 10126 10127Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10128was 10129inadvertently changed to return a 16-bit value instead of a 32-bit value, 10130truncating the upper dword of a 64-bit value. This macro is only used to 10131display debug output, so no incorrect calculations were made. Also, 10132reimplemented the macro so that a 64-bit shift is not performed by 10133inefficient compilers. 10134 10135Added missing va_end statements that should correspond with each va_start 10136statement. 10137 10138Example Code and Data Size: These are the sizes for the OS-independent 10139acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10140debug version of the code includes the debug output trace mechanism and 10141has 10142a much larger code and data size. 10143 10144 Previous Release: 10145 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10146 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10147 Current Release: 10148 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10149 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10150 101512) iASL Compiler/Disassembler and Tools: 10152 10153Implemented full disassembler support for the following new ACPI tables: 10154BERT, EINJ, and ERST. Implemented partial disassembler support for the 10155complicated HEST table. These tables support the Windows Hardware Error 10156Architecture (WHEA). 10157 10158---------------------------------------- 1015923 January 2008. Summary of changes for version 20080123: 10160 101611) ACPI CA Core Subsystem: 10162 10163Added the 2008 copyright to all module headers and signons. This affects 10164virtually every file in the ACPICA core subsystem, the iASL compiler, and 10165the tools/utilities. 10166 10167Fixed a problem with the SizeOf operator when used with Package and 10168Buffer 10169objects. These objects have deferred execution for some arguments, and 10170the 10171execution is now completed before the SizeOf is executed. This problem 10172caused 10173unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 10174BZ 101759558 10176 10177Implemented an enhancement to the interpreter "slack mode". In the 10178absence 10179of 10180an explicit return or an implicitly returned object from the last 10181executed 10182opcode, a control method will now implicitly return an integer of value 0 10183for 10184Microsoft compatibility. (Lin Ming) BZ 392 10185 10186Fixed a problem with the Load operator where an exception was not 10187returned 10188in 10189the case where the table is already loaded. (Lin Ming) BZ 463 10190 10191Implemented support for the use of DDBHandles as an Indexed Reference, as 10192per 10193the ACPI spec. (Lin Ming) BZ 486 10194 10195Implemented support for UserTerm (Method invocation) for the Unload 10196operator 10197as per the ACPI spec. (Lin Ming) BZ 580 10198 10199Fixed a problem with the LoadTable operator where the OemId and 10200OemTableId 10201input strings could cause unexpected failures if they were shorter than 10202the 10203maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 10204 10205Implemented support for UserTerm (Method invocation) for the Unload 10206operator 10207as per the ACPI spec. (Lin Ming) BZ 580 10208 10209Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 10210HEST, 10211IBFT, UEFI, WDAT. Disassembler support is forthcoming. 10212 10213Example Code and Data Size: These are the sizes for the OS-independent 10214acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10215debug version of the code includes the debug output trace mechanism and 10216has 10217a much larger code and data size. 10218 10219 Previous Release: 10220 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10221 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10222 Current Release: 10223 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10224 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10225 102262) iASL Compiler/Disassembler and Tools: 10227 10228Implemented support in the disassembler for checksum validation on 10229incoming 10230binary DSDTs and SSDTs. If incorrect, a message is displayed within the 10231table 10232header dump at the start of the disassembly. 10233 10234Implemented additional debugging information in the namespace listing 10235file 10236created during compilation. In addition to the namespace hierarchy, the 10237full 10238pathname to each namespace object is displayed. 10239 10240Fixed a problem with the disassembler where invalid ACPI tables could 10241cause 10242faults or infinite loops. 10243 10244Fixed an unexpected parse error when using the optional "parameter types" 10245list in a control method declaration. (Lin Ming) BZ 397 10246 10247Fixed a problem where two External declarations with the same name did 10248not 10249cause an error (Lin Ming) BZ 509 10250 10251Implemented support for full TermArgs (adding Argx, Localx and method 10252invocation) for the ParameterData parameter to the LoadTable operator. 10253(Lin 10254Ming) BZ 583,587 10255 10256---------------------------------------- 1025719 December 2007. Summary of changes for version 20071219: 10258 102591) ACPI CA Core Subsystem: 10260 10261Implemented full support for deferred execution for the TermArg string 10262arguments for DataTableRegion. This enables forward references and full 10263operand resolution for the three string arguments. Similar to 10264OperationRegion 10265deferred argument execution.) Lin Ming. BZ 430 10266 10267Implemented full argument resolution support for the BankValue argument 10268to 10269BankField. Previously, only constants were supported, now any TermArg may 10270be 10271used. Lin Ming BZ 387, 393 10272 10273Fixed a problem with AcpiGetDevices where the search of a branch of the 10274device tree could be terminated prematurely. In accordance with the ACPI 10275specification, the search down the current branch is terminated if a 10276device 10277is both not present and not functional (instead of just not present.) 10278Yakui 10279Zhao. 10280 10281Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 10282if 10283the underlying AML code changed the GPE enable registers. Now, any 10284unknown 10285incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 10286disabled 10287instead of simply ignored. Rui Zhang. 10288 10289Fixed a problem with Index Fields where the Index register was 10290incorrectly 10291limited to a maximum of 32 bits. Now any size may be used. 10292 10293Fixed a couple memory leaks associated with "implicit return" objects 10294when 10295the AML Interpreter slack mode is enabled. Lin Ming BZ 349 10296 10297Example Code and Data Size: These are the sizes for the OS-independent 10298acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10299debug version of the code includes the debug output trace mechanism and 10300has 10301a much larger code and data size. 10302 10303 Previous Release: 10304 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10305 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10306 Current Release: 10307 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10308 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10309 10310---------------------------------------- 1031114 November 2007. Summary of changes for version 20071114: 10312 103131) ACPI CA Core Subsystem: 10314 10315Implemented event counters for each of the Fixed Events, the ACPI SCI 10316(interrupt) itself, and control methods executed. Named 10317AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 10318These 10319should be useful for debugging and statistics. 10320 10321Implemented a new external interface, AcpiGetStatistics, to retrieve the 10322contents of the various event counters. Returns the current values for 10323AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 10324AcpiMethodCount. The interface can be expanded in the future if new 10325counters 10326are added. Device drivers should use this interface rather than access 10327the 10328counters directly. 10329 10330Fixed a problem with the FromBCD and ToBCD operators. With some 10331compilers, 10332the ShortDivide function worked incorrectly, causing problems with the 10333BCD 10334functions with large input values. A truncation from 64-bit to 32-bit 10335inadvertently occurred. Internal BZ 435. Lin Ming 10336 10337Fixed a problem with Index references passed as method arguments. 10338References 10339passed as arguments to control methods were dereferenced immediately 10340(before 10341control was passed to the called method). The references are now 10342correctly 10343passed directly to the called method. BZ 5389. Lin Ming 10344 10345Fixed a problem with CopyObject used in conjunction with the Index 10346operator. 10347The reference was incorrectly dereferenced before the copy. The reference 10348is 10349now correctly copied. BZ 5391. Lin Ming 10350 10351Fixed a problem with Control Method references within Package objects. 10352These 10353references are now correctly generated. This completes the package 10354construction overhaul that began in version 20071019. 10355 10356Example Code and Data Size: These are the sizes for the OS-independent 10357acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10358debug version of the code includes the debug output trace mechanism and 10359has 10360a much larger code and data size. 10361 10362 Previous Release: 10363 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10364 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10365 Current Release: 10366 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10367 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10368 10369 103702) iASL Compiler/Disassembler and Tools: 10371 10372The AcpiExec utility now installs handlers for all of the predefined 10373Operation Region types. New types supported are: PCI_Config, CMOS, and 10374PCIBARTarget. 10375 10376Fixed a problem with the 64-bit version of AcpiExec where the extended 10377(64- 10378bit) address fields for the DSDT and FACS within the FADT were not being 10379used, causing truncation of the upper 32-bits of these addresses. Lin 10380Ming 10381and Bob Moore 10382 10383---------------------------------------- 1038419 October 2007. Summary of changes for version 20071019: 10385 103861) ACPI CA Core Subsystem: 10387 10388Fixed a problem with the Alias operator when the target of the alias is a 10389named ASL operator that opens a new scope -- Scope, Device, 10390PowerResource, 10391Processor, and ThermalZone. In these cases, any children of the original 10392operator could not be accessed via the alias, potentially causing 10393unexpected 10394AE_NOT_FOUND exceptions. (BZ 9067) 10395 10396Fixed a problem with the Package operator where all named references were 10397created as object references and left otherwise unresolved. According to 10398the 10399ACPI specification, a Package can only contain Data Objects or references 10400to 10401control methods. The implication is that named references to Data Objects 10402(Integer, Buffer, String, Package, BufferField, Field) should be resolved 10403immediately upon package creation. This is the approach taken with this 10404change. References to all other named objects (Methods, Devices, Scopes, 10405etc.) are all now properly created as reference objects. (BZ 5328) 10406 10407Reverted a change to Notify handling that was introduced in version 1040820070508. This version changed the Notify handling from asynchronous to 10409fully synchronous (Device driver Notify handling with respect to the 10410Notify 10411ASL operator). It was found that this change caused more problems than it 10412solved and was removed by most users. 10413 10414Fixed a problem with the Increment and Decrement operators where the type 10415of 10416the target object could be unexpectedly and incorrectly changed. (BZ 353) 10417Lin Ming. 10418 10419Fixed a problem with the Load and LoadTable operators where the table 10420location within the namespace was ignored. Instead, the table was always 10421loaded into the root or current scope. Lin Ming. 10422 10423Fixed a problem with the Load operator when loading a table from a buffer 10424object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 10425 10426Fixed a problem with the Debug object where a store of a DdbHandle 10427reference 10428object to the Debug object could cause a fault. 10429 10430Added a table checksum verification for the Load operator, in the case 10431where 10432the load is from a buffer. (BZ 578). 10433 10434Implemented additional parameter validation for the LoadTable operator. 10435The 10436length of the input strings SignatureString, OemIdString, and OemTableId 10437are 10438now checked for maximum lengths. (BZ 582) Lin Ming. 10439 10440Example Code and Data Size: These are the sizes for the OS-independent 10441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10442debug version of the code includes the debug output trace mechanism and 10443has 10444a much larger code and data size. 10445 10446 Previous Release: 10447 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10448 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10449 Current Release: 10450 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10451 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10452 10453 104542) iASL Compiler/Disassembler: 10455 10456Fixed a problem where if a single file was specified and the file did not 10457exist, no error message was emitted. (Introduced with wildcard support in 10458version 20070917.) 10459 10460---------------------------------------- 1046119 September 2007. Summary of changes for version 20070919: 10462 104631) ACPI CA Core Subsystem: 10464 10465Designed and implemented new external interfaces to install and remove 10466handlers for ACPI table-related events. Current events that are defined 10467are 10468LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 10469they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 10470AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 10471 10472Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 10473(acpi_serialized option on Linux) could cause some systems to hang during 10474initialization. (Bob Moore) BZ 8171 10475 10476Fixed a problem where objects of certain types (Device, ThermalZone, 10477Processor, PowerResource) can be not found if they are declared and 10478referenced from within the same control method (Lin Ming) BZ 341 10479 10480Example Code and Data Size: These are the sizes for the OS-independent 10481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10482debug version of the code includes the debug output trace mechanism and 10483has 10484a much larger code and data size. 10485 10486 Previous Release: 10487 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10488 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10489 Current Release: 10490 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10491 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10492 10493 104942) iASL Compiler/Disassembler: 10495 10496Implemented support to allow multiple files to be compiled/disassembled 10497in 10498a 10499single invocation. This includes command line wildcard support for both 10500the 10501Windows and Unix versions of the compiler. This feature simplifies the 10502disassembly and compilation of multiple ACPI tables in a single 10503directory. 10504 10505---------------------------------------- 1050608 May 2007. Summary of changes for version 20070508: 10507 105081) ACPI CA Core Subsystem: 10509 10510Implemented a Microsoft compatibility design change for the handling of 10511the 10512Notify AML operator. Previously, notify handlers were dispatched and 10513executed completely asynchronously in a deferred thread. The new design 10514still executes the notify handlers in a different thread, but the 10515original 10516thread that executed the Notify() now waits at a synchronization point 10517for 10518the notify handler to complete. Some machines depend on a synchronous 10519Notify 10520operator in order to operate correctly. 10521 10522Implemented support to allow Package objects to be passed as method 10523arguments to the external AcpiEvaluateObject interface. Previously, this 10524would return the AE_NOT_IMPLEMENTED exception. This feature had not been 10525implemented since there were no reserved control methods that required it 10526until recently. 10527 10528Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 10529that 10530contained invalid non-zero values in reserved fields could cause later 10531failures because these fields have meaning in later revisions of the 10532FADT. 10533For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 10534fields 10535are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 10536 10537Fixed a problem where the Global Lock handle was not properly updated if 10538a 10539thread that acquired the Global Lock via executing AML code then 10540attempted 10541to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 10542Joe 10543Liu. 10544 10545Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 10546could be corrupted if the interrupt being removed was at the head of the 10547list. Reported by Linn Crosetto. 10548 10549Example Code and Data Size: These are the sizes for the OS-independent 10550acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10551debug version of the code includes the debug output trace mechanism and 10552has 10553a much larger code and data size. 10554 10555 Previous Release: 10556 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10557 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10558 Current Release: 10559 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10560 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10561 10562---------------------------------------- 1056320 March 2007. Summary of changes for version 20070320: 10564 105651) ACPI CA Core Subsystem: 10566 10567Implemented a change to the order of interpretation and evaluation of AML 10568operand objects within the AML interpreter. The interpreter now evaluates 10569operands in the order that they appear in the AML stream (and the 10570corresponding ASL code), instead of in the reverse order (after the 10571entire 10572operand list has been parsed). The previous behavior caused several 10573subtle 10574incompatibilities with the Microsoft AML interpreter as well as being 10575somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 10576 10577Implemented a change to the ACPI Global Lock support. All interfaces to 10578the 10579global lock now allow the same thread to acquire the lock multiple times. 10580This affects the AcpiAcquireGlobalLock external interface to the global 10581lock 10582as well as the internal use of the global lock to support AML fields -- a 10583control method that is holding the global lock can now simultaneously 10584access 10585AML fields that require global lock protection. Previously, in both 10586cases, 10587this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 10588to 10589AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 10590Controller. There is no change to the behavior of the AML Acquire 10591operator, 10592as this can already be used to acquire a mutex multiple times by the same 10593thread. BZ 8066. With assistance from Alexey Starikovskiy. 10594 10595Fixed a problem where invalid objects could be referenced in the AML 10596Interpreter after error conditions. During operand evaluation, ensure 10597that 10598the internal "Return Object" field is cleared on error and only valid 10599pointers are stored there. Caused occasional access to deleted objects 10600that 10601resulted in "large reference count" warning messages. Valery Podrezov. 10602 10603Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 10604on 10605deeply nested control method invocations. BZ 7873, local BZ 487. Valery 10606Podrezov. 10607 10608Fixed an internal problem with the handling of result objects on the 10609interpreter result stack. BZ 7872. Valery Podrezov. 10610 10611Removed obsolete code that handled the case where AML_NAME_OP is the 10612target 10613of a reference (Reference.Opcode). This code was no longer necessary. BZ 106147874. Valery Podrezov. 10615 10616Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 10617was 10618a 10619remnant from the previously discontinued 16-bit support. 10620 10621Example Code and Data Size: These are the sizes for the OS-independent 10622acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10623debug version of the code includes the debug output trace mechanism and 10624has 10625a much larger code and data size. 10626 10627 Previous Release: 10628 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10629 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10630 Current Release: 10631 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10632 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10633 10634---------------------------------------- 1063526 January 2007. Summary of changes for version 20070126: 10636 106371) ACPI CA Core Subsystem: 10638 10639Added the 2007 copyright to all module headers and signons. This affects 10640virtually every file in the ACPICA core subsystem, the iASL compiler, and 10641the utilities. 10642 10643Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 10644during a table load. A bad pointer was passed in the case where the DSDT 10645is 10646overridden, causing a fault in this case. 10647 10648Example Code and Data Size: These are the sizes for the OS-independent 10649acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10650debug version of the code includes the debug output trace mechanism and 10651has 10652a much larger code and data size. 10653 10654 Previous Release: 10655 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10656 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10657 Current Release: 10658 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10659 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10660 10661---------------------------------------- 1066215 December 2006. Summary of changes for version 20061215: 10663 106641) ACPI CA Core Subsystem: 10665 10666Support for 16-bit ACPICA has been completely removed since it is no 10667longer 10668necessary and it clutters the code. All 16-bit macros, types, and 10669conditional compiles have been removed, cleaning up and simplifying the 10670code 10671across the entire subsystem. DOS support is no longer needed since the 10672bootable Linux firmware kit is now available. 10673 10674The handler for the Global Lock is now removed during AcpiTerminate to 10675enable a clean subsystem restart, via the implementation of the 10676AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 10677HP) 10678 10679Implemented enhancements to the multithreading support within the 10680debugger 10681to enable improved multithreading debugging and evaluation of the 10682subsystem. 10683(Valery Podrezov) 10684 10685Debugger: Enhanced the Statistics/Memory command to emit the total 10686(maximum) 10687memory used during the execution, as well as the maximum memory consumed 10688by 10689each of the various object types. (Valery Podrezov) 10690 10691Example Code and Data Size: These are the sizes for the OS-independent 10692acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10693debug version of the code includes the debug output trace mechanism and 10694has 10695a much larger code and data size. 10696 10697 Previous Release: 10698 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10699 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10700 Current Release: 10701 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10702 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10703 10704 107052) iASL Compiler/Disassembler and Tools: 10706 10707AcpiExec: Implemented a new option (-m) to display full memory use 10708statistics upon subsystem/program termination. (Valery Podrezov) 10709 10710---------------------------------------- 1071109 November 2006. Summary of changes for version 20061109: 10712 107131) ACPI CA Core Subsystem: 10714 10715Optimized the Load ASL operator in the case where the source operand is 10716an 10717operation region. Simply map the operation region memory, instead of 10718performing a bytewise read. (Region must be of type SystemMemory, see 10719below.) 10720 10721Fixed the Load ASL operator for the case where the source operand is a 10722region field. A buffer object is also allowed as the source operand. BZ 10723480 10724 10725Fixed a problem where the Load ASL operator allowed the source operand to 10726be 10727an operation region of any type. It is now restricted to regions of type 10728SystemMemory, as per the ACPI specification. BZ 481 10729 10730Additional cleanup and optimizations for the new Table Manager code. 10731 10732AcpiEnable will now fail if all of the required ACPI tables are not 10733loaded 10734(FADT, FACS, DSDT). BZ 477 10735 10736Added #pragma pack(8/4) to acobject.h to ensure that the structures in 10737this 10738header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 10739manually optimized to be aligned and will not work if it is byte-packed. 10740 10741Example Code and Data Size: These are the sizes for the OS-independent 10742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10743debug version of the code includes the debug output trace mechanism and 10744has 10745a much larger code and data size. 10746 10747 Previous Release: 10748 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10749 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10750 Current Release: 10751 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10752 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10753 10754 107552) iASL Compiler/Disassembler and Tools: 10756 10757Fixed a problem where the presence of the _OSI predefined control method 10758within complex expressions could cause an internal compiler error. 10759 10760AcpiExec: Implemented full region support for multiple address spaces. 10761SpaceId is now part of the REGION object. BZ 429 10762 10763---------------------------------------- 1076411 October 2006. Summary of changes for version 20061011: 10765 107661) ACPI CA Core Subsystem: 10767 10768Completed an AML interpreter performance enhancement for control method 10769execution. Previously a 2-pass parse/execution, control methods are now 10770completely parsed and executed in a single pass. This improves overall 10771interpreter performance by ~25%, reduces code size, and reduces CPU stack 10772use. (Valery Podrezov + interpreter changes in version 20051202 that 10773eliminated namespace loading during the pass one parse.) 10774 10775Implemented _CID support for PCI Root Bridge detection. If the _HID does 10776not 10777match the predefined PCI Root Bridge IDs, the _CID list (if present) is 10778now 10779obtained and also checked for an ID match. 10780 10781Implemented additional support for the PCI _ADR execution: upsearch until 10782a 10783device scope is found before executing _ADR. This allows PCI_Config 10784operation regions to be declared locally within control methods 10785underneath 10786PCI device objects. 10787 10788Fixed a problem with a possible race condition between threads executing 10789AcpiWalkNamespace and the AML interpreter. This condition was removed by 10790modifying AcpiWalkNamespace to (by default) ignore all temporary 10791namespace 10792entries created during any concurrent control method execution. An 10793additional namespace race condition is known to exist between 10794AcpiWalkNamespace and the Load/Unload ASL operators and is still under 10795investigation. 10796 10797Restructured the AML ParseLoop function, breaking it into several 10798subfunctions in order to reduce CPU stack use and improve 10799maintainability. 10800(Mikhail Kouzmich) 10801 10802AcpiGetHandle: Fix for parameter validation to detect invalid 10803combinations 10804of prefix handle and pathname. BZ 478 10805 10806Example Code and Data Size: These are the sizes for the OS-independent 10807acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10808debug version of the code includes the debug output trace mechanism and 10809has 10810a much larger code and data size. 10811 10812 Previous Release: 10813 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10814 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10815 Current Release: 10816 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10817 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10818 108192) iASL Compiler/Disassembler and Tools: 10820 10821Ported the -g option (get local ACPI tables) to the new ACPICA Table 10822Manager 10823to restore original behavior. 10824 10825---------------------------------------- 1082627 September 2006. Summary of changes for version 20060927: 10827 108281) ACPI CA Core Subsystem: 10829 10830Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 10831These functions now use a spinlock for mutual exclusion and the interrupt 10832level indication flag is not needed. 10833 10834Fixed a problem with the Global Lock where the lock could appear to be 10835obtained before it is actually obtained. The global lock semaphore was 10836inadvertently created with one unit instead of zero units. (BZ 464) 10837Fiodor 10838Suietov. 10839 10840Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 10841during 10842a read from a buffer or region field. (BZ 458) Fiodor Suietov. 10843 10844Example Code and Data Size: These are the sizes for the OS-independent 10845acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10846debug version of the code includes the debug output trace mechanism and 10847has 10848a much larger code and data size. 10849 10850 Previous Release: 10851 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10852 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10853 Current Release: 10854 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10855 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10856 10857 108582) iASL Compiler/Disassembler and Tools: 10859 10860Fixed a compilation problem with the pre-defined Resource Descriptor 10861field 10862names where an "object does not exist" error could be incorrectly 10863generated 10864if the parent ResourceTemplate pathname places the template within a 10865different namespace scope than the current scope. (BZ 7212) 10866 10867Fixed a problem where the compiler could hang after syntax errors 10868detected 10869in an ElseIf construct. (BZ 453) 10870 10871Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 10872operator. An incorrect output filename was produced when this parameter 10873was 10874a null string (""). Now, the original input filename is used as the AML 10875output filename, with an ".aml" extension. 10876 10877Implemented a generic batch command mode for the AcpiExec utility 10878(execute 10879any AML debugger command) (Valery Podrezov). 10880 10881---------------------------------------- 1088212 September 2006. Summary of changes for version 20060912: 10883 108841) ACPI CA Core Subsystem: 10885 10886Enhanced the implementation of the "serialized mode" of the interpreter 10887(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 10888specified, instead of creating a serialization semaphore per control 10889method, 10890the interpreter lock is simply no longer released before a blocking 10891operation during control method execution. This effectively makes the AML 10892Interpreter single-threaded. The overhead of a semaphore per-method is 10893eliminated. 10894 10895Fixed a regression where an error was no longer emitted if a control 10896method 10897attempts to create 2 objects of the same name. This once again returns 10898AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 10899that 10900will dynamically serialize the control method to possible prevent future 10901errors. (BZ 440) 10902 10903Integrated a fix for a problem with PCI Express HID detection in the PCI 10904Config Space setup procedure. (BZ 7145) 10905 10906Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 10907AcpiHwInitialize function - the FADT registers are now validated when the 10908table is loaded. 10909 10910Added two new warnings during FADT verification - 1) if the FADT is 10911larger 10912than the largest known FADT version, and 2) if there is a mismatch 10913between 10914a 1091532-bit block address and the 64-bit X counterpart (when both are non- 10916zero.) 10917 10918Example Code and Data Size: These are the sizes for the OS-independent 10919acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10920debug version of the code includes the debug output trace mechanism and 10921has 10922a much larger code and data size. 10923 10924 Previous Release: 10925 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10926 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10927 Current Release: 10928 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10929 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10930 10931 109322) iASL Compiler/Disassembler and Tools: 10933 10934Fixed a problem with the implementation of the Switch() operator where 10935the 10936temporary variable was declared too close to the actual Switch, instead 10937of 10938at method level. This could cause a problem if the Switch() operator is 10939within a while loop, causing an error on the second iteration. (BZ 460) 10940 10941Disassembler - fix for error emitted for unknown type for target of scope 10942operator. Now, ignore it and continue. 10943 10944Disassembly of an FADT now verifies the input FADT and reports any errors 10945found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 10946 10947Disassembly of raw data buffers with byte initialization data now 10948prefixes 10949each output line with the current buffer offset. 10950 10951Disassembly of ASF! table now includes all variable-length data fields at 10952the end of some of the subtables. 10953 10954The disassembler now emits a comment if a buffer appears to be a 10955ResourceTemplate, but cannot be disassembled as such because the EndTag 10956does 10957not appear at the very end of the buffer. 10958 10959AcpiExec - Added the "-t" command line option to enable the serialized 10960mode 10961of the AML interpreter. 10962 10963---------------------------------------- 1096431 August 2006. Summary of changes for version 20060831: 10965 109661) ACPI CA Core Subsystem: 10967 10968Miscellaneous fixes for the Table Manager: 10969- Correctly initialize internal common FADT for all 64-bit "X" fields 10970- Fixed a couple table mapping issues during table load 10971- Fixed a couple alignment issues for IA64 10972- Initialize input array to zero in AcpiInitializeTables 10973- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 10974AcpiGetTableByIndex 10975 10976Change for GPE support: when a "wake" GPE is received, all wake GPEs are 10977now 10978immediately disabled to prevent the waking GPE from firing again and to 10979prevent other wake GPEs from interrupting the wake process. 10980 10981Added the AcpiGpeCount global that tracks the number of processed GPEs, 10982to 10983be used for debugging systems with a large number of ACPI interrupts. 10984 10985Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 10986both the ACPICA headers and the disassembler. 10987 10988Example Code and Data Size: These are the sizes for the OS-independent 10989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10990debug version of the code includes the debug output trace mechanism and 10991has 10992a much larger code and data size. 10993 10994 Previous Release: 10995 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10996 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10997 Current Release: 10998 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10999 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11000 11001 110022) iASL Compiler/Disassembler and Tools: 11003 11004Disassembler support for the DMAR ACPI table. 11005 11006---------------------------------------- 1100723 August 2006. Summary of changes for version 20060823: 11008 110091) ACPI CA Core Subsystem: 11010 11011The Table Manager component has been completely redesigned and 11012reimplemented. The new design is much simpler, and reduces the overall 11013code 11014and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11015is 11016now possible to obtain the ACPI tables very early during kernel 11017initialization, even before dynamic memory management is initialized. 11018(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11019 11020Obsolete ACPICA interfaces: 11021 11022- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11023init 11024time). 11025- AcpiLoadTable: Not needed. 11026- AcpiUnloadTable: Not needed. 11027 11028New ACPICA interfaces: 11029 11030- AcpiInitializeTables: Must be called before the table manager can be 11031used. 11032- AcpiReallocateRootTable: Used to transfer the root table to dynamically 11033allocated memory after it becomes available. 11034- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11035tables 11036in the RSDT/XSDT. 11037 11038Other ACPICA changes: 11039 11040- AcpiGetTableHeader returns the actual mapped table header, not a copy. 11041Use 11042AcpiOsUnmapMemory to free this mapping. 11043- AcpiGetTable returns the actual mapped table. The mapping is managed 11044internally and must not be deleted by the caller. Use of this interface 11045causes no additional dynamic memory allocation. 11046- AcpiFindRootPointer: Support for physical addressing has been 11047eliminated, 11048it appeared to be unused. 11049- The interface to AcpiOsMapMemory has changed to be consistent with the 11050other allocation interfaces. 11051- The interface to AcpiOsGetRootPointer has changed to eliminate 11052unnecessary 11053parameters. 11054- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1105564- 11056bit platforms. Was previously 64 bits on all platforms. 11057- The interface to the ACPI Global Lock acquire/release macros have 11058changed 11059slightly since ACPICA no longer keeps a local copy of the FACS with a 11060constructed pointer to the actual global lock. 11061 11062Porting to the new table manager: 11063 11064- AcpiInitializeTables: Must be called once, and can be called anytime 11065during the OS initialization process. It allows the host to specify an 11066area 11067of memory to be used to store the internal version of the RSDT/XSDT (root 11068table). This allows the host to access ACPI tables before memory 11069management 11070is initialized and running. 11071- AcpiReallocateRootTable: Can be called after memory management is 11072running 11073to copy the root table to a dynamically allocated array, freeing up the 11074scratch memory specified in the call to AcpiInitializeTables. 11075- AcpiSubsystemInitialize: This existing interface is independent of the 11076Table Manager, and does not have to be called before the Table Manager 11077can 11078be used, it only must be called before the rest of ACPICA can be used. 11079- ACPI Tables: Some changes have been made to the names and structure of 11080the 11081actbl.h and actbl1.h header files and may require changes to existing 11082code. 11083For example, bitfields have been completely removed because of their lack 11084of 11085portability across C compilers. 11086- Update interfaces to the Global Lock acquire/release macros if local 11087versions are used. (see acwin.h) 11088 11089Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11090 11091New files: tbfind.c 11092 11093Example Code and Data Size: These are the sizes for the OS-independent 11094acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11095debug version of the code includes the debug output trace mechanism and 11096has 11097a much larger code and data size. 11098 11099 Previous Release: 11100 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11101 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11102 Current Release: 11103 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11104 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11105 11106 111072) iASL Compiler/Disassembler and Tools: 11108 11109No changes for this release. 11110 11111---------------------------------------- 1111221 July 2006. Summary of changes for version 20060721: 11113 111141) ACPI CA Core Subsystem: 11115 11116The full source code for the ASL test suite used to validate the iASL 11117compiler and the ACPICA core subsystem is being released with the ACPICA 11118source for the first time. The source is contained in a separate package 11119and 11120consists of over 1100 files that exercise all ASL/AML operators. The 11121package 11122should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11123Fiodor 11124Suietov) 11125 11126Completed a new design and implementation for support of the ACPI Global 11127Lock. On the OS side, the global lock is now treated as a standard AML 11128mutex. Previously, multiple OS threads could "acquire" the global lock 11129simultaneously. However, this could cause the BIOS to be starved out of 11130the 11131lock - especially in cases such as the Embedded Controller driver where 11132there is a tight coupling between the OS and the BIOS. 11133 11134Implemented an optimization for the ACPI Global Lock interrupt mechanism. 11135The Global Lock interrupt handler no longer queues the execution of a 11136separate thread to signal the global lock semaphore. Instead, the 11137semaphore 11138is signaled directly from the interrupt handler. 11139 11140Implemented support within the AML interpreter for package objects that 11141contain a larger AML length (package list length) than the package 11142element 11143count. In this case, the length of the package is truncated to match the 11144package element count. Some BIOS code apparently modifies the package 11145length 11146on the fly, and this change supports this behavior. Provides 11147compatibility 11148with the MS AML interpreter. (With assistance from Fiodor Suietov) 11149 11150Implemented a temporary fix for the BankValue parameter of a Bank Field 11151to 11152support all constant values, now including the Zero and One opcodes. 11153Evaluation of this parameter must eventually be converted to a full 11154TermArg 11155evaluation. A not-implemented error is now returned (temporarily) for 11156non- 11157constant values for this parameter. 11158 11159Fixed problem reports (Fiodor Suietov) integrated: 11160- Fix for premature object deletion after CopyObject on Operation Region 11161(BZ 11162350) 11163 11164Example Code and Data Size: These are the sizes for the OS-independent 11165acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11166debug version of the code includes the debug output trace mechanism and 11167has 11168a much larger code and data size. 11169 11170 Previous Release: 11171 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 11172 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 11173 Current Release: 11174 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11175 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11176 11177 111782) iASL Compiler/Disassembler and Tools: 11179 11180No changes for this release. 11181 11182---------------------------------------- 1118307 July 2006. Summary of changes for version 20060707: 11184 111851) ACPI CA Core Subsystem: 11186 11187Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 11188that do not allow the initialization of address pointers within packed 11189structures - even though the hardware itself may support misaligned 11190transfers. Some of the debug data structures are packed by default to 11191minimize size. 11192 11193Added an error message for the case where AcpiOsGetThreadId() returns 11194zero. 11195A non-zero value is required by the core ACPICA code to ensure the proper 11196operation of AML mutexes and recursive control methods. 11197 11198The DSDT is now the only ACPI table that determines whether the AML 11199interpreter is in 32-bit or 64-bit mode. Not really a functional change, 11200but 11201the hooks for per-table 32/64 switching have been removed from the code. 11202A 11203clarification to the ACPI specification is forthcoming in ACPI 3.0B. 11204 11205Fixed a possible leak of an OwnerID in the error path of 11206AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 11207deletion to a single place in AcpiTbUninstallTable to correct possible 11208leaks 11209when using the AcpiTbDeleteTablesByType interface (with assistance from 11210Lance Ortiz.) 11211 11212Fixed a problem with Serialized control methods where the semaphore 11213associated with the method could be over-signaled after multiple method 11214invocations. 11215 11216Fixed two issues with the locking of the internal namespace data 11217structure. 11218Both the Unload() operator and AcpiUnloadTable interface now lock the 11219namespace during the namespace deletion associated with the table unload 11220(with assistance from Linn Crosetto.) 11221 11222Fixed problem reports (Valery Podrezov) integrated: 11223- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 11224 11225Fixed problem reports (Fiodor Suietov) integrated: 11226- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 11227- On Address Space handler deletion, needless deactivation call (BZ 374) 11228- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 11229375) 11230- Possible memory leak, Notify sub-objects of Processor, Power, 11231ThermalZone 11232(BZ 376) 11233- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 11234- Minimum Length of RSDT should be validated (BZ 379) 11235- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 11236Handler (BZ (380) 11237- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 11238loaded 11239(BZ 381) 11240 11241Example Code and Data Size: These are the sizes for the OS-independent 11242acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11243debug version of the code includes the debug output trace mechanism and 11244has 11245a much larger code and data size. 11246 11247 Previous Release: 11248 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11249 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11250 Current Release: 11251 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11252 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11253 11254 112552) iASL Compiler/Disassembler and Tools: 11256 11257Fixed problem reports: 11258Compiler segfault when ASL contains a long (>1024) String declaration (BZ 11259436) 11260 11261---------------------------------------- 1126223 June 2006. Summary of changes for version 20060623: 11263 112641) ACPI CA Core Subsystem: 11265 11266Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 11267allows the type to be customized to the host OS for improved efficiency 11268(since a spinlock is usually a very small object.) 11269 11270Implemented support for "ignored" bits in the ACPI registers. According 11271to 11272the ACPI specification, these bits should be preserved when writing the 11273registers via a read/modify/write cycle. There are 3 bits preserved in 11274this 11275manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 11276 11277Implemented the initial deployment of new OSL mutex interfaces. Since 11278some 11279host operating systems have separate mutex and semaphore objects, this 11280feature was requested. The base code now uses mutexes (and the new mutex 11281interfaces) wherever a binary semaphore was used previously. However, for 11282the current release, the mutex interfaces are defined as macros to map 11283them 11284to the existing semaphore interfaces. Therefore, no OSL changes are 11285required 11286at this time. (See acpiosxf.h) 11287 11288Fixed several problems with the support for the control method SyncLevel 11289parameter. The SyncLevel now works according to the ACPI specification 11290and 11291in concert with the Mutex SyncLevel parameter, since the current 11292SyncLevel 11293is a property of the executing thread. Mutual exclusion for control 11294methods 11295is now implemented with a mutex instead of a semaphore. 11296 11297Fixed three instances of the use of the C shift operator in the bitfield 11298support code (exfldio.c) to avoid the use of a shift value larger than 11299the 11300target data width. The behavior of C compilers is undefined in this case 11301and 11302can cause unpredictable results, and therefore the case must be detected 11303and 11304avoided. (Fiodor Suietov) 11305 11306Added an info message whenever an SSDT or OEM table is loaded dynamically 11307via the Load() or LoadTable() ASL operators. This should improve 11308debugging 11309capability since it will show exactly what tables have been loaded 11310(beyond 11311the tables present in the RSDT/XSDT.) 11312 11313Example Code and Data Size: These are the sizes for the OS-independent 11314acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11315debug version of the code includes the debug output trace mechanism and 11316has 11317a much larger code and data size. 11318 11319 Previous Release: 11320 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11321 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11322 Current Release: 11323 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11324 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11325 11326 113272) iASL Compiler/Disassembler and Tools: 11328 11329No changes for this release. 11330 11331---------------------------------------- 1133208 June 2006. Summary of changes for version 20060608: 11333 113341) ACPI CA Core Subsystem: 11335 11336Converted the locking mutex used for the ACPI hardware to a spinlock. 11337This 11338change should eliminate all problems caused by attempting to acquire a 11339semaphore at interrupt level, and it means that all ACPICA external 11340interfaces that directly access the ACPI hardware can be safely called 11341from 11342interrupt level. OSL code that implements the semaphore interfaces should 11343be 11344able to eliminate any workarounds for being called at interrupt level. 11345 11346Fixed a regression introduced in 20060526 where the ACPI device 11347initialization could be prematurely aborted with an AE_NOT_FOUND if a 11348device 11349did not have an optional _INI method. 11350 11351Fixed an IndexField issue where a write to the Data Register should be 11352limited in size to the AccessSize (width) of the IndexField itself. (BZ 11353433, 11354Fiodor Suietov) 11355 11356Fixed problem reports (Valery Podrezov) integrated: 11357- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 11358 11359Fixed problem reports (Fiodor Suietov) integrated: 11360- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 11361 11362Removed four global mutexes that were obsolete and were no longer being 11363used. 11364 11365Example Code and Data Size: These are the sizes for the OS-independent 11366acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11367debug version of the code includes the debug output trace mechanism and 11368has 11369a much larger code and data size. 11370 11371 Previous Release: 11372 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11373 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11374 Current Release: 11375 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11376 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11377 11378 113792) iASL Compiler/Disassembler and Tools: 11380 11381Fixed a fault when using -g option (get tables from registry) on Windows 11382machines. 11383 11384Fixed problem reports integrated: 11385- Generate error if CreateField NumBits parameter is zero. (BZ 405) 11386- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 11387Suietov) 11388- Global table revision override (-r) is ignored (BZ 413) 11389 11390---------------------------------------- 1139126 May 2006. Summary of changes for version 20060526: 11392 113931) ACPI CA Core Subsystem: 11394 11395Restructured, flattened, and simplified the internal interfaces for 11396namespace object evaluation - resulting in smaller code, less CPU stack 11397use, 11398and fewer interfaces. (With assistance from Mikhail Kouzmich) 11399 11400Fixed a problem with the CopyObject operator where the first parameter 11401was 11402not typed correctly for the parser, interpreter, compiler, and 11403disassembler. 11404Caused various errors and unexpected behavior. 11405 11406Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 11407produced incorrect results with some C compilers. Since the behavior of C 11408compilers when the shift value is larger than the datatype width is 11409apparently not well defined, the interpreter now detects this condition 11410and 11411simply returns zero as expected in all such cases. (BZ 395) 11412 11413Fixed problem reports (Valery Podrezov) integrated: 11414- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 11415- Allow interpreter to handle nested method declarations (BZ 5361) 11416 11417Fixed problem reports (Fiodor Suietov) integrated: 11418- AcpiTerminate doesn't free debug memory allocation list objects (BZ 11419355) 11420- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 11421356) 11422- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 11423- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 11424- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 11425- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 11426- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 11427- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 11428- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 11429365) 11430- Status of the Global Initialization Handler call not used (BZ 366) 11431- Incorrect object parameter to Global Initialization Handler (BZ 367) 11432 11433Example Code and Data Size: These are the sizes for the OS-independent 11434acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11435debug version of the code includes the debug output trace mechanism and 11436has 11437a much larger code and data size. 11438 11439 Previous Release: 11440 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11441 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11442 Current Release: 11443 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11444 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11445 11446 114472) iASL Compiler/Disassembler and Tools: 11448 11449Modified the parser to allow the names IO, DMA, and IRQ to be used as 11450namespace identifiers with no collision with existing resource descriptor 11451macro names. This provides compatibility with other ASL compilers and is 11452most useful for disassembly/recompilation of existing tables without 11453parse 11454errors. (With assistance from Thomas Renninger) 11455 11456Disassembler: fixed an incorrect disassembly problem with the 11457DataTableRegion and CopyObject operators. Fixed a possible fault during 11458disassembly of some Alias operators. 11459 11460---------------------------------------- 1146112 May 2006. Summary of changes for version 20060512: 11462 114631) ACPI CA Core Subsystem: 11464 11465Replaced the AcpiOsQueueForExecution interface with a new interface named 11466AcpiOsExecute. The major difference is that the new interface does not 11467have 11468a Priority parameter, this appeared to be useless and has been replaced 11469by 11470a 11471Type parameter. The Type tells the host what type of execution is being 11472requested, such as global lock handler, notify handler, GPE handler, etc. 11473This allows the host to queue and execute the request as appropriate for 11474the 11475request type, possibly using different work queues and different 11476priorities 11477for the various request types. This enables fixes for multithreading 11478deadlock problems such as BZ #5534, and will require changes to all 11479existing 11480OS interface layers. (Alexey Starikovskiy and Bob Moore) 11481 11482Fixed a possible memory leak associated with the support for the so- 11483called 11484"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 11485Suietov) 11486 11487Fixed a problem with the Load() operator where a table load from an 11488operation region could overwrite an internal table buffer by up to 7 11489bytes 11490and cause alignment faults on IPF systems. (With assistance from Luming 11491Yu) 11492 11493Example Code and Data Size: These are the sizes for the OS-independent 11494acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11495debug version of the code includes the debug output trace mechanism and 11496has 11497a much larger code and data size. 11498 11499 Previous Release: 11500 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11501 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11502 Current Release: 11503 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11504 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11505 11506 11507 115082) iASL Compiler/Disassembler and Tools: 11509 11510Disassembler: Implemented support to cross reference the internal 11511namespace 11512and automatically generate ASL External() statements for symbols not 11513defined 11514within the current table being disassembled. This will simplify the 11515disassembly and recompilation of interdependent tables such as SSDTs 11516since 11517these statements will no longer have to be added manually. 11518 11519Disassembler: Implemented experimental support to automatically detect 11520invocations of external control methods and generate appropriate 11521External() 11522statements. This is problematic because the AML cannot be correctly 11523parsed 11524until the number of arguments for each control method is known. 11525Currently, 11526standalone method invocations and invocations as the source operand of a 11527Store() statement are supported. 11528 11529Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 11530LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 11531LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 11532more readable and likely closer to the original ASL source. 11533 11534---------------------------------------- 1153521 April 2006. Summary of changes for version 20060421: 11536 115371) ACPI CA Core Subsystem: 11538 11539Removed a device initialization optimization introduced in 20051216 where 11540the _STA method was not run unless an _INI was also present for the same 11541device. This optimization could cause problems because it could allow 11542_INI 11543methods to be run within a not-present device subtree. (If a not-present 11544device had no _INI, _STA would not be run, the not-present status would 11545not 11546be discovered, and the children of the device would be incorrectly 11547traversed.) 11548 11549Implemented a new _STA optimization where namespace subtrees that do not 11550contain _INI are identified and ignored during device initialization. 11551Selectively running _STA can significantly improve boot time on large 11552machines (with assistance from Len Brown.) 11553 11554Implemented support for the device initialization case where the returned 11555_STA flags indicate a device not-present but functioning. In this case, 11556_INI 11557is not run, but the device children are examined for presence, as per the 11558ACPI specification. 11559 11560Implemented an additional change to the IndexField support in order to 11561conform to MS behavior. The value written to the Index Register is not 11562simply a byte offset, it is a byte offset in units of the access width of 11563the parent Index Field. (Fiodor Suietov) 11564 11565Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 11566interface is called during the creation of all AML operation regions, and 11567allows the host OS to exert control over what addresses it will allow the 11568AML code to access. Operation Regions whose addresses are disallowed will 11569cause a runtime exception when they are actually accessed (will not 11570affect 11571or abort table loading.) See oswinxf or osunixxf for an example 11572implementation. 11573 11574Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 11575interface allows the host OS to match the various "optional" 11576interface/behavior strings for the _OSI predefined control method as 11577appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 11578for an example implementation. 11579 11580Restructured and corrected various problems in the exception handling 11581code 11582paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 11583(with assistance from Takayoshi Kochi.) 11584 11585Modified the Linux source converter to ignore quoted string literals 11586while 11587converting identifiers from mixed to lower case. This will correct 11588problems 11589with the disassembler and other areas where such strings must not be 11590modified. 11591 11592The ACPI_FUNCTION_* macros no longer require quotes around the function 11593name. This allows the Linux source converter to convert the names, now 11594that 11595the converter ignores quoted strings. 11596 11597Example Code and Data Size: These are the sizes for the OS-independent 11598acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11599debug version of the code includes the debug output trace mechanism and 11600has 11601a much larger code and data size. 11602 11603 Previous Release: 11604 11605 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11606 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11607 Current Release: 11608 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11609 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11610 11611 116122) iASL Compiler/Disassembler and Tools: 11613 11614Implemented 3 new warnings for iASL, and implemented multiple warning 11615levels 11616(w2 flag). 11617 116181) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 11619not 11620WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 11621check for the possible timeout, a warning is issued. 11622 116232) Useless operators: If an ASL operator does not specify an optional 11624target 11625operand and it also does not use the function return value from the 11626operator, a warning is issued since the operator effectively does 11627nothing. 11628 116293) Unreferenced objects: If a namespace object is created, but never 11630referenced, a warning is issued. This is a warning level 2 since there 11631are 11632cases where this is ok, such as when a secondary table is loaded that 11633uses 11634the unreferenced objects. Even so, care is taken to only flag objects 11635that 11636don't look like they will ever be used. For example, the reserved methods 11637(starting with an underscore) are usually not referenced because it is 11638expected that the OS will invoke them. 11639 11640---------------------------------------- 1164131 March 2006. Summary of changes for version 20060331: 11642 116431) ACPI CA Core Subsystem: 11644 11645Implemented header file support for the following additional ACPI tables: 11646ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 11647support, 11648all current and known ACPI tables are now defined in the ACPICA headers 11649and 11650are available for use by device drivers and other software. 11651 11652Implemented support to allow tables that contain ACPI names with invalid 11653characters to be loaded. Previously, this would cause the table load to 11654fail, but since there are several known cases of such tables on existing 11655machines, this change was made to enable ACPI support for them. Also, 11656this 11657matches the behavior of the Microsoft ACPI implementation. 11658 11659Fixed a couple regressions introduced during the memory optimization in 11660the 1166120060317 release. The namespace node definition required additional 11662reorganization and an internal datatype that had been changed to 8-bit 11663was 11664restored to 32-bit. (Valery Podrezov) 11665 11666Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 11667could be passed through to AcpiOsReleaseObject which is unexpected. Such 11668null pointers are now trapped and ignored, matching the behavior of the 11669previous implementation before the deployment of AcpiOsReleaseObject. 11670(Valery Podrezov, Fiodor Suietov) 11671 11672Fixed a memory mapping leak during the deletion of a SystemMemory 11673operation 11674region where a cached memory mapping was not deleted. This became a 11675noticeable problem for operation regions that are defined within 11676frequently 11677used control methods. (Dana Meyers) 11678 11679Reorganized the ACPI table header files into two main files: one for the 11680ACPI tables consumed by the ACPICA core, and another for the 11681miscellaneous 11682ACPI tables that are consumed by the drivers and other software. The 11683various 11684FADT definitions were merged into one common section and three different 11685tables (ACPI 1.0, 1.0+, and 2.0) 11686 11687Example Code and Data Size: These are the sizes for the OS-independent 11688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11689debug version of the code includes the debug output trace mechanism and 11690has 11691a much larger code and data size. 11692 11693 Previous Release: 11694 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11695 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11696 Current Release: 11697 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11698 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11699 11700 117012) iASL Compiler/Disassembler and Tools: 11702 11703Disassembler: Implemented support to decode and format all non-AML ACPI 11704tables (tables other than DSDTs and SSDTs.) This includes the new tables 11705added to the ACPICA headers, therefore all current and known ACPI tables 11706are 11707supported. 11708 11709Disassembler: The change to allow ACPI names with invalid characters also 11710enables the disassembly of such tables. Invalid characters within names 11711are 11712changed to '*' to make the name printable; the iASL compiler will still 11713generate an error for such names, however, since this is an invalid ACPI 11714character. 11715 11716Implemented an option for AcpiXtract (-a) to extract all tables found in 11717the 11718input file. The default invocation extracts only the DSDTs and SSDTs. 11719 11720Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 11721makefile for the AcpiXtract utility. 11722 11723---------------------------------------- 1172417 March 2006. Summary of changes for version 20060317: 11725 117261) ACPI CA Core Subsystem: 11727 11728Implemented the use of a cache object for all internal namespace nodes. 11729Since there are about 1000 static nodes in a typical system, this will 11730decrease memory use for cache implementations that minimize per- 11731allocation 11732overhead (such as a slab allocator.) 11733 11734Removed the reference count mechanism for internal namespace nodes, since 11735it 11736was deemed unnecessary. This reduces the size of each namespace node by 11737about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 11738case, 11739and 32 bytes for the 64-bit case. 11740 11741Optimized several internal data structures to reduce object size on 64- 11742bit 11743platforms by packing data within the 64-bit alignment. This includes the 11744frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 11745instances corresponding to the namespace objects. 11746 11747Added two new strings for the predefined _OSI method: "Windows 2001.1 11748SP1" 11749and "Windows 2006". 11750 11751Split the allocation tracking mechanism out to a separate file, from 11752utalloc.c to uttrack.c. This mechanism appears to be only useful for 11753application-level code. Kernels may wish to not include uttrack.c in 11754distributions. 11755 11756Removed all remnants of the obsolete ACPI_REPORT_* macros and the 11757associated 11758code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 11759macros.) 11760 11761Code and Data Size: These are the sizes for the acpica.lib produced by 11762the 11763Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11764ACPI 11765driver or OSPM code. The debug version of the code includes the debug 11766output 11767trace mechanism and has a much larger code and data size. Note that these 11768values will vary depending on the efficiency of the compiler and the 11769compiler options used during generation. 11770 11771 Previous Release: 11772 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11773 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11774 Current Release: 11775 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11776 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11777 11778 117792) iASL Compiler/Disassembler and Tools: 11780 11781Implemented an ANSI C version of the acpixtract utility. This version 11782will 11783automatically extract the DSDT and all SSDTs from the input acpidump text 11784file and dump the binary output to separate files. It can also display a 11785summary of the input file including the headers for each table found and 11786will extract any single ACPI table, with any signature. (See 11787source/tools/acpixtract) 11788 11789---------------------------------------- 1179010 March 2006. Summary of changes for version 20060310: 11791 117921) ACPI CA Core Subsystem: 11793 11794Tagged all external interfaces to the subsystem with the new 11795ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 11796assist 11797kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 11798macro. The default definition is NULL. 11799 11800Added the ACPI_THREAD_ID type for the return value from 11801AcpiOsGetThreadId. 11802This allows the host to define this as necessary to simplify kernel 11803integration. The default definition is ACPI_NATIVE_UINT. 11804 11805Fixed two interpreter problems related to error processing, the deletion 11806of 11807objects, and placing invalid pointers onto the internal operator result 11808stack. BZ 6028, 6151 (Valery Podrezov) 11809 11810Increased the reference count threshold where a warning is emitted for 11811large 11812reference counts in order to eliminate unnecessary warnings on systems 11813with 11814large namespaces (especially 64-bit.) Increased the value from 0x400 to 118150x800. 11816 11817Due to universal disagreement as to the meaning of the 'c' in the 11818calloc() 11819function, the ACPI_MEM_CALLOCATE macro has been renamed to 11820ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 11821ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 11822ACPI_FREE. 11823 11824Code and Data Size: These are the sizes for the acpica.lib produced by 11825the 11826Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11827ACPI 11828driver or OSPM code. The debug version of the code includes the debug 11829output 11830trace mechanism and has a much larger code and data size. Note that these 11831values will vary depending on the efficiency of the compiler and the 11832compiler options used during generation. 11833 11834 Previous Release: 11835 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11836 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11837 Current Release: 11838 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11839 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11840 11841 118422) iASL Compiler/Disassembler: 11843 11844Disassembler: implemented support for symbolic resource descriptor 11845references. If a CreateXxxxField operator references a fixed offset 11846within 11847a 11848resource descriptor, a name is assigned to the descriptor and the offset 11849is 11850translated to the appropriate resource tag and pathname. The addition of 11851this support brings the disassembled code very close to the original ASL 11852source code and helps eliminate run-time errors when the disassembled 11853code 11854is modified (and recompiled) in such a way as to invalidate the original 11855fixed offsets. 11856 11857Implemented support for a Descriptor Name as the last parameter to the 11858ASL 11859Register() macro. This parameter was inadvertently left out of the ACPI 11860specification, and will be added for ACPI 3.0b. 11861 11862Fixed a problem where the use of the "_OSI" string (versus the full path 11863"\_OSI") caused an internal compiler error. ("No back ptr to op") 11864 11865Fixed a problem with the error message that occurs when an invalid string 11866is 11867used for a _HID object (such as one with an embedded asterisk: 11868"*PNP010A".) 11869The correct message is now displayed. 11870 11871---------------------------------------- 1187217 February 2006. Summary of changes for version 20060217: 11873 118741) ACPI CA Core Subsystem: 11875 11876Implemented a change to the IndexField support to match the behavior of 11877the 11878Microsoft AML interpreter. The value written to the Index register is now 11879a 11880byte offset, no longer an index based upon the width of the Data 11881register. 11882This should fix IndexField problems seen on some machines where the Data 11883register is not exactly one byte wide. The ACPI specification will be 11884clarified on this point. 11885 11886Fixed a problem where several resource descriptor types could overrun the 11887internal descriptor buffer due to size miscalculation: VendorShort, 11888VendorLong, and Interrupt. This was noticed on IA64 machines, but could 11889affect all platforms. 11890 11891Fixed a problem where individual resource descriptors were misaligned 11892within 11893the internal buffer, causing alignment faults on IA64 platforms. 11894 11895Code and Data Size: These are the sizes for the acpica.lib produced by 11896the 11897Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11898ACPI 11899driver or OSPM code. The debug version of the code includes the debug 11900output 11901trace mechanism and has a much larger code and data size. Note that these 11902values will vary depending on the efficiency of the compiler and the 11903compiler options used during generation. 11904 11905 Previous Release: 11906 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11907 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11908 Current Release: 11909 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11910 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11911 11912 119132) iASL Compiler/Disassembler: 11914 11915Implemented support for new reserved names: _WDG and _WED are Microsoft 11916extensions for Windows Instrumentation Management, _TDL is a new ACPI- 11917defined method (Throttling Depth Limit.) 11918 11919Fixed a problem where a zero-length VendorShort or VendorLong resource 11920descriptor was incorrectly emitted as a descriptor of length one. 11921 11922---------------------------------------- 1192310 February 2006. Summary of changes for version 20060210: 11924 119251) ACPI CA Core Subsystem: 11926 11927Removed a couple of extraneous ACPI_ERROR messages that appeared during 11928normal execution. These became apparent after the conversion from 11929ACPI_DEBUG_PRINT. 11930 11931Fixed a problem where the CreateField operator could hang if the BitIndex 11932or 11933NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 11934 11935Fixed a problem where a DeRefOf operation on a buffer object incorrectly 11936failed with an exception. This also fixes a couple of related RefOf and 11937DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 11938 11939Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 11940of 11941AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 11942BZ 119435480) 11944 11945Implemented a memory cleanup at the end of the execution of each 11946iteration 11947of an AML While() loop, preventing the accumulation of outstanding 11948objects. 11949(Valery Podrezov, BZ 5427) 11950 11951Eliminated a chunk of duplicate code in the object resolution code. 11952(Valery 11953Podrezov, BZ 5336) 11954 11955Fixed several warnings during the 64-bit code generation. 11956 11957The AcpiSrc source code conversion tool now inserts one line of 11958whitespace 11959after an if() statement that is followed immediately by a comment, 11960improving 11961readability of the Linux code. 11962 11963Code and Data Size: The current and previous library sizes for the core 11964subsystem are shown below. These are the code and data sizes for the 11965acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11966These 11967values do not include any ACPI driver or OSPM code. The debug version of 11968the 11969code includes the debug output trace mechanism and has a much larger code 11970and data size. Note that these values will vary depending on the 11971efficiency 11972of the compiler and the compiler options used during generation. 11973 11974 Previous Release: 11975 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11976 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11977 Current Release: 11978 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11979 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11980 11981 119822) iASL Compiler/Disassembler: 11983 11984Fixed a problem with the disassembly of a BankField operator with a 11985complex 11986expression for the BankValue parameter. 11987 11988---------------------------------------- 1198927 January 2006. Summary of changes for version 20060127: 11990 119911) ACPI CA Core Subsystem: 11992 11993Implemented support in the Resource Manager to allow unresolved 11994namestring 11995references within resource package objects for the _PRT method. This 11996support 11997is in addition to the previously implemented unresolved reference support 11998within the AML parser. If the interpreter slack mode is enabled, these 11999unresolved references will be passed through to the caller as a NULL 12000package 12001entry. 12002 12003Implemented and deployed new macros and functions for error and warning 12004messages across the subsystem. These macros are simpler and generate less 12005code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12006ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12007macros remain defined to allow ACPI drivers time to migrate to the new 12008macros. 12009 12010Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12011the 12012Acquire/Release Lock OSL interfaces. 12013 12014Fixed a problem where Alias ASL operators are sometimes not correctly 12015resolved, in both the interpreter and the iASL compiler. 12016 12017Fixed several problems with the implementation of the 12018ConcatenateResTemplate 12019ASL operator. As per the ACPI specification, zero length buffers are now 12020treated as a single EndTag. One-length buffers always cause a fatal 12021exception. Non-zero length buffers that do not end with a full 2-byte 12022EndTag 12023cause a fatal exception. 12024 12025Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12026interface. (With assistance from Thomas Renninger) 12027 12028Code and Data Size: The current and previous library sizes for the core 12029subsystem are shown below. These are the code and data sizes for the 12030acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12031These 12032values do not include any ACPI driver or OSPM code. The debug version of 12033the 12034code includes the debug output trace mechanism and has a much larger code 12035and data size. Note that these values will vary depending on the 12036efficiency 12037of the compiler and the compiler options used during generation. 12038 12039 Previous Release: 12040 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12041 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12042 Current Release: 12043 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12044 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12045 12046 120472) iASL Compiler/Disassembler: 12048 12049Fixed an internal error that was generated for any forward references to 12050ASL 12051Alias objects. 12052 12053---------------------------------------- 1205413 January 2006. Summary of changes for version 20060113: 12055 120561) ACPI CA Core Subsystem: 12057 12058Added 2006 copyright to all module headers and signons. This affects 12059virtually every file in the ACPICA core subsystem, iASL compiler, and the 12060utilities. 12061 12062Enhanced the ACPICA error reporting in order to simplify user migration 12063to 12064the non-debug version of ACPICA. Replaced all instances of the 12065ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12066debug 12067levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12068respectively. This preserves all error and warning messages in the non- 12069debug 12070version of the ACPICA code (this has been referred to as the "debug lite" 12071option.) Over 200 cases were converted to create a total of over 380 12072error/warning messages across the ACPICA code. This increases the code 12073and 12074data size of the default non-debug version of the code somewhat (about 1207513K), 12076but all error/warning reporting may be disabled if desired (and code 12077eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12078configuration option. The size of the debug version of ACPICA remains 12079about 12080the same. 12081 12082Fixed a memory leak within the AML Debugger "Set" command. One object was 12083not properly deleted for every successful invocation of the command. 12084 12085Code and Data Size: The current and previous library sizes for the core 12086subsystem are shown below. These are the code and data sizes for the 12087acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12088These 12089values do not include any ACPI driver or OSPM code. The debug version of 12090the 12091code includes the debug output trace mechanism and has a much larger code 12092and data size. Note that these values will vary depending on the 12093efficiency 12094of the compiler and the compiler options used during generation. 12095 12096 Previous Release: 12097 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12098 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12099 Current Release: 12100 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12101 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12102 12103 121042) iASL Compiler/Disassembler: 12105 12106The compiler now officially supports the ACPI 3.0a specification that was 12107released on December 30, 2005. (Specification is available at 12108www.acpi.info) 12109 12110---------------------------------------- 1211116 December 2005. Summary of changes for version 20051216: 12112 121131) ACPI CA Core Subsystem: 12114 12115Implemented optional support to allow unresolved names within ASL Package 12116objects. A null object is inserted in the package when a named reference 12117cannot be located in the current namespace. Enabled via the interpreter 12118slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12119machines 12120that contain such code. 12121 12122Implemented an optimization to the initialization sequence that can 12123improve 12124boot time. During ACPI device initialization, the _STA method is now run 12125if 12126and only if the _INI method exists. The _STA method is used to determine 12127if 12128the device is present; An _INI can only be run if _STA returns present, 12129but 12130it is a waste of time to run the _STA method if the _INI does not exist. 12131(Prototype and assistance from Dong Wei) 12132 12133Implemented use of the C99 uintptr_t for the pointer casting macros if it 12134is 12135available in the current compiler. Otherwise, the default (void *) cast 12136is 12137used as before. 12138 12139Fixed some possible memory leaks found within the execution path of the 12140Break, Continue, If, and CreateField operators. (Valery Podrezov) 12141 12142Fixed a problem introduced in the 20051202 release where an exception is 12143generated during method execution if a control method attempts to declare 12144another method. 12145 12146Moved resource descriptor string constants that are used by both the AML 12147disassembler and AML debugger to the common utilities directory so that 12148these components are independent. 12149 12150Implemented support in the AcpiExec utility (-e switch) to globally 12151ignore 12152exceptions during control method execution (method is not aborted.) 12153 12154Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 12155generation. 12156 12157Code and Data Size: The current and previous library sizes for the core 12158subsystem are shown below. These are the code and data sizes for the 12159acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12160These 12161values do not include any ACPI driver or OSPM code. The debug version of 12162the 12163code includes the debug output trace mechanism and has a much larger code 12164and data size. Note that these values will vary depending on the 12165efficiency 12166of the compiler and the compiler options used during generation. 12167 12168 Previous Release: 12169 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12170 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12171 Current Release: 12172 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12173 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12174 12175 121762) iASL Compiler/Disassembler: 12177 12178Fixed a problem where a CPU stack overflow fault could occur if a 12179recursive 12180method call was made from within a Return statement. 12181 12182---------------------------------------- 1218302 December 2005. Summary of changes for version 20051202: 12184 121851) ACPI CA Core Subsystem: 12186 12187Modified the parsing of control methods to no longer create namespace 12188objects during the first pass of the parse. Objects are now created only 12189during the execute phase, at the moment the namespace creation operator 12190is 12191encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 12192This 12193should eliminate ALREADY_EXISTS exceptions seen on some machines where 12194reentrant control methods are protected by an AML mutex. The mutex will 12195now 12196correctly block multiple threads from attempting to create the same 12197object 12198more than once. 12199 12200Increased the number of available Owner Ids for namespace object tracking 12201from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 12202on 12203some machines with a large number of ACPI tables (either static or 12204dynamic). 12205 12206Fixed a problem with the AcpiExec utility where a fault could occur when 12207the 12208-b switch (batch mode) is used. 12209 12210Enhanced the namespace dump routine to output the owner ID for each 12211namespace object. 12212 12213Code and Data Size: The current and previous library sizes for the core 12214subsystem are shown below. These are the code and data sizes for the 12215acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12216These 12217values do not include any ACPI driver or OSPM code. The debug version of 12218the 12219code includes the debug output trace mechanism and has a much larger code 12220and data size. Note that these values will vary depending on the 12221efficiency 12222of the compiler and the compiler options used during generation. 12223 12224 Previous Release: 12225 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12226 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12227 Current Release: 12228 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12229 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12230 12231 122322) iASL Compiler/Disassembler: 12233 12234Fixed a parse error during compilation of certain Switch/Case constructs. 12235To 12236simplify the parse, the grammar now allows for multiple Default 12237statements 12238and this error is now detected and flagged during the analysis phase. 12239 12240Disassembler: The disassembly now includes the contents of the original 12241table header within a comment at the start of the file. This includes the 12242name and version of the original ASL compiler. 12243 12244---------------------------------------- 1224517 November 2005. Summary of changes for version 20051117: 12246 122471) ACPI CA Core Subsystem: 12248 12249Fixed a problem in the AML parser where the method thread count could be 12250decremented below zero if any errors occurred during the method parse 12251phase. 12252This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 12253machines. 12254This also fixed a related regression with the mechanism that detects and 12255corrects methods that cannot properly handle reentrancy (related to the 12256deployment of the new OwnerId mechanism.) 12257 12258Eliminated the pre-parsing of control methods (to detect errors) during 12259table load. Related to the problem above, this was causing unwind issues 12260if 12261any errors occurred during the parse, and it seemed to be overkill. A 12262table 12263load should not be aborted if there are problems with any single control 12264method, thus rendering this feature rather pointless. 12265 12266Fixed a problem with the new table-driven resource manager where an 12267internal 12268buffer overflow could occur for small resource templates. 12269 12270Implemented a new external interface, AcpiGetVendorResource. This 12271interface 12272will find and return a vendor-defined resource descriptor within a _CRS 12273or 12274_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 12275Helgaas. 12276 12277Removed the length limit (200) on string objects as per the upcoming ACPI 122783.0A specification. This affects the following areas of the interpreter: 122791) 12280any implicit conversion of a Buffer to a String, 2) a String object 12281result 12282of the ASL Concatenate operator, 3) the String object result of the ASL 12283ToString operator. 12284 12285Fixed a problem in the Windows OS interface layer (OSL) where a 12286WAIT_FOREVER 12287on a semaphore object would incorrectly timeout. This allows the 12288multithreading features of the AcpiExec utility to work properly under 12289Windows. 12290 12291Updated the Linux makefiles for the iASL compiler and AcpiExec to include 12292the recently added file named "utresrc.c". 12293 12294Code and Data Size: The current and previous library sizes for the core 12295subsystem are shown below. These are the code and data sizes for the 12296acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12297These 12298values do not include any ACPI driver or OSPM code. The debug version of 12299the 12300code includes the debug output trace mechanism and has a much larger code 12301and data size. Note that these values will vary depending on the 12302efficiency 12303of the compiler and the compiler options used during generation. 12304 12305 Previous Release: 12306 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12307 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12308 Current Release: 12309 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12310 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12311 12312 123132) iASL Compiler/Disassembler: 12314 12315Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 12316specification. For the iASL compiler, this means that string literals 12317within 12318the source ASL can be of any length. 12319 12320Enhanced the listing output to dump the AML code for resource descriptors 12321immediately after the ASL code for each descriptor, instead of in a block 12322at 12323the end of the entire resource template. 12324 12325Enhanced the compiler debug output to dump the entire original parse tree 12326constructed during the parse phase, before any transforms are applied to 12327the 12328tree. The transformed tree is dumped also. 12329 12330---------------------------------------- 1233102 November 2005. Summary of changes for version 20051102: 12332 123331) ACPI CA Core Subsystem: 12334 12335Modified the subsystem initialization sequence to improve GPE support. 12336The 12337GPE initialization has been split into two parts in order to defer 12338execution 12339of the _PRW methods (Power Resources for Wake) until after the hardware 12340is 12341fully initialized and the SCI handler is installed. This allows the _PRW 12342methods to access fields protected by the Global Lock. This will fix 12343systems 12344where a NO_GLOBAL_LOCK exception has been seen during initialization. 12345 12346Converted the ACPI internal object disassemble and display code within 12347the 12348AML debugger to fully table-driven operation, reducing code size and 12349increasing maintainability. 12350 12351Fixed a regression with the ConcatenateResTemplate() ASL operator 12352introduced 12353in the 20051021 release. 12354 12355Implemented support for "local" internal ACPI object types within the 12356debugger "Object" command and the AcpiWalkNamespace external interfaces. 12357These local types include RegionFields, BankFields, IndexFields, Alias, 12358and 12359reference objects. 12360 12361Moved common AML resource handling code into a new file, "utresrc.c". 12362This 12363code is shared by both the Resource Manager and the AML Debugger. 12364 12365Code and Data Size: The current and previous library sizes for the core 12366subsystem are shown below. These are the code and data sizes for the 12367acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12368These 12369values do not include any ACPI driver or OSPM code. The debug version of 12370the 12371code includes the debug output trace mechanism and has a much larger code 12372and data size. Note that these values will vary depending on the 12373efficiency 12374of the compiler and the compiler options used during generation. 12375 12376 Previous Release: 12377 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12378 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12379 Current Release: 12380 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12381 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12382 12383 123842) iASL Compiler/Disassembler: 12385 12386Fixed a problem with very large initializer lists (more than 4000 12387elements) 12388for both Buffer and Package objects where the parse stack could overflow. 12389 12390Enhanced the pre-compile source code scan for non-ASCII characters to 12391ignore 12392characters within comment fields. The scan is now always performed and is 12393no 12394longer optional, detecting invalid characters within a source file 12395immediately rather than during the parse phase or later. 12396 12397Enhanced the ASL grammar definition to force early reductions on all 12398list- 12399style grammar elements so that the overall parse stack usage is greatly 12400reduced. This should improve performance and reduce the possibility of 12401parse 12402stack overflow. 12403 12404Eliminated all reduce/reduce conflicts in the iASL parser generation. 12405Also, 12406with the addition of a %expected statement, the compiler generates from 12407source with no warnings. 12408 12409Fixed a possible segment fault in the disassembler if the input filename 12410does not contain a "dot" extension (Thomas Renninger). 12411 12412---------------------------------------- 1241321 October 2005. Summary of changes for version 20051021: 12414 124151) ACPI CA Core Subsystem: 12416 12417Implemented support for the EM64T and other x86-64 processors. This 12418essentially entails recognizing that these processors support non-aligned 12419memory transfers. Previously, all 64-bit processors were assumed to lack 12420hardware support for non-aligned transfers. 12421 12422Completed conversion of the Resource Manager to nearly full table-driven 12423operation. Specifically, the resource conversion code (convert AML to 12424internal format and the reverse) and the debug code to dump internal 12425resource descriptors are fully table-driven, reducing code and data size 12426and 12427improving maintainability. 12428 12429The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 12430word 12431on 64-bit processors instead of a fixed 32-bit word. (With assistance 12432from 12433Alexey Starikovskiy) 12434 12435Implemented support within the resource conversion code for the Type- 12436Specific byte within the various ACPI 3.0 *WordSpace macros. 12437 12438Fixed some issues within the resource conversion code for the type- 12439specific 12440flags for both Memory and I/O address resource descriptors. For Memory, 12441implemented support for the MTP and TTP flags. For I/O, split the TRS and 12442TTP flags into two separate fields. 12443 12444Code and Data Size: The current and previous library sizes for the core 12445subsystem are shown below. These are the code and data sizes for the 12446acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12447These 12448values do not include any ACPI driver or OSPM code. The debug version of 12449the 12450code includes the debug output trace mechanism and has a much larger code 12451and data size. Note that these values will vary depending on the 12452efficiency 12453of the compiler and the compiler options used during generation. 12454 12455 Previous Release: 12456 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12457 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12458 Current Release: 12459 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12460 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12461 12462 12463 124642) iASL Compiler/Disassembler: 12465 12466Relaxed a compiler restriction that disallowed a ResourceIndex byte if 12467the 12468corresponding ResourceSource string was not also present in a resource 12469descriptor declaration. This restriction caused problems with existing 12470AML/ASL code that includes the Index byte without the string. When such 12471AML 12472was disassembled, it could not be compiled without modification. Further, 12473the modified code created a resource template with a different size than 12474the 12475original, breaking code that used fixed offsets into the resource 12476template 12477buffer. 12478 12479Removed a recent feature of the disassembler to ignore a lone 12480ResourceIndex 12481byte. This byte is now emitted if present so that the exact AML can be 12482reproduced when the disassembled code is recompiled. 12483 12484Improved comments and text alignment for the resource descriptor code 12485emitted by the disassembler. 12486 12487Implemented disassembler support for the ACPI 3.0 AccessSize field within 12488a 12489Register() resource descriptor. 12490 12491---------------------------------------- 1249230 September 2005. Summary of changes for version 20050930: 12493 124941) ACPI CA Core Subsystem: 12495 12496Completed a major overhaul of the Resource Manager code - specifically, 12497optimizations in the area of the AML/internal resource conversion code. 12498The 12499code has been optimized to simplify and eliminate duplicated code, CPU 12500stack 12501use has been decreased by optimizing function parameters and local 12502variables, and naming conventions across the manager have been 12503standardized 12504for clarity and ease of maintenance (this includes function, parameter, 12505variable, and struct/typedef names.) The update may force changes in some 12506driver code, depending on how resources are handled by the host OS. 12507 12508All Resource Manager dispatch and information tables have been moved to a 12509single location for clarity and ease of maintenance. One new file was 12510created, named "rsinfo.c". 12511 12512The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 12513guarantee that the argument is not evaluated twice, making them less 12514prone 12515to macro side-effects. However, since there exists the possibility of 12516additional stack use if a particular compiler cannot optimize them (such 12517as 12518in the debug generation case), the original macros are optionally 12519available. 12520Note that some invocations of the return_VALUE macro may now cause size 12521mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 12522to 12523eliminate these. (From Randy Dunlap) 12524 12525Implemented a new mechanism to enable debug tracing for individual 12526control 12527methods. A new external interface, AcpiDebugTrace, is provided to enable 12528this mechanism. The intent is to allow the host OS to easily enable and 12529disable tracing for problematic control methods. This interface can be 12530easily exposed to a user or debugger interface if desired. See the file 12531psxface.c for details. 12532 12533AcpiUtCallocate will now return a valid pointer if a length of zero is 12534specified - a length of one is used and a warning is issued. This matches 12535the behavior of AcpiUtAllocate. 12536 12537Code and Data Size: The current and previous library sizes for the core 12538subsystem are shown below. These are the code and data sizes for the 12539acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12540These 12541values do not include any ACPI driver or OSPM code. The debug version of 12542the 12543code includes the debug output trace mechanism and has a much larger code 12544and data size. Note that these values will vary depending on the 12545efficiency 12546of the compiler and the compiler options used during generation. 12547 12548 Previous Release: 12549 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12550 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12551 Current Release: 12552 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12553 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12554 12555 125562) iASL Compiler/Disassembler: 12557 12558A remark is issued if the effective compile-time length of a package or 12559buffer is zero. Previously, this was a warning. 12560 12561---------------------------------------- 1256216 September 2005. Summary of changes for version 20050916: 12563 125641) ACPI CA Core Subsystem: 12565 12566Fixed a problem within the Resource Manager where support for the Generic 12567Register descriptor was not fully implemented. This descriptor is now 12568fully 12569recognized, parsed, disassembled, and displayed. 12570 12571Completely restructured the Resource Manager code to utilize table-driven 12572dispatch and lookup, eliminating many of the large switch() statements. 12573This 12574reduces overall subsystem code size and code complexity. Affects the 12575resource parsing and construction, disassembly, and debug dump output. 12576 12577Cleaned up and restructured the debug dump output for all resource 12578descriptors. Improved readability of the output and reduced code size. 12579 12580Fixed a problem where changes to internal data structures caused the 12581optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 12582 12583Code and Data Size: The current and previous library sizes for the core 12584subsystem are shown below. These are the code and data sizes for the 12585acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12586These 12587values do not include any ACPI driver or OSPM code. The debug version of 12588the 12589code includes the debug output trace mechanism and has a much larger code 12590and data size. Note that these values will vary depending on the 12591efficiency 12592of the compiler and the compiler options used during generation. 12593 12594 Previous Release: 12595 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12596 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12597 Current Release: 12598 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12599 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12600 12601 126022) iASL Compiler/Disassembler: 12603 12604Updated the disassembler to automatically insert an EndDependentFn() 12605macro 12606into the ASL stream if this macro is missing in the original AML code, 12607simplifying compilation of the resulting ASL module. 12608 12609Fixed a problem in the disassembler where a disassembled ResourceSource 12610string (within a large resource descriptor) was not surrounded by quotes 12611and 12612not followed by a comma, causing errors when the resulting ASL module was 12613compiled. Also, escape sequences within a ResourceSource string are now 12614handled correctly (especially "\\") 12615 12616---------------------------------------- 1261702 September 2005. Summary of changes for version 20050902: 12618 126191) ACPI CA Core Subsystem: 12620 12621Fixed a problem with the internal Owner ID allocation and deallocation 12622mechanisms for control method execution and recursive method invocation. 12623This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 12624messages seen on some systems. Recursive method invocation depth is 12625currently limited to 255. (Alexey Starikovskiy) 12626 12627Completely eliminated all vestiges of support for the "module-level 12628executable code" until this support is fully implemented and debugged. 12629This 12630should eliminate the NO_RETURN_VALUE exceptions seen during table load on 12631some systems that invoke this support. 12632 12633Fixed a problem within the resource manager code where the transaction 12634flags 12635for a 64-bit address descriptor were handled incorrectly in the type- 12636specific flag byte. 12637 12638Consolidated duplicate code within the address descriptor resource 12639manager 12640code, reducing overall subsystem code size. 12641 12642Fixed a fault when using the AML debugger "disassemble" command to 12643disassemble individual control methods. 12644 12645Removed references to the "release_current" directory within the Unix 12646release package. 12647 12648Code and Data Size: The current and previous core subsystem library sizes 12649are shown below. These are the code and data sizes for the acpica.lib 12650produced by the Microsoft Visual C++ 6.0 compiler. These values do not 12651include any ACPI driver or OSPM code. The debug version of the code 12652includes 12653the debug output trace mechanism and has a much larger code and data 12654size. 12655Note that these values will vary depending on the efficiency of the 12656compiler 12657and the compiler options used during generation. 12658 12659 Previous Release: 12660 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12661 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12662 Current Release: 12663 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12664 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12665 12666 126672) iASL Compiler/Disassembler: 12668 12669Implemented an error check for illegal duplicate values in the interrupt 12670and 12671dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 12672Interrupt(). 12673 12674Implemented error checking for the Irq() and IrqNoFlags() macros to 12675detect 12676too many values in the interrupt list (16 max) and invalid values in the 12677list (range 0 - 15) 12678 12679The maximum length string literal within an ASL file is now restricted to 12680200 characters as per the ACPI specification. 12681 12682Fixed a fault when using the -ln option (generate namespace listing). 12683 12684Implemented an error check to determine if a DescriptorName within a 12685resource descriptor has already been used within the current scope. 12686 12687---------------------------------------- 1268815 August 2005. Summary of changes for version 20050815: 12689 126901) ACPI CA Core Subsystem: 12691 12692Implemented a full bytewise compare to determine if a table load request 12693is 12694attempting to load a duplicate table. The compare is performed if the 12695table 12696signatures and table lengths match. This will allow different tables with 12697the same OEM Table ID and revision to be loaded - probably against the 12698ACPI 12699specification, but discovered in the field nonetheless. 12700 12701Added the changes.txt logfile to each of the zipped release packages. 12702 12703Code and Data Size: Current and previous core subsystem library sizes are 12704shown below. These are the code and data sizes for the acpica.lib 12705produced 12706by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12707any ACPI driver or OSPM code. The debug version of the code includes the 12708debug output trace mechanism and has a much larger code and data size. 12709Note 12710that these values will vary depending on the efficiency of the compiler 12711and 12712the compiler options used during generation. 12713 12714 Previous Release: 12715 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12716 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12717 Current Release: 12718 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12719 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12720 12721 127222) iASL Compiler/Disassembler: 12723 12724Fixed a problem where incorrect AML code could be generated for Package 12725objects if optimization is disabled (via the -oa switch). 12726 12727Fixed a problem with where incorrect AML code is generated for variable- 12728length packages when the package length is not specified and the number 12729of 12730initializer values is greater than 255. 12731 12732 12733---------------------------------------- 1273429 July 2005. Summary of changes for version 20050729: 12735 127361) ACPI CA Core Subsystem: 12737 12738Implemented support to ignore an attempt to install/load a particular 12739ACPI 12740table more than once. Apparently there exists BIOS code that repeatedly 12741attempts to load the same SSDT upon certain events. With assistance from 12742Venkatesh Pallipadi. 12743 12744Restructured the main interface to the AML parser in order to correctly 12745handle all exceptional conditions. This will prevent leakage of the 12746OwnerId 12747resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 12748some 12749machines. With assistance from Alexey Starikovskiy. 12750 12751Support for "module level code" has been disabled in this version due to 12752a 12753number of issues that have appeared on various machines. The support can 12754be 12755enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 12756compilation. When the issues are fully resolved, the code will be enabled 12757by 12758default again. 12759 12760Modified the internal functions for debug print support to define the 12761FunctionName parameter as a (const char *) for compatibility with 12762compiler 12763built-in macros such as __FUNCTION__, etc. 12764 12765Linted the entire ACPICA source tree for both 32-bit and 64-bit. 12766 12767Implemented support to display an object count summary for the AML 12768Debugger 12769commands Object and Methods. 12770 12771Code and Data Size: Current and previous core subsystem library sizes are 12772shown below. These are the code and data sizes for the acpica.lib 12773produced 12774by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12775any ACPI driver or OSPM code. The debug version of the code includes the 12776debug output trace mechanism and has a much larger code and data size. 12777Note 12778that these values will vary depending on the efficiency of the compiler 12779and 12780the compiler options used during generation. 12781 12782 Previous Release: 12783 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12784 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12785 Current Release: 12786 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12787 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12788 12789 127902) iASL Compiler/Disassembler: 12791 12792Fixed a regression that appeared in the 20050708 version of the compiler 12793where an error message was inadvertently emitted for invocations of the 12794_OSI 12795reserved control method. 12796 12797---------------------------------------- 1279808 July 2005. Summary of changes for version 20050708: 12799 128001) ACPI CA Core Subsystem: 12801 12802The use of the CPU stack in the debug version of the subsystem has been 12803considerably reduced. Previously, a debug structure was declared in every 12804function that used the debug macros. This structure has been removed in 12805favor of declaring the individual elements as parameters to the debug 12806functions. This reduces the cumulative stack use during nested execution 12807of 12808ACPI function calls at the cost of a small increase in the code size of 12809the 12810debug version of the subsystem. With assistance from Alexey Starikovskiy 12811and 12812Len Brown. 12813 12814Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 12815headers to define a macro that will return the current function name at 12816runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 12817by 12818the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 12819compiler-dependent header, the function name is saved on the CPU stack 12820(one 12821pointer per function.) This mechanism is used because apparently there 12822exists no standard ANSI-C defined macro that that returns the function 12823name. 12824 12825Redesigned and reimplemented the "Owner ID" mechanism used to track 12826namespace objects created/deleted by ACPI tables and control method 12827execution. A bitmap is now used to allocate and free the IDs, thus 12828solving 12829the wraparound problem present in the previous implementation. The size 12830of 12831the namespace node descriptor was reduced by 2 bytes as a result (Alexey 12832Starikovskiy). 12833 12834Removed the UINT32_BIT and UINT16_BIT types that were used for the 12835bitfield 12836flag definitions within the headers for the predefined ACPI tables. These 12837have been replaced by UINT8_BIT in order to increase the code portability 12838of 12839the subsystem. If the use of UINT8 remains a problem, we may be forced to 12840eliminate bitfields entirely because of a lack of portability. 12841 12842Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 12843This 12844is a frequently used function and this improvement increases the 12845performance 12846of the entire subsystem (Alexey Starikovskiy). 12847 12848Fixed several possible memory leaks and the inverse - premature object 12849deletion (Alexey Starikovskiy). 12850 12851Code and Data Size: Current and previous core subsystem library sizes are 12852shown below. These are the code and data sizes for the acpica.lib 12853produced 12854by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12855any ACPI driver or OSPM code. The debug version of the code includes the 12856debug output trace mechanism and has a much larger code and data size. 12857Note 12858that these values will vary depending on the efficiency of the compiler 12859and 12860the compiler options used during generation. 12861 12862 Previous Release: 12863 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12864 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12865 Current Release: 12866 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12867 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12868 12869---------------------------------------- 1287024 June 2005. Summary of changes for version 20050624: 12871 128721) ACPI CA Core Subsystem: 12873 12874Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 12875the host-defined cache object. This allows the OSL implementation to 12876define 12877and type this object in any manner desired, simplifying the OSL 12878implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 12879Linux, and should be defined in the OS-specific header file for other 12880operating systems as required. 12881 12882Changed the interface to AcpiOsAcquireObject to directly return the 12883requested object as the function return (instead of ACPI_STATUS.) This 12884change was made for performance reasons, since this is the purpose of the 12885interface in the first place. AcpiOsAcquireObject is now similar to the 12886AcpiOsAllocate interface. 12887 12888Implemented a new AML debugger command named Businfo. This command 12889displays 12890information about all devices that have an associate _PRT object. The 12891_ADR, 12892_HID, _UID, and _CID are displayed for these devices. 12893 12894Modified the initialization sequence in AcpiInitializeSubsystem to call 12895the 12896OSL interface AcpiOslInitialize first, before any local initialization. 12897This 12898change was required because the global initialization now calls OSL 12899interfaces. 12900 12901Enhanced the Dump command to display the entire contents of Package 12902objects 12903(including all sub-objects and their values.) 12904 12905Restructured the code base to split some files because of size and/or 12906because the code logically belonged in a separate file. New files are 12907listed 12908below. All makefiles and project files included in the ACPI CA release 12909have 12910been updated. 12911 utilities/utcache.c /* Local cache interfaces */ 12912 utilities/utmutex.c /* Local mutex support */ 12913 utilities/utstate.c /* State object support */ 12914 interpreter/parser/psloop.c /* Main AML parse loop */ 12915 12916Code and Data Size: Current and previous core subsystem library sizes are 12917shown below. These are the code and data sizes for the acpica.lib 12918produced 12919by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12920any ACPI driver or OSPM code. The debug version of the code includes the 12921debug output trace mechanism and has a much larger code and data size. 12922Note 12923that these values will vary depending on the efficiency of the compiler 12924and 12925the compiler options used during generation. 12926 12927 Previous Release: 12928 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12929 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12930 Current Release: 12931 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12932 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12933 12934 129352) iASL Compiler/Disassembler: 12936 12937Fixed a regression introduced in version 20050513 where the use of a 12938Package 12939object within a Case() statement caused a compile time exception. The 12940original behavior has been restored (a Match() operator is emitted.) 12941 12942---------------------------------------- 1294317 June 2005. Summary of changes for version 20050617: 12944 129451) ACPI CA Core Subsystem: 12946 12947Moved the object cache operations into the OS interface layer (OSL) to 12948allow 12949the host OS to handle these operations if desired (for example, the Linux 12950OSL will invoke the slab allocator). This support is optional; the 12951compile 12952time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 12953cache 12954code in the ACPI CA core. The new OSL interfaces are shown below. See 12955utalloc.c for an example implementation, and acpiosxf.h for the exact 12956interface definitions. With assistance from Alexey Starikovskiy. 12957 AcpiOsCreateCache 12958 AcpiOsDeleteCache 12959 AcpiOsPurgeCache 12960 AcpiOsAcquireObject 12961 AcpiOsReleaseObject 12962 12963Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 12964return 12965and restore a flags parameter. This fits better with many OS lock models. 12966Note: the current execution state (interrupt handler or not) is no longer 12967passed to these interfaces. If necessary, the OSL must determine this 12968state 12969by itself, a simple and fast operation. With assistance from Alexey 12970Starikovskiy. 12971 12972Fixed a problem in the ACPI table handling where a valid XSDT was assumed 12973present if the revision of the RSDP was 2 or greater. According to the 12974ACPI 12975specification, the XSDT is optional in all cases, and the table manager 12976therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 12977Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 12978contain 12979only the RSDT. 12980 12981Fixed an interpreter problem with the Mid() operator in the case of an 12982input 12983string where the resulting output string is of zero length. It now 12984correctly 12985returns a valid, null terminated string object instead of a string object 12986with a null pointer. 12987 12988Fixed a problem with the control method argument handling to allow a 12989store 12990to an Arg object that already contains an object of type Device. The 12991Device 12992object is now correctly overwritten. Previously, an error was returned. 12993 12994 12995Enhanced the debugger Find command to emit object values in addition to 12996the 12997found object pathnames. The output format is the same as the dump 12998namespace 12999command. 13000 13001Enhanced the debugger Set command. It now has the ability to set the 13002value 13003of any Named integer object in the namespace (Previously, only method 13004locals 13005and args could be set.) 13006 13007Code and Data Size: Current and previous core subsystem library sizes are 13008shown below. These are the code and data sizes for the acpica.lib 13009produced 13010by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13011any ACPI driver or OSPM code. The debug version of the code includes the 13012debug output trace mechanism and has a much larger code and data size. 13013Note 13014that these values will vary depending on the efficiency of the compiler 13015and 13016the compiler options used during generation. 13017 13018 Previous Release: 13019 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13020 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13021 Current Release: 13022 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13023 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13024 13025 130262) iASL Compiler/Disassembler: 13027 13028Fixed a regression in the disassembler where if/else/while constructs 13029were 13030output incorrectly. This problem was introduced in the previous release 13031(20050526). This problem also affected the single-step disassembly in the 13032debugger. 13033 13034Fixed a problem where compiling the reserved _OSI method would randomly 13035(but 13036rarely) produce compile errors. 13037 13038Enhanced the disassembler to emit compilable code in the face of 13039incorrect 13040AML resource descriptors. If the optional ResourceSourceIndex is present, 13041but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13042disassembly. Otherwise, the resulting code cannot be compiled without 13043errors. 13044 13045---------------------------------------- 1304626 May 2005. Summary of changes for version 20050526: 13047 130481) ACPI CA Core Subsystem: 13049 13050Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13051the module level (not within a control method.) These opcodes are 13052executed 13053exactly once at the time the table is loaded. This type of code was legal 13054up 13055until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13056in 13057order to provide backwards compatibility with earlier BIOS 13058implementations. 13059This eliminates the "Encountered executable code at module level" warning 13060that was previously generated upon detection of such code. 13061 13062Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13063inadvertently be generated during the lookup of namespace objects in the 13064second pass parse of ACPI tables and control methods. It appears that 13065this 13066problem could occur during the resolution of forward references to 13067namespace 13068objects. 13069 13070Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13071corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13072allows the deadlock detection debug code to be compiled out in the normal 13073case, improving mutex performance (and overall subsystem performance) 13074considerably. 13075 13076Implemented a handful of miscellaneous fixes for possible memory leaks on 13077error conditions and error handling control paths. These fixes were 13078suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13079 13080Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13081(tbxfroot.c) 13082to prevent a fault in this error case. 13083 13084Code and Data Size: Current and previous core subsystem library sizes are 13085shown below. These are the code and data sizes for the acpica.lib 13086produced 13087by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13088any ACPI driver or OSPM code. The debug version of the code includes the 13089debug output trace mechanism and has a much larger code and data size. 13090Note 13091that these values will vary depending on the efficiency of the compiler 13092and 13093the compiler options used during generation. 13094 13095 Previous Release: 13096 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13097 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13098 Current Release: 13099 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13100 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13101 13102 131032) iASL Compiler/Disassembler: 13104 13105Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13106the module level (not within a control method.) These operators will be 13107executed once at the time the table is loaded. This type of code was 13108legal 13109up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13110compiler in order to provide backwards compatibility with earlier BIOS 13111ASL 13112code. 13113 13114The ACPI integer width (specified via the table revision ID or the -r 13115override, 32 or 64 bits) is now used internally during compile-time 13116constant 13117folding to ensure that constants are truncated to 32 bits if necessary. 13118Previously, the revision ID value was only emitted in the AML table 13119header. 13120 13121An error message is now generated for the Mutex and Method operators if 13122the 13123SyncLevel parameter is outside the legal range of 0 through 15. 13124 13125Fixed a problem with the Method operator ParameterTypes list handling 13126(ACPI 131273.0). Previously, more than 2 types or 2 arguments generated a syntax 13128error. 13129The actual underlying implementation of method argument typechecking is 13130still under development, however. 13131 13132---------------------------------------- 1313313 May 2005. Summary of changes for version 20050513: 13134 131351) ACPI CA Core Subsystem: 13136 13137Implemented support for PCI Express root bridges -- added support for 13138device 13139PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 13140 13141The interpreter now automatically truncates incoming 64-bit constants to 1314232 13143bits if currently executing out of a 32-bit ACPI table (Revision < 2). 13144This 13145also affects the iASL compiler constant folding. (Note: as per below, the 13146iASL compiler no longer allows 64-bit constants within 32-bit tables.) 13147 13148Fixed a problem where string and buffer objects with "static" pointers 13149(pointers to initialization data within an ACPI table) were not handled 13150consistently. The internal object copy operation now always copies the 13151data 13152to a newly allocated buffer, regardless of whether the source object is 13153static or not. 13154 13155Fixed a problem with the FromBCD operator where an implicit result 13156conversion was improperly performed while storing the result to the 13157target 13158operand. Since this is an "explicit conversion" operator, the implicit 13159conversion should never be performed on the output. 13160 13161Fixed a problem with the CopyObject operator where a copy to an existing 13162named object did not always completely overwrite the existing object 13163stored 13164at name. Specifically, a buffer-to-buffer copy did not delete the 13165existing 13166buffer. 13167 13168Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 13169and 13170structs for consistency. 13171 13172Code and Data Size: Current and previous core subsystem library sizes are 13173shown below. These are the code and data sizes for the acpica.lib 13174produced 13175by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13176any ACPI driver or OSPM code. The debug version of the code includes the 13177debug output trace mechanism and has a much larger code and data size. 13178Note 13179that these values will vary depending on the efficiency of the compiler 13180and 13181the compiler options used during generation. 13182 13183 Previous Release: 13184 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13185 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13186 Current Release: (Same sizes) 13187 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13188 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13189 13190 131912) iASL Compiler/Disassembler: 13192 13193The compiler now emits a warning if an attempt is made to generate a 64- 13194bit 13195integer constant from within a 32-bit ACPI table (Revision < 2). The 13196integer 13197is truncated to 32 bits. 13198 13199Fixed a problem with large package objects: if the static length of the 13200package is greater than 255, the "variable length package" opcode is 13201emitted. Previously, this caused an error. This requires an update to the 13202ACPI spec, since it currently (incorrectly) states that packages larger 13203than 13204255 elements are not allowed. 13205 13206The disassembler now correctly handles variable length packages and 13207packages 13208larger than 255 elements. 13209 13210---------------------------------------- 1321108 April 2005. Summary of changes for version 20050408: 13212 132131) ACPI CA Core Subsystem: 13214 13215Fixed three cases in the interpreter where an "index" argument to an ASL 13216function was still (internally) 32 bits instead of the required 64 bits. 13217This was the Index argument to the Index, Mid, and Match operators. 13218 13219The "strupr" function is now permanently local (AcpiUtStrupr), since this 13220is 13221not a POSIX-defined function and not present in most kernel-level C 13222libraries. All references to the C library strupr function have been 13223removed 13224from the headers. 13225 13226Completed the deployment of static functions/prototypes. All prototypes 13227with 13228the static attribute have been moved from the headers to the owning C 13229file. 13230 13231Implemented an extract option (-e) for the AcpiBin utility (AML binary 13232utility). This option allows the utility to extract individual ACPI 13233tables 13234from the output of AcpiDmp. It provides the same functionality of the 13235acpixtract.pl perl script without the worry of setting the correct perl 13236options. AcpiBin runs on Windows and has not yet been generated/validated 13237in 13238the Linux/Unix environment (but should be soon). 13239 13240Updated and fixed the table dump option for AcpiBin (-d). This option 13241converts a single ACPI table to a hex/ascii file, similar to the output 13242of 13243AcpiDmp. 13244 13245Code and Data Size: Current and previous core subsystem library sizes are 13246shown below. These are the code and data sizes for the acpica.lib 13247produced 13248by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13249any ACPI driver or OSPM code. The debug version of the code includes the 13250debug output trace mechanism and has a much larger code and data size. 13251Note 13252that these values will vary depending on the efficiency of the compiler 13253and 13254the compiler options used during generation. 13255 13256 Previous Release: 13257 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13258 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13259 Current Release: 13260 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13261 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13262 13263 132642) iASL Compiler/Disassembler: 13265 13266Disassembler fix: Added a check to ensure that the table length found in 13267the 13268ACPI table header within the input file is not longer than the actual 13269input 13270file size. This indicates some kind of file or table corruption. 13271 13272---------------------------------------- 1327329 March 2005. Summary of changes for version 20050329: 13274 132751) ACPI CA Core Subsystem: 13276 13277An error is now generated if an attempt is made to create a Buffer Field 13278of 13279length zero (A CreateField with a length operand of zero.) 13280 13281The interpreter now issues a warning whenever executable code at the 13282module 13283level is detected during ACPI table load. This will give some idea of the 13284prevalence of this type of code. 13285 13286Implemented support for references to named objects (other than control 13287methods) within package objects. 13288 13289Enhanced package object output for the debug object. Package objects are 13290now 13291completely dumped, showing all elements. 13292 13293Enhanced miscellaneous object output for the debug object. Any object can 13294now be written to the debug object (for example, a device object can be 13295written, and the type of the object will be displayed.) 13296 13297The "static" qualifier has been added to all local functions across both 13298the 13299core subsystem and the iASL compiler. 13300 13301The number of "long" lines (> 80 chars) within the source has been 13302significantly reduced, by about 1/3. 13303 13304Cleaned up all header files to ensure that all CA/iASL functions are 13305prototyped (even static functions) and the formatting is consistent. 13306 13307Two new header files have been added, acopcode.h and acnames.h. 13308 13309Removed several obsolete functions that were no longer used. 13310 13311Code and Data Size: Current and previous core subsystem library sizes are 13312shown below. These are the code and data sizes for the acpica.lib 13313produced 13314by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13315any ACPI driver or OSPM code. The debug version of the code includes the 13316debug output trace mechanism and has a much larger code and data size. 13317Note 13318that these values will vary depending on the efficiency of the compiler 13319and 13320the compiler options used during generation. 13321 13322 Previous Release: 13323 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13324 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13325 Current Release: 13326 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13327 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13328 13329 13330 133312) iASL Compiler/Disassembler: 13332 13333Fixed a problem with the resource descriptor generation/support. For the 13334ResourceSourceIndex and the ResourceSource fields, both must be present, 13335or 13336both must be not present - can't have one without the other. 13337 13338The compiler now returns non-zero from the main procedure if any errors 13339have 13340occurred during the compilation. 13341 13342 13343---------------------------------------- 1334409 March 2005. Summary of changes for version 20050309: 13345 133461) ACPI CA Core Subsystem: 13347 13348The string-to-buffer implicit conversion code has been modified again 13349after 13350a change to the ACPI specification. In order to match the behavior of 13351the 13352other major ACPI implementation, the target buffer is no longer truncated 13353if 13354the source string is smaller than an existing target buffer. This change 13355requires an update to the ACPI spec, and should eliminate the recent 13356AE_AML_BUFFER_LIMIT issues. 13357 13358The "implicit return" support was rewritten to a new algorithm that 13359solves 13360the general case. Rather than attempt to determine when a method is about 13361to 13362exit, the result of every ASL operator is saved momentarily until the 13363very 13364next ASL operator is executed. Therefore, no matter how the method exits, 13365there will always be a saved implicit return value. This feature is only 13366enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 13367eliminate 13368AE_AML_NO_RETURN_VALUE errors when enabled. 13369 13370Implemented implicit conversion support for the predicate (operand) of 13371the 13372If, Else, and While operators. String and Buffer arguments are 13373automatically 13374converted to Integers. 13375 13376Changed the string-to-integer conversion behavior to match the new ACPI 13377errata: "If no integer object exists, a new integer is created. The ASCII 13378string is interpreted as a hexadecimal constant. Each string character is 13379interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 13380with the first character as the most significant digit, and ending with 13381the 13382first non-hexadecimal character or end-of-string." This means that the 13383first 13384non-hex character terminates the conversion and this is the code that was 13385changed. 13386 13387Fixed a problem where the ObjectType operator would fail (fault) when 13388used 13389on an Index of a Package which pointed to a null package element. The 13390operator now properly returns zero (Uninitialized) in this case. 13391 13392Fixed a problem where the While operator used excessive memory by not 13393properly popping the result stack during execution. There was no memory 13394leak 13395after execution, however. (Code provided by Valery Podrezov.) 13396 13397Fixed a problem where references to control methods within Package 13398objects 13399caused the method to be invoked, instead of producing a reference object 13400pointing to the method. 13401 13402Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 13403to 13404improve performance and reduce code size. (Code provided by Alexey 13405Starikovskiy.) 13406 13407Code and Data Size: Current and previous core subsystem library sizes are 13408shown below. These are the code and data sizes for the acpica.lib 13409produced 13410by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13411any ACPI driver or OSPM code. The debug version of the code includes the 13412debug output trace mechanism and has a much larger code and data size. 13413Note 13414that these values will vary depending on the efficiency of the compiler 13415and 13416the compiler options used during generation. 13417 13418 Previous Release: 13419 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13420 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13421 Current Release: 13422 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13423 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13424 13425 134262) iASL Compiler/Disassembler: 13427 13428Fixed a problem with the Return operator with no arguments. Since the AML 13429grammar for the byte encoding requires an operand for the Return opcode, 13430the 13431compiler now emits a Return(Zero) for this case. An ACPI specification 13432update has been written for this case. 13433 13434For tables other than the DSDT, namepath optimization is automatically 13435disabled. This is because SSDTs can be loaded anywhere in the namespace, 13436the 13437compiler has no knowledge of where, and thus cannot optimize namepaths. 13438 13439Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 13440inadvertently omitted from the ACPI specification, and will require an 13441update to the spec. 13442 13443The source file scan for ASCII characters is now optional (-a). This 13444change 13445was made because some vendors place non-ascii characters within comments. 13446However, the scan is simply a brute-force byte compare to ensure all 13447characters in the file are in the range 0x00 to 0x7F. 13448 13449Fixed a problem with the CondRefOf operator where the compiler was 13450inappropriately checking for the existence of the target. Since the point 13451of 13452the operator is to check for the existence of the target at run-time, the 13453compiler no longer checks for the target existence. 13454 13455Fixed a problem where errors generated from the internal AML interpreter 13456during constant folding were not handled properly, causing a fault. 13457 13458Fixed a problem with overly aggressive range checking for the Stall 13459operator. The valid range (max 255) is now only checked if the operand is 13460of 13461type Integer. All other operand types cannot be statically checked. 13462 13463Fixed a problem where control method references within the RefOf, 13464DeRefOf, 13465and ObjectType operators were not treated properly. They are now treated 13466as 13467actual references, not method invocations. 13468 13469Fixed and enhanced the "list namespace" option (-ln). This option was 13470broken 13471a number of releases ago. 13472 13473Improved error handling for the Field, IndexField, and BankField 13474operators. 13475The compiler now cleanly reports and recovers from errors in the field 13476component (FieldUnit) list. 13477 13478Fixed a disassembler problem where the optional ResourceDescriptor fields 13479TRS and TTP were not always handled correctly. 13480 13481Disassembler - Comments in output now use "//" instead of "/*" 13482 13483---------------------------------------- 1348428 February 2005. Summary of changes for version 20050228: 13485 134861) ACPI CA Core Subsystem: 13487 13488Fixed a problem where the result of an Index() operator (an object 13489reference) must increment the reference count on the target object for 13490the 13491life of the object reference. 13492 13493Implemented AML Interpreter and Debugger support for the new ACPI 3.0 13494Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 13495WordSpace 13496resource descriptors. 13497 13498Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 13499Space Descriptor" string, indicating interpreter support for the 13500descriptors 13501above. 13502 13503Implemented header support for the new ACPI 3.0 FADT flag bits. 13504 13505Implemented header support for the new ACPI 3.0 PCI Express bits for the 13506PM1 13507status/enable registers. 13508 13509Updated header support for the MADT processor local Apic struct and MADT 13510platform interrupt source struct for new ACPI 3.0 fields. 13511 13512Implemented header support for the SRAT and SLIT ACPI tables. 13513 13514Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 13515flag 13516at runtime. 13517 13518Code and Data Size: Current and previous core subsystem library sizes are 13519shown below. These are the code and data sizes for the acpica.lib 13520produced 13521by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13522any ACPI driver or OSPM code. The debug version of the code includes the 13523debug output trace mechanism and has a much larger code and data size. 13524Note 13525that these values will vary depending on the efficiency of the compiler 13526and 13527the compiler options used during generation. 13528 13529 Previous Release: 13530 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13531 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13532 Current Release: 13533 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13534 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13535 13536 135372) iASL Compiler/Disassembler: 13538 13539Fixed a problem with the internal 64-bit String-to-integer conversion 13540with 13541strings less than two characters long. 13542 13543Fixed a problem with constant folding where the result of the Index() 13544operator can not be considered a constant. This means that Index() cannot 13545be 13546a type3 opcode and this will require an update to the ACPI specification. 13547 13548Disassembler: Implemented support for the TTP, MTP, and TRS resource 13549descriptor fields. These fields were inadvertently ignored and not output 13550in 13551the disassembly of the resource descriptor. 13552 13553 13554 ---------------------------------------- 1355511 February 2005. Summary of changes for version 20050211: 13556 135571) ACPI CA Core Subsystem: 13558 13559Implemented ACPI 3.0 support for implicit conversion within the Match() 13560operator. MatchObjects can now be of type integer, buffer, or string 13561instead 13562of just type integer. Package elements are implicitly converted to the 13563type 13564of the MatchObject. This change aligns the behavior of Match() with the 13565behavior of the other logical operators (LLess(), etc.) It also requires 13566an 13567errata change to the ACPI specification as this support was intended for 13568ACPI 3.0, but was inadvertently omitted. 13569 13570Fixed a problem with the internal implicit "to buffer" conversion. 13571Strings 13572that are converted to buffers will cause buffer truncation if the string 13573is 13574smaller than the target buffer. Integers that are converted to buffers 13575will 13576not cause buffer truncation, only zero extension (both as per the ACPI 13577spec.) The problem was introduced when code was added to truncate the 13578buffer, but this should not be performed in all cases, only the string 13579case. 13580 13581Fixed a problem with the Buffer and Package operators where the 13582interpreter 13583would get confused if two such operators were used as operands to an ASL 13584operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 13585stack was not being popped after the execution of these operators, 13586resulting 13587in an AE_NO_RETURN_VALUE exception. 13588 13589Fixed a problem with constructs of the form Store(Index(...),...). The 13590reference object returned from Index was inadvertently resolved to an 13591actual 13592value. This problem was introduced in version 20050114 when the behavior 13593of 13594Store() was modified to restrict the object types that can be used as the 13595source operand (to match the ACPI specification.) 13596 13597Reduced excessive stack use within the AcpiGetObjectInfo procedure. 13598 13599Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 13600 13601Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 13602 13603Code and Data Size: Current and previous core subsystem library sizes are 13604shown below. These are the code and data sizes for the acpica.lib 13605produced 13606by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13607any ACPI driver or OSPM code. The debug version of the code includes the 13608debug output trace mechanism and has a much larger code and data size. 13609Note 13610that these values will vary depending on the efficiency of the compiler 13611and 13612the compiler options used during generation. 13613 13614 Previous Release: 13615 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13616 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13617 Current Release: 13618 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13619 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13620 13621 136222) iASL Compiler/Disassembler: 13623 13624Fixed a code generation problem in the constant folding optimization code 13625where incorrect code was generated if a constant was reduced to a buffer 13626object (i.e., a reduced type 5 opcode.) 13627 13628Fixed a typechecking problem for the ToBuffer operator. Caused by an 13629incorrect return type in the internal opcode information table. 13630 13631---------------------------------------- 1363225 January 2005. Summary of changes for version 20050125: 13633 136341) ACPI CA Core Subsystem: 13635 13636Fixed a recently introduced problem with the Global Lock where the 13637underlying semaphore was not created. This problem was introduced in 13638version 20050114, and caused an AE_AML_NO_OPERAND exception during an 13639Acquire() operation on _GL. 13640 13641The local object cache is now optional, and is disabled by default. Both 13642AcpiExec and the iASL compiler enable the cache because they run in user 13643mode and this enhances their performance. #define 13644ACPI_ENABLE_OBJECT_CACHE 13645to enable the local cache. 13646 13647Fixed an issue in the internal function AcpiUtEvaluateObject concerning 13648the 13649optional "implicit return" support where an error was returned if no 13650return 13651object was expected, but one was implicitly returned. AE_OK is now 13652returned 13653in this case and the implicitly returned object is deleted. 13654AcpiUtEvaluateObject is only occasionally used, and only to execute 13655reserved 13656methods such as _STA and _INI where the return type is known up front. 13657 13658Fixed a few issues with the internal convert-to-integer code. It now 13659returns 13660an error if an attempt is made to convert a null string, a string of only 13661blanks/tabs, or a zero-length buffer. This affects both implicit 13662conversion 13663and explicit conversion via the ToInteger() operator. 13664 13665The internal debug code in AcpiUtAcquireMutex has been commented out. It 13666is 13667not needed for normal operation and should increase the performance of 13668the 13669entire subsystem. The code remains in case it is needed for debug 13670purposes 13671again. 13672 13673The AcpiExec source and makefile are included in the Unix/Linux package 13674for 13675the first time. 13676 13677Code and Data Size: Current and previous core subsystem library sizes are 13678shown below. These are the code and data sizes for the acpica.lib 13679produced 13680by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13681any ACPI driver or OSPM code. The debug version of the code includes the 13682debug output trace mechanism and has a much larger code and data size. 13683Note 13684that these values will vary depending on the efficiency of the compiler 13685and 13686the compiler options used during generation. 13687 13688 Previous Release: 13689 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13690 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13691 Current Release: 13692 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13693 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13694 136952) iASL Compiler/Disassembler: 13696 13697Switch/Case support: A warning is now issued if the type of the Switch 13698value 13699cannot be determined at compile time. For example, Switch(Arg0) will 13700generate the warning, and the type is assumed to be an integer. As per 13701the 13702ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 13703the 13704warning. 13705 13706Switch/Case support: Implemented support for buffer and string objects as 13707the switch value. This is an ACPI 3.0 feature, now that LEqual supports 13708buffers and strings. 13709 13710Switch/Case support: The emitted code for the LEqual() comparisons now 13711uses 13712the switch value as the first operand, not the second. The case value is 13713now 13714the second operand, and this allows the case value to be implicitly 13715converted to the type of the switch value, not the other way around. 13716 13717Switch/Case support: Temporary variables are now emitted immediately 13718within 13719the control method, not at the global level. This means that there are 13720now 1372136 temps available per-method, not 36 temps per-module as was the case 13722with 13723the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 13724 13725---------------------------------------- 1372614 January 2005. Summary of changes for version 20050114: 13727 13728Added 2005 copyright to all module headers. This affects every module in 13729the core subsystem, iASL compiler, and the utilities. 13730 137311) ACPI CA Core Subsystem: 13732 13733Fixed an issue with the String-to-Buffer conversion code where the string 13734null terminator was not included in the buffer after conversion, but 13735there 13736is existing ASL that assumes the string null terminator is included. This 13737is 13738the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 13739introduced in the previous version when the code was updated to correctly 13740set the converted buffer size as per the ACPI specification. The ACPI 13741spec 13742is ambiguous and will be updated to specify that the null terminator must 13743be 13744included in the converted buffer. This also affects the ToBuffer() ASL 13745operator. 13746 13747Fixed a problem with the Mid() ASL/AML operator where it did not work 13748correctly on Buffer objects. Newly created sub-buffers were not being 13749marked 13750as initialized. 13751 13752 13753Fixed a problem in AcpiTbFindTable where incorrect string compares were 13754performed on the OemId and OemTableId table header fields. These fields 13755are 13756not null terminated, so strncmp is now used instead of strcmp. 13757 13758Implemented a restriction on the Store() ASL/AML operator to align the 13759behavior with the ACPI specification. Previously, any object could be 13760used 13761as the source operand. Now, the only objects that may be used are 13762Integers, 13763Buffers, Strings, Packages, Object References, and DDB Handles. If 13764necessary, the original behavior can be restored by enabling the 13765EnableInterpreterSlack flag. 13766 13767Enhanced the optional "implicit return" support to allow an implicit 13768return 13769value from methods that are invoked externally via the AcpiEvaluateObject 13770interface. This enables implicit returns from the _STA and _INI methods, 13771for example. 13772 13773Changed the Revision() ASL/AML operator to return the current version of 13774the 13775AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 13776returned 13777the supported ACPI version (This is the function of the _REV method). 13778 13779Updated the _REV predefined method to return the currently supported 13780version 13781of ACPI, now 3. 13782 13783Implemented batch mode option for the AcpiExec utility (-b). 13784 13785Code and Data Size: Current and previous core subsystem library sizes are 13786shown below. These are the code and data sizes for the acpica.lib 13787produced 13788by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13789any ACPI driver or OSPM code. The debug version of the code includes the 13790debug output trace mechanism and has a much larger code and data size. 13791Note 13792that these values will vary depending on the efficiency of the compiler 13793and 13794the compiler options used during generation. 13795 13796 Previous Release: 13797 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13798 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13799 Current Release: 13800 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13801 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13802 13803---------------------------------------- 1380410 December 2004. Summary of changes for version 20041210: 13805 13806ACPI 3.0 support is nearing completion in both the iASL compiler and the 13807ACPI CA core subsystem. 13808 138091) ACPI CA Core Subsystem: 13810 13811Fixed a problem in the ToDecimalString operator where the resulting 13812string 13813length was incorrectly calculated. The length is now calculated exactly, 13814eliminating incorrect AE_STRING_LIMIT exceptions. 13815 13816Fixed a problem in the ToHexString operator to allow a maximum 200 13817character 13818string to be produced. 13819 13820Fixed a problem in the internal string-to-buffer and buffer-to-buffer 13821copy 13822routine where the length of the resulting buffer was not truncated to the 13823new size (if the target buffer already existed). 13824 13825Code and Data Size: Current and previous core subsystem library sizes are 13826shown below. These are the code and data sizes for the acpica.lib 13827produced 13828by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13829any ACPI driver or OSPM code. The debug version of the code includes the 13830debug output trace mechanism and has a much larger code and data size. 13831Note 13832that these values will vary depending on the efficiency of the compiler 13833and 13834the compiler options used during generation. 13835 13836 Previous Release: 13837 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13838 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13839 Current Release: 13840 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13841 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13842 13843 138442) iASL Compiler/Disassembler: 13845 13846Implemented the new ACPI 3.0 resource template macros - DWordSpace, 13847ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 13848Includes support in the disassembler. 13849 13850Implemented support for the new (ACPI 3.0) parameter to the Register 13851macro, 13852AccessSize. 13853 13854Fixed a problem where the _HE resource name for the Interrupt macro was 13855referencing bit 0 instead of bit 1. 13856 13857Implemented check for maximum 255 interrupts in the Interrupt macro. 13858 13859Fixed a problem with the predefined resource descriptor names where 13860incorrect AML code was generated if the offset within the resource buffer 13861was 0 or 1. The optimizer shortened the AML code to a single byte opcode 13862but did not update the surrounding package lengths. 13863 13864Changes to the Dma macro: All channels within the channel list must be 13865in 13866the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 13867optional (default is BusMaster). 13868 13869Implemented check for maximum 7 data bytes for the VendorShort macro. 13870 13871The ReadWrite parameter is now optional for the Memory32 and similar 13872macros. 13873 13874---------------------------------------- 1387503 December 2004. Summary of changes for version 20041203: 13876 138771) ACPI CA Core Subsystem: 13878 13879The low-level field insertion/extraction code (exfldio) has been 13880completely 13881rewritten to eliminate unnecessary complexity, bugs, and boundary 13882conditions. 13883 13884Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 13885ToDecimalString 13886operators where the input operand could be inadvertently deleted if no 13887conversion was necessary (e.g., if the input to ToInteger was an Integer 13888object.) 13889 13890Fixed a problem with the ToDecimalString and ToHexString where an 13891incorrect 13892exception code was returned if the resulting string would be > 200 chars. 13893AE_STRING_LIMIT is now returned. 13894 13895Fixed a problem with the Concatenate operator where AE_OK was always 13896returned, even if the operation failed. 13897 13898Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 13899semaphores to be allocated. 13900 13901Code and Data Size: Current and previous core subsystem library sizes are 13902shown below. These are the code and data sizes for the acpica.lib 13903produced 13904by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13905any ACPI driver or OSPM code. The debug version of the code includes the 13906debug output trace mechanism and has a much larger code and data size. 13907Note 13908that these values will vary depending on the efficiency of the compiler 13909and 13910the compiler options used during generation. 13911 13912 Previous Release: 13913 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13914 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13915 Current Release: 13916 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13917 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13918 13919 139202) iASL Compiler/Disassembler: 13921 13922Fixed typechecking for the ObjectType and SizeOf operators. Problem was 13923recently introduced in 20041119. 13924 13925Fixed a problem with the ToUUID macro where the upper nybble of each 13926buffer 13927byte was inadvertently set to zero. 13928 13929---------------------------------------- 1393019 November 2004. Summary of changes for version 20041119: 13931 139321) ACPI CA Core Subsystem: 13933 13934Fixed a problem in the internal ConvertToInteger routine where new 13935integers 13936were not truncated to 32 bits for 32-bit ACPI tables. This routine 13937converts 13938buffers and strings to integers. 13939 13940Implemented support to store a value to an Index() on a String object. 13941This 13942is an ACPI 2.0 feature that had not yet been implemented. 13943 13944Implemented new behavior for storing objects to individual package 13945elements 13946(via the Index() operator). The previous behavior was to invoke the 13947implicit 13948conversion rules if an object was already present at the index. The new 13949behavior is to simply delete any existing object and directly store the 13950new 13951object. Although the ACPI specification seems unclear on this subject, 13952other 13953ACPI implementations behave in this manner. (This is the root of the 13954AE_BAD_HEX_CONSTANT issue.) 13955 13956Modified the RSDP memory scan mechanism to support the extended checksum 13957for 13958ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 13959RSDP signature is found with a valid checksum. 13960 13961Code and Data Size: Current and previous core subsystem library sizes are 13962shown below. These are the code and data sizes for the acpica.lib 13963produced 13964by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13965any ACPI driver or OSPM code. The debug version of the code includes the 13966debug output trace mechanism and has a much larger code and data size. 13967Note 13968that these values will vary depending on the efficiency of the compiler 13969and 13970the compiler options used during generation. 13971 13972 Previous Release: 13973 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13974 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13975 Current Release: 13976 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13977 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13978 13979 139802) iASL Compiler/Disassembler: 13981 13982Fixed a missing semicolon in the aslcompiler.y file. 13983 13984---------------------------------------- 1398505 November 2004. Summary of changes for version 20041105: 13986 139871) ACPI CA Core Subsystem: 13988 13989Implemented support for FADT revision 2. This was an interim table 13990(between 13991ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 13992 13993Implemented optional support to allow uninitialized LocalX and ArgX 13994variables in a control method. The variables are initialized to an 13995Integer 13996object with a value of zero. This support is enabled by setting the 13997AcpiGbl_EnableInterpreterSlack flag to TRUE. 13998 13999Implemented support for Integer objects for the SizeOf operator. Either 140004 14001or 8 is returned, depending on the current integer size (32-bit or 64- 14002bit, 14003depending on the parent table revision). 14004 14005Fixed a problem in the implementation of the SizeOf and ObjectType 14006operators 14007where the operand was resolved to a value too early, causing incorrect 14008return values for some objects. 14009 14010Fixed some possible memory leaks during exceptional conditions. 14011 14012Code and Data Size: Current and previous core subsystem library sizes are 14013shown below. These are the code and data sizes for the acpica.lib 14014produced 14015by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14016any ACPI driver or OSPM code. The debug version of the code includes the 14017debug output trace mechanism and has a much larger code and data size. 14018Note 14019that these values will vary depending on the efficiency of the compiler 14020and 14021the compiler options used during generation. 14022 14023 Previous Release: 14024 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14025 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14026 Current Release: 14027 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14028 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14029 14030 140312) iASL Compiler/Disassembler: 14032 14033Implemented support for all ACPI 3.0 reserved names and methods. 14034 14035Implemented all ACPI 3.0 grammar elements in the front-end, including 14036support for semicolons. 14037 14038Implemented the ACPI 3.0 Function() and ToUUID() macros 14039 14040Fixed a problem in the disassembler where a Scope() operator would not be 14041emitted properly if the target of the scope was in another table. 14042 14043---------------------------------------- 1404415 October 2004. Summary of changes for version 20041015: 14045 14046Note: ACPI CA is currently undergoing an in-depth and complete formal 14047evaluation to test/verify the following areas. Other suggestions are 14048welcome. This will result in an increase in the frequency of releases and 14049the number of bug fixes in the next few months. 14050 - Functional tests for all ASL/AML operators 14051 - All implicit/explicit type conversions 14052 - Bit fields and operation regions 14053 - 64-bit math support and 32-bit-only "truncated" math support 14054 - Exceptional conditions, both compiler and interpreter 14055 - Dynamic object deletion and memory leaks 14056 - ACPI 3.0 support when implemented 14057 - External interfaces to the ACPI subsystem 14058 14059 140601) ACPI CA Core Subsystem: 14061 14062Fixed two alignment issues on 64-bit platforms - within debug statements 14063in 14064AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14065Address 14066field within the non-aligned ACPI generic address structure. 14067 14068Fixed a problem in the Increment and Decrement operators where incorrect 14069operand resolution could result in the inadvertent modification of the 14070original integer when the integer is passed into another method as an 14071argument and the arg is then incremented/decremented. 14072 14073Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14074bit 14075BCD number were truncated during conversion. 14076 14077Fixed a problem in the ToDecimal operator where the length of the 14078resulting 14079string could be set incorrectly too long if the input operand was a 14080Buffer 14081object. 14082 14083Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14084(0) 14085within a buffer would prematurely terminate a compare between buffer 14086objects. 14087 14088Added a check for string overflow (>200 characters as per the ACPI 14089specification) during the Concatenate operator with two string operands. 14090 14091Code and Data Size: Current and previous core subsystem library sizes are 14092shown below. These are the code and data sizes for the acpica.lib 14093produced 14094by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14095any ACPI driver or OSPM code. The debug version of the code includes the 14096debug output trace mechanism and has a much larger code and data size. 14097Note 14098that these values will vary depending on the efficiency of the compiler 14099and 14100the compiler options used during generation. 14101 14102 Previous Release: 14103 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14104 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14105 Current Release: 14106 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14107 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14108 14109 14110 141112) iASL Compiler/Disassembler: 14112 14113Allow the use of the ObjectType operator on uninitialized Locals and Args 14114(returns 0 as per the ACPI specification). 14115 14116Fixed a problem where the compiler would fault if there was a syntax 14117error 14118in the FieldName of all of the various CreateXXXField operators. 14119 14120Disallow the use of lower case letters within the EISAID macro, as per 14121the 14122ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14123Where 14124U is an uppercase letter and N is a hex digit. 14125 14126 14127---------------------------------------- 1412806 October 2004. Summary of changes for version 20041006: 14129 141301) ACPI CA Core Subsystem: 14131 14132Implemented support for the ACPI 3.0 Timer operator. This ASL function 14133implements a 64-bit timer with 100 nanosecond granularity. 14134 14135Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 14136implement the ACPI 3.0 Timer operator. This allows the host OS to 14137implement 14138the timer with the best clock available. Also, it keeps the core 14139subsystem 14140out of the clock handling business, since the host OS (usually) performs 14141this function. 14142 14143Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 14144functions use a 64-bit address which is part of the packed ACPI Generic 14145Address Structure. Since the structure is non-aligned, the alignment 14146macros 14147are now used to extract the address to a local variable before use. 14148 14149Fixed a problem where the ToInteger operator assumed all input strings 14150were 14151hexadecimal. The operator now handles both decimal strings and hex 14152strings 14153(prefixed with "0x"). 14154 14155Fixed a problem where the string length in the string object created as a 14156result of the internal ConvertToString procedure could be incorrect. This 14157potentially affected all implicit conversions and also the 14158ToDecimalString 14159and ToHexString operators. 14160 14161Fixed two problems in the ToString operator. If the length parameter was 14162zero, an incorrect string object was created and the value of the input 14163length parameter was inadvertently changed from zero to Ones. 14164 14165Fixed a problem where the optional ResourceSource string in the 14166ExtendedIRQ 14167resource macro was ignored. 14168 14169Simplified the interfaces to the internal division functions, reducing 14170code 14171size and complexity. 14172 14173Code and Data Size: Current and previous core subsystem library sizes are 14174shown below. These are the code and data sizes for the acpica.lib 14175produced 14176by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14177any ACPI driver or OSPM code. The debug version of the code includes the 14178debug output trace mechanism and has a much larger code and data size. 14179Note 14180that these values will vary depending on the efficiency of the compiler 14181and 14182the compiler options used during generation. 14183 14184 Previous Release: 14185 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14186 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14187 Current Release: 14188 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14189 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14190 14191 141922) iASL Compiler/Disassembler: 14193 14194Implemented support for the ACPI 3.0 Timer operator. 14195 14196Fixed a problem where the Default() operator was inadvertently ignored in 14197a 14198Switch/Case block. This was a problem in the translation of the Switch 14199statement to If...Else pairs. 14200 14201Added support to allow a standalone Return operator, with no parentheses 14202(or 14203operands). 14204 14205Fixed a problem with code generation for the ElseIf operator where the 14206translated Else...If parse tree was improperly constructed leading to the 14207loss of some code. 14208 14209---------------------------------------- 1421022 September 2004. Summary of changes for version 20040922: 14211 142121) ACPI CA Core Subsystem: 14213 14214Fixed a problem with the implementation of the LNot() operator where 14215"Ones" 14216was not returned for the TRUE case. Changed the code to return Ones 14217instead 14218of (!Arg) which was usually 1. This change affects iASL constant folding 14219for 14220this operator also. 14221 14222Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 14223not 14224initialized properly -- Now zero the entire buffer in this case where the 14225buffer already exists. 14226 14227Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 14228Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 14229related code considerably. This will require changes/updates to all OS 14230interface layers (OSLs.) 14231 14232Implemented a new external interface, AcpiInstallExceptionHandler, to 14233allow 14234a system exception handler to be installed. This handler is invoked upon 14235any 14236run-time exception that occurs during control method execution. 14237 14238Added support for the DSDT in AcpiTbFindTable. This allows the 14239DataTableRegion() operator to access the local copy of the DSDT. 14240 14241Code and Data Size: Current and previous core subsystem library sizes are 14242shown below. These are the code and data sizes for the acpica.lib 14243produced 14244by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14245any ACPI driver or OSPM code. The debug version of the code includes the 14246debug output trace mechanism and has a much larger code and data size. 14247Note 14248that these values will vary depending on the efficiency of the compiler 14249and 14250the compiler options used during generation. 14251 14252 Previous Release: 14253 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14254 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14255 Current Release: 14256 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14257 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14258 14259 142602) iASL Compiler/Disassembler: 14261 14262Fixed a problem with constant folding and the LNot operator. LNot was 14263returning 1 in the TRUE case, not Ones as per the ACPI specification. 14264This 14265could result in the generation of an incorrect folded/reduced constant. 14266 14267End-Of-File is now allowed within a "//"-style comment. A parse error no 14268longer occurs if such a comment is at the very end of the input ASL 14269source 14270file. 14271 14272Implemented the "-r" option to override the Revision in the table header. 14273The initial use of this option will be to simplify the evaluation of the 14274AML 14275interpreter by allowing a single ASL source module to be compiled for 14276either 1427732-bit or 64-bit integers. 14278 14279 14280---------------------------------------- 1428127 August 2004. Summary of changes for version 20040827: 14282 142831) ACPI CA Core Subsystem: 14284 14285- Implemented support for implicit object conversion in the non-numeric 14286logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 14287and 14288LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 14289the second operand is implicitly converted on the fly to match the type 14290of 14291the first operand. For example: 14292 14293 LEqual (Source1, Source2) 14294 14295Source1 and Source2 must each evaluate to an integer, a string, or a 14296buffer. 14297The data type of Source1 dictates the required type of Source2. Source2 14298is 14299implicitly converted if necessary to match the type of Source1. 14300 14301- Updated and corrected the behavior of the string conversion support. 14302The 14303rules concerning conversion of buffers to strings (according to the ACPI 14304specification) are as follows: 14305 14306ToDecimalString - explicit byte-wise conversion of buffer to string of 14307decimal values (0-255) separated by commas. ToHexString - explicit byte- 14308wise 14309conversion of buffer to string of hex values (0-FF) separated by commas. 14310ToString - explicit byte-wise conversion of buffer to string. Byte-by- 14311byte 14312copy with no transform except NULL terminated. Any other implicit buffer- 14313to- 14314string conversion - byte-wise conversion of buffer to string of hex 14315values 14316(0-FF) separated by spaces. 14317 14318- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 14319 14320- Fixed a problem in AcpiNsGetPathnameLength where the returned length 14321was 14322one byte too short in the case of a node in the root scope. This could 14323cause a fault during debug output. 14324 14325- Code and Data Size: Current and previous core subsystem library sizes 14326are 14327shown below. These are the code and data sizes for the acpica.lib 14328produced 14329by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14330any ACPI driver or OSPM code. The debug version of the code includes the 14331debug output trace mechanism and has a much larger code and data size. 14332Note 14333that these values will vary depending on the efficiency of the compiler 14334and 14335the compiler options used during generation. 14336 14337 Previous Release: 14338 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14339 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14340 Current Release: 14341 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14342 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14343 14344 143452) iASL Compiler/Disassembler: 14346 14347- Fixed a Linux generation error. 14348 14349 14350---------------------------------------- 1435116 August 2004. Summary of changes for version 20040816: 14352 143531) ACPI CA Core Subsystem: 14354 14355Designed and implemented support within the AML interpreter for the so- 14356called "implicit return". This support returns the result of the last 14357ASL 14358operation within a control method, in the absence of an explicit Return() 14359operator. A few machines depend on this behavior, even though it is not 14360explicitly supported by the ASL language. It is optional support that 14361can 14362be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 14363 14364Removed support for the PCI_Config address space from the internal low 14365level 14366hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 14367support was not used internally, and would not work correctly anyway 14368because 14369the PCI bus number and segment number were not supported. There are 14370separate interfaces for PCI configuration space access because of the 14371unique 14372interface. 14373 14374Code and Data Size: Current and previous core subsystem library sizes are 14375shown below. These are the code and data sizes for the acpica.lib 14376produced 14377by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14378any ACPI driver or OSPM code. The debug version of the code includes the 14379debug output trace mechanism and has a much larger code and data size. 14380Note 14381that these values will vary depending on the efficiency of the compiler 14382and 14383the compiler options used during generation. 14384 14385 Previous Release: 14386 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14387 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14388 Current Release: 14389 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14390 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14391 14392 143932) iASL Compiler/Disassembler: 14394 14395Fixed a problem where constants in ASL expressions at the root level (not 14396within a control method) could be inadvertently truncated during code 14397generation. This problem was introduced in the 20040715 release. 14398 14399 14400---------------------------------------- 1440115 July 2004. Summary of changes for version 20040715: 14402 144031) ACPI CA Core Subsystem: 14404 14405Restructured the internal HW GPE interfaces to pass/track the current 14406state 14407of interrupts (enabled/disabled) in order to avoid possible deadlock and 14408increase flexibility of the interfaces. 14409 14410Implemented a "lexicographical compare" for String and Buffer objects 14411within 14412the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 14413- 14414as per further clarification to the ACPI specification. Behavior is 14415similar 14416to C library "strcmp". 14417 14418Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 14419external function. In the 32-bit non-debug case, the stack use has been 14420reduced from 168 bytes to 32 bytes. 14421 14422Deployed a new run-time configuration flag, 14423AcpiGbl_EnableInterpreterSlack, 14424whose purpose is to allow the AML interpreter to forgive certain bad AML 14425constructs. Default setting is FALSE. 14426 14427Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 14428IO 14429support code. If enabled, it allows field access to go beyond the end of 14430a 14431region definition if the field is within the region length rounded up to 14432the 14433next access width boundary (a common coding error.) 14434 14435Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 14436ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 14437these 14438symbols are lowercase by the latest version of the AcpiSrc tool. 14439 14440The prototypes for the PCI interfaces in acpiosxf.h have been updated to 14441rename "Register" to simply "Reg" to prevent certain compilers from 14442complaining. 14443 14444Code and Data Size: Current and previous core subsystem library sizes are 14445shown below. These are the code and data sizes for the acpica.lib 14446produced 14447by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14448any ACPI driver or OSPM code. The debug version of the code includes the 14449debug output trace mechanism and has a much larger code and data size. 14450Note 14451that these values will vary depending on the efficiency of the compiler 14452and 14453the compiler options used during generation. 14454 14455 Previous Release: 14456 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14457 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14458 Current Release: 14459 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14460 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14461 14462 144632) iASL Compiler/Disassembler: 14464 14465Implemented full support for Package objects within the Case() operator. 14466Note: The Break() operator is currently not supported within Case blocks 14467(TermLists) as there is some question about backward compatibility with 14468ACPI 144691.0 interpreters. 14470 14471 14472Fixed a problem where complex terms were not supported properly within 14473the 14474Switch() operator. 14475 14476Eliminated extraneous warning for compiler-emitted reserved names of the 14477form "_T_x". (Used in Switch/Case operators.) 14478 14479Eliminated optimization messages for "_T_x" objects and small constants 14480within the DefinitionBlock operator. 14481 14482 14483---------------------------------------- 1448415 June 2004. Summary of changes for version 20040615: 14485 144861) ACPI CA Core Subsystem: 14487 14488Implemented support for Buffer and String objects (as per ACPI 2.0) for 14489the 14490following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14491LLessEqual. 14492 14493All directory names in the entire source package are lower case, as they 14494were in earlier releases. 14495 14496Implemented "Disassemble" command in the AML debugger that will 14497disassemble 14498a single control method. 14499 14500Code and Data Size: Current and previous core subsystem library sizes are 14501shown below. These are the code and data sizes for the acpica.lib 14502produced 14503by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14504any ACPI driver or OSPM code. The debug version of the code includes the 14505debug output trace mechanism and has a much larger code and data size. 14506Note 14507that these values will vary depending on the efficiency of the compiler 14508and 14509the compiler options used during generation. 14510 14511 Previous Release: 14512 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14513 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14514 14515 Current Release: 14516 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14517 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14518 14519 145202) iASL Compiler/Disassembler: 14521 14522Implemented support for Buffer and String objects (as per ACPI 2.0) for 14523the 14524following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14525LLessEqual. 14526 14527All directory names in the entire source package are lower case, as they 14528were in earlier releases. 14529 14530Fixed a fault when using the -g or -d<nofilename> options if the FADT was 14531not found. 14532 14533Fixed an issue with the Windows version of the compiler where later 14534versions 14535of Windows place the FADT in the registry under the name "FADT" and not 14536"FACP" as earlier versions did. This applies when using the -g or - 14537d<nofilename> options. The compiler now looks for both strings as 14538necessary. 14539 14540Fixed a problem with compiler namepath optimization where a namepath 14541within 14542the Scope() operator could not be optimized if the namepath was a subpath 14543of 14544the current scope path. 14545 14546---------------------------------------- 1454727 May 2004. Summary of changes for version 20040527: 14548 145491) ACPI CA Core Subsystem: 14550 14551Completed a new design and implementation for EBDA (Extended BIOS Data 14552Area) 14553support in the RSDP scan code. The original code improperly scanned for 14554the 14555EBDA by simply scanning from memory location 0 to 0x400. The correct 14556method 14557is to first obtain the EBDA pointer from within the BIOS data area, then 14558scan 1K of memory starting at the EBDA pointer. There appear to be few 14559if 14560any machines that place the RSDP in the EBDA, however. 14561 14562Integrated a fix for a possible fault during evaluation of BufferField 14563arguments. Obsolete code that was causing the problem was removed. 14564 14565Found and fixed a problem in the Field Support Code where data could be 14566corrupted on a bit field read that starts on an aligned boundary but does 14567not end on an aligned boundary. Merged the read/write "datum length" 14568calculation code into a common procedure. 14569 14570Rolled in a couple of changes to the FreeBSD-specific header. 14571 14572 14573Code and Data Size: Current and previous core subsystem library sizes are 14574shown below. These are the code and data sizes for the acpica.lib 14575produced 14576by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14577any ACPI driver or OSPM code. The debug version of the code includes the 14578debug output trace mechanism and has a much larger code and data size. 14579Note 14580that these values will vary depending on the efficiency of the compiler 14581and 14582the compiler options used during generation. 14583 14584 Previous Release: 14585 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14586 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14587 Current Release: 14588 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14589 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14590 14591 145922) iASL Compiler/Disassembler: 14593 14594Fixed a generation warning produced by some overly-verbose compilers for 14595a 1459664-bit constant. 14597 14598---------------------------------------- 1459914 May 2004. Summary of changes for version 20040514: 14600 146011) ACPI CA Core Subsystem: 14602 14603Fixed a problem where hardware GPE enable bits sometimes not set properly 14604during and after GPE method execution. Result of 04/27 changes. 14605 14606Removed extra "clear all GPEs" when sleeping/waking. 14607 14608Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 14609AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 14610to 14611the new AcpiEv* calls as appropriate. 14612 14613ACPI_OS_NAME was removed from the OS-specific headers. The default name 14614is 14615now "Microsoft Windows NT" for maximum compatibility. However this can 14616be 14617changed by modifying the acconfig.h file. 14618 14619Allow a single invocation of AcpiInstallNotifyHandler for a handler that 14620traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 14621 14622Run _INI methods on ThermalZone objects. This is against the ACPI 14623specification, but there is apparently ASL code in the field that has 14624these 14625_INI methods, and apparently "other" AML interpreters execute them. 14626 14627Performed a full 16/32/64 bit lint that resulted in some small changes. 14628 14629Added a sleep simulation command to the AML debugger to test sleep code. 14630 14631Code and Data Size: Current and previous core subsystem library sizes are 14632shown below. These are the code and data sizes for the acpica.lib 14633produced 14634by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14635any ACPI driver or OSPM code. The debug version of the code includes the 14636debug output trace mechanism and has a much larger code and data size. 14637Note 14638that these values will vary depending on the efficiency of the compiler 14639and 14640the compiler options used during generation. 14641 14642 Previous Release: 14643 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14644 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14645 Current Release: 14646 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14647 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14648 14649---------------------------------------- 1465027 April 2004. Summary of changes for version 20040427: 14651 146521) ACPI CA Core Subsystem: 14653 14654Completed a major overhaul of the GPE handling within ACPI CA. There are 14655now three types of GPEs: wake-only, runtime-only, and combination 14656wake/run. 14657The only GPEs allowed to be combination wake/run are for button-style 14658devices such as a control-method power button, control-method sleep 14659button, 14660or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 14661not 14662referenced by any _PRW methods are marked for "runtime" and hardware 14663enabled. Any GPE that is referenced by a _PRW method is marked for 14664"wake" 14665(and disabled at runtime). However, at sleep time, only those GPEs that 14666have been specifically enabled for wake via the AcpiEnableGpe interface 14667will 14668actually be hardware enabled. 14669 14670A new external interface has been added, AcpiSetGpeType(), that is meant 14671to 14672be used by device drivers to force a GPE to a particular type. It will 14673be 14674especially useful for the drivers for the button devices mentioned above. 14675 14676Completed restructuring of the ACPI CA initialization sequence so that 14677default operation region handlers are installed before GPEs are 14678initialized 14679and the _PRW methods are executed. This will prevent errors when the 14680_PRW 14681methods attempt to access system memory or I/O space. 14682 14683GPE enable/disable no longer reads the GPE enable register. We now keep 14684the 14685enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 14686thus no longer depend on the hardware to maintain these bits. 14687 14688Always clear the wake status and fixed/GPE status bits before sleep, even 14689for state S5. 14690 14691Improved the AML debugger output for displaying the GPE blocks and their 14692current status. 14693 14694Added new strings for the _OSI method, of the form "Windows 2001 SPx" 14695where 14696x = 0,1,2,3,4. 14697 14698Fixed a problem where the physical address was incorrectly calculated 14699when 14700the Load() operator was used to directly load from an Operation Region 14701(vs. 14702loading from a Field object.) Also added check for minimum table length 14703for 14704this case. 14705 14706Fix for multiple mutex acquisition. Restore original thread SyncLevel on 14707mutex release. 14708 14709Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 14710consistency with the other fields returned. 14711 14712Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 14713structure for each GPE in the system, so the size of this structure is 14714important. 14715 14716CPU stack requirement reduction: Cleaned up the method execution and 14717object 14718evaluation paths so that now a parameter structure is passed, instead of 14719copying the various method parameters over and over again. 14720 14721In evregion.c: Correctly exit and reenter the interpreter region if and 14722only if dispatching an operation region request to a user-installed 14723handler. 14724Do not exit/reenter when dispatching to a default handler (e.g., default 14725system memory or I/O handlers) 14726 14727 14728Notes for updating drivers for the new GPE support. The following 14729changes 14730must be made to ACPI-related device drivers that are attached to one or 14731more 14732GPEs: (This information will be added to the ACPI CA Programmer 14733Reference.) 14734 147351) AcpiInstallGpeHandler no longer automatically enables the GPE, you 14736must 14737explicitly call AcpiEnableGpe. 147382) There is a new interface called AcpiSetGpeType. This should be called 14739before enabling the GPE. Also, this interface will automatically disable 14740the GPE if it is currently enabled. 147413) AcpiEnableGpe no longer supports a GPE type flag. 14742 14743Specific drivers that must be changed: 147441) EC driver: 14745 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 14746AeGpeHandler, NULL); 14747 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 14748 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 14749 147502) Button Drivers (Power, Lid, Sleep): 14751Run _PRW method under parent device 14752If _PRW exists: /* This is a control-method button */ 14753 Extract GPE number and possibly GpeDevice 14754 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 14755 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 14756 14757For all other devices that have _PRWs, we automatically set the GPE type 14758to 14759ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 14760This 14761must be done on a selective basis, usually requiring some kind of user 14762app 14763to allow the user to pick the wake devices. 14764 14765 14766Code and Data Size: Current and previous core subsystem library sizes are 14767shown below. These are the code and data sizes for the acpica.lib 14768produced 14769by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14770any ACPI driver or OSPM code. The debug version of the code includes the 14771debug output trace mechanism and has a much larger code and data size. 14772Note 14773that these values will vary depending on the efficiency of the compiler 14774and 14775the compiler options used during generation. 14776 14777 Previous Release: 14778 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14779 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14780 Current Release: 14781 14782 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14783 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14784 14785 14786 14787---------------------------------------- 1478802 April 2004. Summary of changes for version 20040402: 14789 147901) ACPI CA Core Subsystem: 14791 14792Fixed an interpreter problem where an indirect store through an ArgX 14793parameter was incorrectly applying the "implicit conversion rules" during 14794the store. From the ACPI specification: "If the target is a method local 14795or 14796argument (LocalX or ArgX), no conversion is performed and the result is 14797stored directly to the target". The new behavior is to disable implicit 14798conversion during ALL stores to an ArgX. 14799 14800Changed the behavior of the _PRW method scan to ignore any and all errors 14801returned by a given _PRW. This prevents the scan from aborting from the 14802failure of any single _PRW. 14803 14804Moved the runtime configuration parameters from the global init procedure 14805to 14806static variables in acglobal.h. This will allow the host to override the 14807default values easily. 14808 14809Code and Data Size: Current and previous core subsystem library sizes are 14810shown below. These are the code and data sizes for the acpica.lib 14811produced 14812by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14813any ACPI driver or OSPM code. The debug version of the code includes the 14814debug output trace mechanism and has a much larger code and data size. 14815Note 14816that these values will vary depending on the efficiency of the compiler 14817and 14818the compiler options used during generation. 14819 14820 Previous Release: 14821 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14822 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14823 Current Release: 14824 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14825 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14826 14827 148282) iASL Compiler/Disassembler: 14829 14830iASL now fully disassembles SSDTs. However, External() statements are 14831not 14832generated automatically for unresolved symbols at this time. This is a 14833planned feature for future implementation. 14834 14835Fixed a scoping problem in the disassembler that occurs when the type of 14836the 14837target of a Scope() operator is overridden. This problem caused an 14838incorrectly nested internal namespace to be constructed. 14839 14840Any warnings or errors that are emitted during disassembly are now 14841commented 14842out automatically so that the resulting file can be recompiled without 14843any 14844hand editing. 14845 14846---------------------------------------- 1484726 March 2004. Summary of changes for version 20040326: 14848 148491) ACPI CA Core Subsystem: 14850 14851Implemented support for "wake" GPEs via interaction between GPEs and the 14852_PRW methods. Every GPE that is pointed to by one or more _PRWs is 14853identified as a WAKE GPE and by default will no longer be enabled at 14854runtime. Previously, we were blindly enabling all GPEs with a 14855corresponding 14856_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 14857We 14858believe this has been the cause of thousands of "spurious" GPEs on some 14859systems. 14860 14861This new GPE behavior is can be reverted to the original behavior (enable 14862ALL GPEs at runtime) via a runtime flag. 14863 14864Fixed a problem where aliased control methods could not access objects 14865properly. The proper scope within the namespace was not initialized 14866(transferred to the target of the aliased method) before executing the 14867target method. 14868 14869Fixed a potential race condition on internal object deletion on the 14870return 14871object in AcpiEvaluateObject. 14872 14873Integrated a fix for resource descriptors where both _MEM and _MTP were 14874being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 14875wide, 0x0F instead of 0x03.) 14876 14877Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 14878preventing 14879a 14880fault in some cases. 14881 14882Updated Notify() values for debug statements in evmisc.c 14883 14884Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 14885 14886Code and Data Size: Current and previous core subsystem library sizes are 14887shown below. These are the code and data sizes for the acpica.lib 14888produced 14889by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14890any ACPI driver or OSPM code. The debug version of the code includes the 14891debug output trace mechanism and has a much larger code and data size. 14892Note 14893that these values will vary depending on the efficiency of the compiler 14894and 14895the compiler options used during generation. 14896 14897 Previous Release: 14898 14899 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14900 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14901 Current Release: 14902 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14903 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14904 14905---------------------------------------- 1490611 March 2004. Summary of changes for version 20040311: 14907 149081) ACPI CA Core Subsystem: 14909 14910Fixed a problem where errors occurring during the parse phase of control 14911method execution did not abort cleanly. For example, objects created and 14912installed in the namespace were not deleted. This caused all subsequent 14913invocations of the method to return the AE_ALREADY_EXISTS exception. 14914 14915Implemented a mechanism to force a control method to "Serialized" 14916execution 14917if the method attempts to create namespace objects. (The root of the 14918AE_ALREADY_EXISTS problem.) 14919 14920Implemented support for the predefined _OSI "internal" control method. 14921Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 14922and 14923"Windows 2001.1", and can be easily upgraded for new strings as 14924necessary. 14925This feature will allow "other" operating systems to execute the fully 14926tested, "Windows" code path through the ASL code 14927 14928Global Lock Support: Now allows multiple acquires and releases with any 14929internal thread. Removed concept of "owning thread" for this special 14930mutex. 14931 14932Fixed two functions that were inappropriately declaring large objects on 14933the 14934CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 14935during 14936method execution considerably. 14937 14938Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 14939S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 14940 14941Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 14942defined on the machine. 14943 14944Implemented two runtime options: One to force all control method 14945execution 14946to "Serialized" to mimic Windows behavior, another to disable _OSI 14947support 14948if it causes problems on a given machine. 14949 14950Code and Data Size: Current and previous core subsystem library sizes are 14951shown below. These are the code and data sizes for the acpica.lib 14952produced 14953by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14954any ACPI driver or OSPM code. The debug version of the code includes the 14955debug output trace mechanism and has a much larger code and data size. 14956Note 14957that these values will vary depending on the efficiency of the compiler 14958and 14959the compiler options used during generation. 14960 14961 Previous Release: 14962 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14963 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14964 Current Release: 14965 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14966 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14967 149682) iASL Compiler/Disassembler: 14969 14970Fixed an array size problem for FreeBSD that would cause the compiler to 14971fault. 14972 14973---------------------------------------- 1497420 February 2004. Summary of changes for version 20040220: 14975 14976 149771) ACPI CA Core Subsystem: 14978 14979Implemented execution of _SxD methods for Device objects in the 14980GetObjectInfo interface. 14981 14982Fixed calls to _SST method to pass the correct arguments. 14983 14984Added a call to _SST on wake to restore to "working" state. 14985 14986Check for End-Of-Buffer failure case in the WalkResources interface. 14987 14988Integrated fix for 64-bit alignment issue in acglobal.h by moving two 14989structures to the beginning of the file. 14990 14991After wake, clear GPE status register(s) before enabling GPEs. 14992 14993After wake, clear/enable power button. (Perhaps we should clear/enable 14994all 14995fixed events upon wake.) 14996 14997Fixed a couple of possible memory leaks in the Namespace manager. 14998 14999Integrated latest acnetbsd.h file. 15000 15001---------------------------------------- 1500211 February 2004. Summary of changes for version 20040211: 15003 15004 150051) ACPI CA Core Subsystem: 15006 15007Completed investigation and implementation of the call-by-reference 15008mechanism for control method arguments. 15009 15010Fixed a problem where a store of an object into an indexed package could 15011fail if the store occurs within a different method than the method that 15012created the package. 15013 15014Fixed a problem where the ToDecimal operator could return incorrect 15015results. 15016 15017Fixed a problem where the CopyObject operator could fail on some of the 15018more 15019obscure objects (e.g., Reference objects.) 15020 15021Improved the output of the Debug object to display buffer, package, and 15022index objects. 15023 15024Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15025return 15026the expected result. 15027 15028Added permanent ACPI_REPORT_ERROR macros for all instances of the 15029ACPI_AML_INTERNAL exception. 15030 15031Integrated latest version of acfreebsd.h 15032 15033---------------------------------------- 1503416 January 2004. Summary of changes for version 20040116: 15035 15036The purpose of this release is primarily to update the copyright years in 15037each module, thus causing a huge number of diffs. There are a few small 15038functional changes, however. 15039 150401) ACPI CA Core Subsystem: 15041 15042Improved error messages when there is a problem finding one or more of 15043the 15044required base ACPI tables 15045 15046Reintroduced the definition of APIC_HEADER in actbl.h 15047 15048Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15049 15050Removed extraneous reference to NewObj in dsmthdat.c 15051 150522) iASL compiler 15053 15054Fixed a problem introduced in December that disabled the correct 15055disassembly 15056of Resource Templates 15057 15058 15059---------------------------------------- 1506003 December 2003. Summary of changes for version 20031203: 15061 150621) ACPI CA Core Subsystem: 15063 15064Changed the initialization of Operation Regions during subsystem 15065init to perform two entire walks of the ACPI namespace; The first 15066to initialize the regions themselves, the second to execute the 15067_REG methods. This fixed some interdependencies across _REG 15068methods found on some machines. 15069 15070Fixed a problem where a Store(Local0, Local1) could simply update 15071the object reference count, and not create a new copy of the 15072object if the Local1 is uninitialized. 15073 15074Implemented support for the _SST reserved method during sleep 15075transitions. 15076 15077Implemented support to clear the SLP_TYP and SLP_EN bits when 15078waking up, this is apparently required by some machines. 15079 15080When sleeping, clear the wake status only if SleepState is not S5. 15081 15082Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15083pointer arithmetic advanced a string pointer too far. 15084 15085Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15086could be returned if the requested table has not been loaded. 15087 15088Within the support for IRQ resources, restructured the handling of 15089the active and edge/level bits. 15090 15091Fixed a few problems in AcpiPsxExecute() where memory could be 15092leaked under certain error conditions. 15093 15094Improved error messages for the cases where the ACPI mode could 15095not be entered. 15096 15097Code and Data Size: Current and previous core subsystem library 15098sizes are shown below. These are the code and data sizes for the 15099acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15100these values do not include any ACPI driver or OSPM code. The 15101debug version of the code includes the debug output trace 15102mechanism and has a much larger code and data size. Note that 15103these values will vary depending on the efficiency of the compiler 15104and the compiler options used during generation. 15105 15106 Previous Release (20031029): 15107 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15108 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15109 Current Release: 15110 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15111 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15112 151132) iASL Compiler/Disassembler: 15114 15115Implemented a fix for the iASL disassembler where a bad index was 15116generated. This was most noticeable on 64-bit platforms 15117 15118 15119---------------------------------------- 1512029 October 2003. Summary of changes for version 20031029: 15121 151221) ACPI CA Core Subsystem: 15123 15124 15125Fixed a problem where a level-triggered GPE with an associated 15126_Lxx control method was incorrectly cleared twice. 15127 15128Fixed a problem with the Field support code where an access can 15129occur beyond the end-of-region if the field is non-aligned but 15130extends to the very end of the parent region (resulted in an 15131AE_AML_REGION_LIMIT exception.) 15132 15133Fixed a problem with ACPI Fixed Events where an RT Clock handler 15134would not get invoked on an RTC event. The RTC event bitmasks for 15135the PM1 registers were not being initialized properly. 15136 15137Implemented support for executing _STA and _INI methods for 15138Processor objects. Although this is currently not part of the 15139ACPI specification, there is existing ASL code that depends on the 15140init-time execution of these methods. 15141 15142Implemented and deployed a GetDescriptorName function to decode 15143the various types of internal descriptors. Guards against null 15144descriptors during debug output also. 15145 15146Implemented and deployed a GetNodeName function to extract the 4- 15147character namespace node name. This function simplifies the debug 15148and error output, as well as guarding against null pointers during 15149output. 15150 15151Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 15152simplify the debug and error output of 64-bit integers. This 15153macro replaces the HIDWORD and LODWORD macros for dumping these 15154integers. 15155 15156Updated the implementation of the Stall() operator to only call 15157AcpiOsStall(), and also return an error if the operand is larger 15158than 255. This preserves the required behavior of not 15159relinquishing the processor, as would happen if AcpiOsSleep() was 15160called for "long stalls". 15161 15162Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 15163initialized are now treated as NOOPs. 15164 15165Cleaned up a handful of warnings during 64-bit generation. 15166 15167Fixed a reported error where and incorrect GPE number was passed 15168to the GPE dispatch handler. This value is only used for error 15169output, however. Used this opportunity to clean up and streamline 15170the GPE dispatch code. 15171 15172Code and Data Size: Current and previous core subsystem library 15173sizes are shown below. These are the code and data sizes for the 15174acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15175these values do not include any ACPI driver or OSPM code. The 15176 15177debug version of the code includes the debug output trace 15178mechanism and has a much larger code and data size. Note that 15179these values will vary depending on the efficiency of the compiler 15180and the compiler options used during generation. 15181 15182 Previous Release (20031002): 15183 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15184 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15185 Current Release: 15186 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15187 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15188 15189 151902) iASL Compiler/Disassembler: 15191 15192Updated the iASL compiler to return an error if the operand to the 15193Stall() operator is larger than 255. 15194 15195 15196---------------------------------------- 1519702 October 2003. Summary of changes for version 20031002: 15198 15199 152001) ACPI CA Core Subsystem: 15201 15202Fixed a problem with Index Fields where the index was not 15203incremented for fields that require multiple writes to the 15204index/data registers (Fields that are wider than the data 15205register.) 15206 15207Fixed a problem with all Field objects where a write could go 15208beyond the end-of-field if the field was larger than the access 15209granularity and therefore required multiple writes to complete the 15210request. An extra write beyond the end of the field could happen 15211inadvertently. 15212 15213Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 15214would incorrectly be returned if the width of the Data Register 15215was larger than the specified field access width. 15216 15217Completed fixes for LoadTable() and Unload() and verified their 15218operation. Implemented full support for the "DdbHandle" object 15219throughout the ACPI CA subsystem. 15220 15221Implemented full support for the MADT and ECDT tables in the ACPI 15222CA header files. Even though these tables are not directly 15223consumed by ACPI CA, the header definitions are useful for ACPI 15224device drivers. 15225 15226Integrated resource descriptor fixes posted to the Linux ACPI 15227list. This included checks for minimum descriptor length, and 15228support for trailing NULL strings within descriptors that have 15229optional string elements. 15230 15231Code and Data Size: Current and previous core subsystem library 15232sizes are shown below. These are the code and data sizes for the 15233acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15234these values do not include any ACPI driver or OSPM code. The 15235debug version of the code includes the debug output trace 15236mechanism and has a much larger code and data size. Note that 15237these values will vary depending on the efficiency of the compiler 15238and the compiler options used during generation. 15239 15240 Previous Release (20030918): 15241 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15242 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15243 Current Release: 15244 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15245 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15246 15247 152482) iASL Compiler: 15249 15250Implemented detection of non-ASCII characters within the input 15251source ASL file. This catches attempts to compile binary (AML) 15252files early in the compile, with an informative error message. 15253 15254Fixed a problem where the disassembler would fault if the output 15255filename could not be generated or if the output file could not be 15256opened. 15257 15258---------------------------------------- 1525918 September 2003. Summary of changes for version 20030918: 15260 15261 152621) ACPI CA Core Subsystem: 15263 15264Found and fixed a longstanding problem with the late execution of 15265the various deferred AML opcodes (such as Operation Regions, 15266Buffer Fields, Buffers, and Packages). If the name string 15267specified for the name of the new object placed the object in a 15268scope other than the current scope, the initialization/execution 15269of the opcode failed. The solution to this problem was to 15270implement a mechanism where the late execution of such opcodes 15271does not attempt to lookup/create the name a second time in an 15272incorrect scope. This fixes the "region size computed 15273incorrectly" problem. 15274 15275Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 15276Global Lock AE_BAD_PARAMETER error. 15277 15278Fixed several 64-bit issues with prototypes, casting and data 15279types. 15280 15281Removed duplicate prototype from acdisasm.h 15282 15283Fixed an issue involving EC Operation Region Detach (Shaohua Li) 15284 15285Code and Data Size: Current and previous core subsystem library 15286sizes are shown below. These are the code and data sizes for the 15287acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15288these values do not include any ACPI driver or OSPM code. The 15289debug version of the code includes the debug output trace 15290mechanism and has a much larger code and data size. Note that 15291these values will vary depending on the efficiency of the compiler 15292and the compiler options used during generation. 15293 15294 Previous Release: 15295 15296 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15297 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15298 Current Release: 15299 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15300 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15301 15302 153032) Linux: 15304 15305Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 15306correct sleep time in seconds. 15307 15308---------------------------------------- 1530914 July 2003. Summary of changes for version 20030619: 15310 153111) ACPI CA Core Subsystem: 15312 15313Parse SSDTs in order discovered, as opposed to reverse order 15314(Hrvoje Habjanic) 15315 15316Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 15317Klausner, 15318 Nate Lawson) 15319 15320 153212) Linux: 15322 15323Dynamically allocate SDT list (suggested by Andi Kleen) 15324 15325proc function return value cleanups (Andi Kleen) 15326 15327Correctly handle NMI watchdog during long stalls (Andrew Morton) 15328 15329Make it so acpismp=force works (reported by Andrew Morton) 15330 15331 15332---------------------------------------- 1533319 June 2003. Summary of changes for version 20030619: 15334 153351) ACPI CA Core Subsystem: 15336 15337Fix To/FromBCD, eliminating the need for an arch-specific #define. 15338 15339Do not acquire a semaphore in the S5 shutdown path. 15340 15341Fix ex_digits_needed for 0. (Takayoshi Kochi) 15342 15343Fix sleep/stall code reversal. (Andi Kleen) 15344 15345Revert a change having to do with control method calling 15346semantics. 15347 153482) Linux: 15349 15350acpiphp update (Takayoshi Kochi) 15351 15352Export acpi_disabled for sonypi (Stelian Pop) 15353 15354Mention acpismp=force in config help 15355 15356Re-add acpitable.c and acpismp=force. This improves backwards 15357 15358compatibility and also cleans up the code to a significant degree. 15359 15360Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 15361 15362---------------------------------------- 1536322 May 2003. Summary of changes for version 20030522: 15364 153651) ACPI CA Core Subsystem: 15366 15367Found and fixed a reported problem where an AE_NOT_FOUND error 15368occurred occasionally during _BST evaluation. This turned out to 15369be an Owner ID allocation issue where a called method did not get 15370a new ID assigned to it. Eventually, (after 64k calls), the Owner 15371ID UINT16 would wraparound so that the ID would be the same as the 15372caller's and the called method would delete the caller's 15373namespace. 15374 15375Implemented extended error reporting for control methods that are 15376aborted due to a run-time exception. Output includes the exact 15377AML instruction that caused the method abort, a dump of the method 15378locals and arguments at the time of the abort, and a trace of all 15379nested control method calls. 15380 15381Modified the interpreter to allow the creation of buffers of zero 15382length from the AML code. Implemented new code to ensure that no 15383attempt is made to actually allocate a memory buffer (of length 15384zero) - instead, a simple buffer object with a NULL buffer pointer 15385and length zero is created. A warning is no longer issued when 15386the AML attempts to create a zero-length buffer. 15387 15388Implemented a workaround for the "leading asterisk issue" in 15389_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 15390asterisk is automatically removed if present in any HID, UID, or 15391CID strings. The iASL compiler will still flag this asterisk as 15392an error, however. 15393 15394Implemented full support for _CID methods that return a package of 15395multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 15396now additionally returns a device _CID list if present. This 15397required a change to the external interface in order to pass an 15398ACPI_BUFFER object as a parameter since the _CID list is of 15399variable length. 15400 15401Fixed a problem with the new AE_SAME_HANDLER exception where 15402handler initialization code did not know about this exception. 15403 15404Code and Data Size: Current and previous core subsystem library 15405sizes are shown below. These are the code and data sizes for the 15406acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15407these values do not include any ACPI driver or OSPM code. The 15408debug version of the code includes the debug output trace 15409mechanism and has a much larger code and data size. Note that 15410these values will vary depending on the efficiency of the compiler 15411and the compiler options used during generation. 15412 15413 Previous Release (20030509): 15414 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15415 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15416 Current Release: 15417 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15418 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15419 15420 154212) Linux: 15422 15423Fixed a bug in which we would reinitialize the ACPI interrupt 15424after it was already working, thus disabling all ACPI and the IRQs 15425for any other device sharing the interrupt. (Thanks to Stian 15426Jordet) 15427 15428Toshiba driver update (John Belmonte) 15429 15430Return only 0 or 1 for our interrupt handler status (Andrew 15431Morton) 15432 15433 154343) iASL Compiler: 15435 15436Fixed a reported problem where multiple (nested) ElseIf() 15437statements were not handled correctly by the compiler, resulting 15438in incorrect warnings and incorrect AML code. This was a problem 15439in both the ASL parser and the code generator. 15440 15441 154424) Documentation: 15443 15444Added changes to existing interfaces, new exception codes, and new 15445text concerning reference count object management versus garbage 15446collection. 15447 15448---------------------------------------- 1544909 May 2003. Summary of changes for version 20030509. 15450 15451 154521) ACPI CA Core Subsystem: 15453 15454Changed the subsystem initialization sequence to hold off 15455installation of address space handlers until the hardware has been 15456initialized and the system has entered ACPI mode. This is because 15457the installation of space handlers can cause _REG methods to be 15458run. Previously, the _REG methods could potentially be run before 15459ACPI mode was enabled. 15460 15461Fixed some memory leak issues related to address space handler and 15462notify handler installation. There were some problems with the 15463reference count mechanism caused by the fact that the handler 15464objects are shared across several namespace objects. 15465 15466Fixed a reported problem where reference counts within the 15467namespace were not properly updated when named objects created by 15468method execution were deleted. 15469 15470Fixed a reported problem where multiple SSDTs caused a deletion 15471issue during subsystem termination. Restructured the table data 15472structures to simplify the linked lists and the related code. 15473 15474Fixed a problem where the table ID associated with secondary 15475tables (SSDTs) was not being propagated into the namespace objects 15476created by those tables. This would only present a problem for 15477tables that are unloaded at run-time, however. 15478 15479Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 15480type as the length parameter (instead of UINT32). 15481 15482Solved a long-standing problem where an ALREADY_EXISTS error 15483appears on various systems. This problem could happen when there 15484are multiple PCI_Config operation regions under a single PCI root 15485bus. This doesn't happen very frequently, but there are some 15486systems that do this in the ASL. 15487 15488Fixed a reported problem where the internal DeleteNode function 15489was incorrectly handling the case where a namespace node was the 15490first in the parent's child list, and had additional peers (not 15491the only child, but first in the list of children.) 15492 15493Code and Data Size: Current core subsystem library sizes are shown 15494below. These are the code and data sizes for the acpica.lib 15495produced by the Microsoft Visual C++ 6.0 compiler, and these 15496values do not include any ACPI driver or OSPM code. The debug 15497version of the code includes the debug output trace mechanism and 15498has a much larger code and data size. Note that these values will 15499vary depending on the efficiency of the compiler and the compiler 15500options used during generation. 15501 15502 Previous Release 15503 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15504 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15505 Current Release: 15506 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15507 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15508 15509 155102) Linux: 15511 15512Allow ":" in OS override string (Ducrot Bruno) 15513 15514Kobject fix (Greg KH) 15515 15516 155173 iASL Compiler/Disassembler: 15518 15519Fixed a problem in the generation of the C source code files (AML 15520is emitted in C source statements for BIOS inclusion) where the 15521Ascii dump that appears within a C comment at the end of each line 15522could cause a compile time error if the AML sequence happens to 15523have an open comment or close comment sequence embedded. 15524 15525 15526---------------------------------------- 1552724 April 2003. Summary of changes for version 20030424. 15528 15529 155301) ACPI CA Core Subsystem: 15531 15532Support for big-endian systems has been implemented. Most of the 15533support has been invisibly added behind big-endian versions of the 15534ACPI_MOVE_* macros. 15535 15536Fixed a problem in AcpiHwDisableGpeBlock() and 15537AcpiHwClearGpeBlock() where an incorrect offset was passed to the 15538low level hardware write routine. The offset parameter was 15539actually eliminated from the low level read/write routines because 15540they had become obsolete. 15541 15542Fixed a problem where a handler object was deleted twice during 15543the removal of a fixed event handler. 15544 15545 155462) Linux: 15547 15548A fix for SMP systems with link devices was contributed by 15549 15550Compaq's Dan Zink. 15551 15552(2.5) Return whether we handled the interrupt in our IRQ handler. 15553(Linux ISRs no longer return void, so we can propagate the handler 15554return value from the ACPI CA core back to the OS.) 15555 15556 15557 155583) Documentation: 15559 15560The ACPI CA Programmer Reference has been updated to reflect new 15561interfaces and changes to existing interfaces. 15562 15563---------------------------------------- 1556428 March 2003. Summary of changes for version 20030328. 15565 155661) ACPI CA Core Subsystem: 15567 15568The GPE Block Device support has been completed. New interfaces 15569are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 15570interfaces (enable, disable, clear, getstatus) have been split 15571into separate interfaces for Fixed Events and General Purpose 15572Events (GPEs) in order to support GPE Block Devices properly. 15573 15574Fixed a problem where the error message "Failed to acquire 15575semaphore" would appear during operations on the embedded 15576controller (EC). 15577 15578Code and Data Size: Current core subsystem library sizes are shown 15579below. These are the code and data sizes for the acpica.lib 15580produced by the Microsoft Visual C++ 6.0 compiler, and these 15581values do not include any ACPI driver or OSPM code. The debug 15582version of the code includes the debug output trace mechanism and 15583has a much larger code and data size. Note that these values will 15584vary depending on the efficiency of the compiler and the compiler 15585options used during generation. 15586 15587 Previous Release 15588 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15589 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15590 Current Release: 15591 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15592 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15593 15594 15595---------------------------------------- 1559628 February 2003. Summary of changes for version 20030228. 15597 15598 155991) ACPI CA Core Subsystem: 15600 15601The GPE handling and dispatch code has been completely overhauled 15602in preparation for support of GPE Block Devices (ID ACPI0006). 15603This affects internal data structures and code only; there should 15604be no differences visible externally. One new file has been 15605added, evgpeblk.c 15606 15607The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 15608fields that are used to determine the GPE block lengths. The 15609REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15610structures are ignored. This is per the ACPI specification but it 15611isn't very clear. The full 256 Block 0/1 GPEs are now supported 15612(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 15613 15614In the SCI interrupt handler, removed the read of the PM1_CONTROL 15615register to look at the SCI_EN bit. On some machines, this read 15616causes an SMI event and greatly slows down SCI events. (This may 15617in fact be the cause of slow battery status response on some 15618systems.) 15619 15620Fixed a problem where a store of a NULL string to a package object 15621could cause the premature deletion of the object. This was seen 15622during execution of the battery _BIF method on some systems, 15623resulting in no battery data being returned. 15624 15625Added AcpiWalkResources interface to simplify parsing of resource 15626lists. 15627 15628Code and Data Size: Current core subsystem library sizes are shown 15629below. These are the code and data sizes for the acpica.lib 15630produced by the Microsoft Visual C++ 6.0 compiler, and these 15631values do not include any ACPI driver or OSPM code. The debug 15632version of the code includes the debug output trace mechanism and 15633has a much larger code and data size. Note that these values will 15634vary depending on the efficiency of the compiler and the compiler 15635options used during generation. 15636 15637 Previous Release 15638 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15639 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15640 Current Release: 15641 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15642 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15643 15644 156452) Linux 15646 15647S3 fixes (Ole Rohne) 15648 15649Update ACPI PHP driver with to use new acpi_walk_resource API 15650(Bjorn Helgaas) 15651 15652Add S4BIOS support (Pavel Machek) 15653 15654Map in entire table before performing checksum (John Stultz) 15655 15656Expand the mem= cmdline to allow the specification of reserved and 15657ACPI DATA blocks (Pavel Machek) 15658 15659Never use ACPI on VISWS 15660 15661Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 15662 15663Revert a change that allowed P_BLK lengths to be 4 or 5. This is 15664causing us to think that some systems support C2 when they really 15665don't. 15666 15667Do not count processor objects for non-present CPUs (Thanks to 15668Dominik Brodowski) 15669 15670 156713) iASL Compiler: 15672 15673Fixed a problem where ASL include files could not be found and 15674opened. 15675 15676Added support for the _PDC reserved name. 15677 15678 15679---------------------------------------- 1568022 January 2003. Summary of changes for version 20030122. 15681 15682 156831) ACPI CA Core Subsystem: 15684 15685Added a check for constructs of the form: Store (Local0, Local0) 15686where Local0 is not initialized. Apparently, some BIOS 15687programmers believe that this is a NOOP. Since this store doesn't 15688do anything anyway, the new prototype behavior will ignore this 15689error. This is a case where we can relax the strict checking in 15690the interpreter in the name of compatibility. 15691 15692 156932) Linux 15694 15695The AcpiSrc Source Conversion Utility has been released with the 15696Linux package for the first time. This is the utility that is 15697used to convert the ACPI CA base source code to the Linux version. 15698 15699(Both) Handle P_BLK lengths shorter than 6 more gracefully 15700 15701(Both) Move more headers to include/acpi, and delete an unused 15702header. 15703 15704(Both) Move drivers/acpi/include directory to include/acpi 15705 15706(Both) Boot functions don't use cmdline, so don't pass it around 15707 15708(Both) Remove include of unused header (Adrian Bunk) 15709 15710(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 15711the 15712former now also includes the latter, acpiphp.h only needs the one, 15713now. 15714 15715(2.5) Make it possible to select method of bios restoring after S3 15716resume. [=> no more ugly ifdefs] (Pavel Machek) 15717 15718(2.5) Make proc write interfaces work (Pavel Machek) 15719 15720(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 15721 15722(2.5) Break out ACPI Perf code into its own module, under cpufreq 15723(Dominik Brodowski) 15724 15725(2.4) S4BIOS support (Ducrot Bruno) 15726 15727(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 15728Visinoni) 15729 15730 157313) iASL Compiler: 15732 15733Added support to disassemble SSDT and PSDTs. 15734 15735Implemented support to obtain SSDTs from the Windows registry if 15736available. 15737 15738 15739---------------------------------------- 1574009 January 2003. Summary of changes for version 20030109. 15741 157421) ACPI CA Core Subsystem: 15743 15744Changed the behavior of the internal Buffer-to-String conversion 15745function. The current ACPI specification states that the contents 15746of the buffer are "converted to a string of two-character 15747hexadecimal numbers, each separated by a space". Unfortunately, 15748this definition is not backwards compatible with existing ACPI 1.0 15749implementations (although the behavior was not defined in the ACPI 157501.0 specification). The new behavior simply copies data from the 15751buffer to the string until a null character is found or the end of 15752the buffer is reached. The new String object is always null 15753terminated. This problem was seen during the generation of _BIF 15754battery data where incorrect strings were returned for battery 15755type, etc. This will also require an errata to the ACPI 15756specification. 15757 15758Renamed all instances of NATIVE_UINT and NATIVE_INT to 15759ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 15760 15761Copyright in all module headers (both Linux and non-Linux) has be 15762updated to 2003. 15763 15764Code and Data Size: Current core subsystem library sizes are shown 15765below. These are the code and data sizes for the acpica.lib 15766produced by the Microsoft Visual C++ 6.0 compiler, and these 15767values do not include any ACPI driver or OSPM code. The debug 15768version of the code includes the debug output trace mechanism and 15769has a much larger code and data size. Note that these values will 15770vary depending on the efficiency of the compiler and the compiler 15771options used during generation. 15772 15773 Previous Release 15774 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15775 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15776 Current Release: 15777 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15778 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15779 15780 157812) Linux 15782 15783Fixed an oops on module insertion/removal (Matthew Tippett) 15784 15785(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 15786 15787(2.5) Replace pr_debug (Randy Dunlap) 15788 15789(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 15790 15791(Both) Eliminate spawning of thread from timer callback, in favor 15792of schedule_work() 15793 15794(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 15795 15796(Both) Added define for Fixed Function HW region (Matthew Wilcox) 15797 15798(Both) Add missing statics to button.c (Pavel Machek) 15799 15800Several changes have been made to the source code translation 15801utility that generates the Linux Code in order to make the code 15802more "Linux-like": 15803 15804All typedefs on structs and unions have been removed in keeping 15805with the Linux coding style. 15806 15807Removed the non-Linux SourceSafe module revision number from each 15808module header. 15809 15810Completed major overhaul of symbols to be lowercase for linux. 15811Doubled the number of symbols that are lowercase. 15812 15813Fixed a problem where identifiers within procedure headers and 15814within quotes were not fully lower cased (they were left with a 15815starting capital.) 15816 15817Some C macros whose only purpose is to allow the generation of 16- 15818bit code are now completely removed in the Linux code, increasing 15819readability and maintainability. 15820 15821---------------------------------------- 15822 1582312 December 2002. Summary of changes for version 20021212. 15824 15825 158261) ACPI CA Core Subsystem: 15827 15828Fixed a problem where the creation of a zero-length AML Buffer 15829would cause a fault. 15830 15831Fixed a problem where a Buffer object that pointed to a static AML 15832buffer (in an ACPI table) could inadvertently be deleted, causing 15833memory corruption. 15834 15835Fixed a problem where a user buffer (passed in to the external 15836ACPI CA interfaces) could be overwritten if the buffer was too 15837small to complete the operation, causing memory corruption. 15838 15839Fixed a problem in the Buffer-to-String conversion code where a 15840string of length one was always returned, regardless of the size 15841of the input Buffer object. 15842 15843Removed the NATIVE_CHAR data type across the entire source due to 15844lack of need and lack of consistent use. 15845 15846Code and Data Size: Current core subsystem library sizes are shown 15847below. These are the code and data sizes for the acpica.lib 15848produced by the Microsoft Visual C++ 6.0 compiler, and these 15849values do not include any ACPI driver or OSPM code. The debug 15850version of the code includes the debug output trace mechanism and 15851has a much larger code and data size. Note that these values will 15852vary depending on the efficiency of the compiler and the compiler 15853options used during generation. 15854 15855 Previous Release 15856 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15857 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15858 Current Release: 15859 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15860 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15861 15862 15863---------------------------------------- 1586405 December 2002. Summary of changes for version 20021205. 15865 158661) ACPI CA Core Subsystem: 15867 15868Fixed a problem where a store to a String or Buffer object could 15869cause corruption of the DSDT if the object type being stored was 15870the same as the target object type and the length of the object 15871being stored was equal to or smaller than the original (existing) 15872target object. This was seen to cause corruption of battery _BIF 15873buffers if the _BIF method modified the buffer on the fly. 15874 15875Fixed a problem where an internal error was generated if a control 15876method invocation was used in an OperationRegion, Buffer, or 15877Package declaration. This was caused by the deferred parsing of 15878the control method and thus the deferred creation of the internal 15879method object. The solution to this problem was to create the 15880internal method object at the moment the method is encountered in 15881the first pass - so that subsequent references to the method will 15882able to obtain the required parameter count and thus properly 15883parse the method invocation. This problem presented itself as an 15884AE_AML_INTERNAL during the pass 1 parse phase during table load. 15885 15886Fixed a problem where the internal String object copy routine did 15887not always allocate sufficient memory for the target String object 15888and caused memory corruption. This problem was seen to cause 15889"Allocation already present in list!" errors as memory allocation 15890became corrupted. 15891 15892Implemented a new function for the evaluation of namespace objects 15893that allows the specification of the allowable return object 15894types. This simplifies a lot of code that checks for a return 15895object of one or more specific objects returned from the 15896evaluation (such as _STA, etc.) This may become and external 15897function if it would be useful to ACPI-related drivers. 15898 15899Completed another round of prefixing #defines with "ACPI_" for 15900clarity. 15901 15902Completed additional code restructuring to allow more modular 15903linking for iASL compiler and AcpiExec. Several files were split 15904creating new files. New files: nsparse.c dsinit.c evgpe.c 15905 15906Implemented an abort mechanism to terminate an executing control 15907method via the AML debugger. This feature is useful for debugging 15908control methods that depend (wait) for specific hardware 15909responses. 15910 15911Code and Data Size: Current core subsystem library sizes are shown 15912below. These are the code and data sizes for the acpica.lib 15913produced by the Microsoft Visual C++ 6.0 compiler, and these 15914values do not include any ACPI driver or OSPM code. The debug 15915version of the code includes the debug output trace mechanism and 15916has a much larger code and data size. Note that these values will 15917vary depending on the efficiency of the compiler and the compiler 15918options used during generation. 15919 15920 Previous Release 15921 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15922 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15923 Current Release: 15924 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15925 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15926 15927 159282) iASL Compiler/Disassembler 15929 15930Fixed a compiler code generation problem for "Interrupt" Resource 15931Descriptors. If specified in the ASL, the optional "Resource 15932Source Index" and "Resource Source" fields were not inserted into 15933the correct location within the AML resource descriptor, creating 15934an invalid descriptor. 15935 15936Fixed a disassembler problem for "Interrupt" resource descriptors. 15937The optional "Resource Source Index" and "Resource Source" fields 15938were ignored. 15939 15940 15941---------------------------------------- 1594222 November 2002. Summary of changes for version 20021122. 15943 15944 159451) ACPI CA Core Subsystem: 15946 15947Fixed a reported problem where an object stored to a Method Local 15948or Arg was not copied to a new object during the store - the 15949object pointer was simply copied to the Local/Arg. This caused 15950all subsequent operations on the Local/Arg to also affect the 15951original source of the store operation. 15952 15953Fixed a problem where a store operation to a Method Local or Arg 15954was not completed properly if the Local/Arg contained a reference 15955(from RefOf) to a named field. The general-purpose store-to- 15956namespace-node code is now used so that this case is handled 15957automatically. 15958 15959Fixed a problem where the internal object copy routine would cause 15960a protection fault if the object being copied was a Package and 15961contained either 1) a NULL package element or 2) a nested sub- 15962package. 15963 15964Fixed a problem with the GPE initialization that resulted from an 15965ambiguity in the ACPI specification. One section of the 15966specification states that both the address and length of the GPE 15967block must be zero if the block is not supported. Another section 15968implies that only the address need be zero if the block is not 15969supported. The code has been changed so that both the address and 15970the length must be non-zero to indicate a valid GPE block (i.e., 15971if either the address or the length is zero, the GPE block is 15972invalid.) 15973 15974Code and Data Size: Current core subsystem library sizes are shown 15975below. These are the code and data sizes for the acpica.lib 15976produced by the Microsoft Visual C++ 6.0 compiler, and these 15977values do not include any ACPI driver or OSPM code. The debug 15978version of the code includes the debug output trace mechanism and 15979has a much larger code and data size. Note that these values will 15980vary depending on the efficiency of the compiler and the compiler 15981options used during generation. 15982 15983 Previous Release 15984 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15985 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15986 Current Release: 15987 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15988 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15989 15990 159912) Linux 15992 15993Cleaned up EC driver. Exported an external EC read/write 15994interface. By going through this, other drivers (most notably 15995sonypi) will be able to serialize access to the EC. 15996 15997 159983) iASL Compiler/Disassembler 15999 16000Implemented support to optionally generate include files for both 16001ASM and C (the -i switch). This simplifies BIOS development by 16002automatically creating include files that contain external 16003declarations for the symbols that are created within the 16004 16005(optionally generated) ASM and C AML source files. 16006 16007 16008---------------------------------------- 1600915 November 2002. Summary of changes for version 20021115. 16010 160111) ACPI CA Core Subsystem: 16012 16013Fixed a memory leak problem where an error during resolution of 16014 16015method arguments during a method invocation from another method 16016failed to cleanup properly by deleting all successfully resolved 16017argument objects. 16018 16019Fixed a problem where the target of the Index() operator was not 16020correctly constructed if the source object was a package. This 16021problem has not been detected because the use of a target operand 16022with Index() is very rare. 16023 16024Fixed a problem with the Index() operator where an attempt was 16025made to delete the operand objects twice. 16026 16027Fixed a problem where an attempt was made to delete an operand 16028twice during execution of the CondRefOf() operator if the target 16029did not exist. 16030 16031Implemented the first of perhaps several internal create object 16032functions that create and initialize a specific object type. This 16033consolidates duplicated code wherever the object is created, thus 16034shrinking the size of the subsystem. 16035 16036Implemented improved debug/error messages for errors that occur 16037during nested method invocations. All executing method pathnames 16038are displayed (with the error) as the call stack is unwound - thus 16039simplifying debug. 16040 16041Fixed a problem introduced in the 10/02 release that caused 16042premature deletion of a buffer object if a buffer was used as an 16043ASL operand where an integer operand is required (Thus causing an 16044implicit object conversion from Buffer to Integer.) The change in 16045the 10/02 release was attempting to fix a memory leak (albeit 16046incorrectly.) 16047 16048Code and Data Size: Current core subsystem library sizes are shown 16049below. These are the code and data sizes for the acpica.lib 16050produced by the Microsoft Visual C++ 6.0 compiler, and these 16051values do not include any ACPI driver or OSPM code. The debug 16052version of the code includes the debug output trace mechanism and 16053has a much larger code and data size. Note that these values will 16054vary depending on the efficiency of the compiler and the compiler 16055options used during generation. 16056 16057 Previous Release 16058 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16059 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16060 Current Release: 16061 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16062 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16063 16064 160652) Linux 16066 16067Changed the implementation of the ACPI semaphores to use down() 16068instead of down_interruptable(). It is important that the 16069execution of ACPI control methods not be interrupted by signals. 16070Methods must run to completion, or the system may be left in an 16071unknown/unstable state. 16072 16073Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16074(Shawn Starr) 16075 16076 160773) iASL Compiler/Disassembler 16078 16079 16080Changed the default location of output files. All output files 16081are now placed in the current directory by default instead of in 16082the directory of the source file. This change may affect some 16083existing makefiles, but it brings the behavior of the compiler in 16084line with other similar tools. The location of the output files 16085can be overridden with the -p command line switch. 16086 16087 16088---------------------------------------- 1608911 November 2002. Summary of changes for version 20021111. 16090 16091 160920) ACPI Specification 2.0B is released and is now available at: 16093http://www.acpi.info/index.html 16094 16095 160961) ACPI CA Core Subsystem: 16097 16098Implemented support for the ACPI 2.0 SMBus Operation Regions. 16099This includes the early detection and handoff of the request to 16100the SMBus region handler (avoiding all of the complex field 16101support code), and support for the bidirectional return packet 16102from an SMBus write operation. This paves the way for the 16103development of SMBus drivers in each host operating system. 16104 16105Fixed a problem where the semaphore WAIT_FOREVER constant was 16106defined as 32 bits, but must be 16 bits according to the ACPI 16107specification. This had the side effect of causing ASL 16108Mutex/Event timeouts even though the ASL code requested a wait 16109forever. Changed all internal references to the ACPI timeout 16110parameter to 16 bits to prevent future problems. Changed the name 16111of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16112 16113Code and Data Size: Current core subsystem library sizes are shown 16114below. These are the code and data sizes for the acpica.lib 16115produced by the Microsoft Visual C++ 6.0 compiler, and these 16116values do not include any ACPI driver or OSPM code. The debug 16117version of the code includes the debug output trace mechanism and 16118has a much larger code and data size. Note that these values will 16119vary depending on the efficiency of the compiler and the compiler 16120options used during generation. 16121 16122 Previous Release 16123 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16124 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16125 Current Release: 16126 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16127 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16128 16129 161302) Linux 16131 16132Module loading/unloading fixes (John Cagle) 16133 16134 161353) iASL Compiler/Disassembler 16136 16137Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 16138 16139Implemented support for the disassembly of all SMBus protocol 16140keywords (SMBQuick, SMBWord, etc.) 16141 16142---------------------------------------- 1614301 November 2002. Summary of changes for version 20021101. 16144 16145 161461) ACPI CA Core Subsystem: 16147 16148Fixed a problem where platforms that have a GPE1 block but no GPE0 16149block were not handled correctly. This resulted in a "GPE 16150overlap" error message. GPE0 is no longer required. 16151 16152Removed code added in the previous release that inserted nodes 16153into the namespace in alphabetical order. This caused some side- 16154effects on various machines. The root cause of the problem is 16155still under investigation since in theory, the internal ordering 16156of the namespace nodes should not matter. 16157 16158 16159Enhanced error reporting for the case where a named object is not 16160found during control method execution. The full ACPI namepath 16161(name reference) of the object that was not found is displayed in 16162this case. 16163 16164Note: as a result of the overhaul of the namespace object types in 16165the previous release, the namespace nodes for the predefined 16166scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 16167instead of ACPI_TYPE_ANY. This simplifies the namespace 16168management code but may affect code that walks the namespace tree 16169looking for specific object types. 16170 16171Code and Data Size: Current core subsystem library sizes are shown 16172below. These are the code and data sizes for the acpica.lib 16173produced by the Microsoft Visual C++ 6.0 compiler, and these 16174values do not include any ACPI driver or OSPM code. The debug 16175version of the code includes the debug output trace mechanism and 16176has a much larger code and data size. Note that these values will 16177vary depending on the efficiency of the compiler and the compiler 16178options used during generation. 16179 16180 Previous Release 16181 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16182 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16183 Current Release: 16184 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16185 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16186 16187 161882) Linux 16189 16190Fixed a problem introduced in the previous release where the 16191Processor and Thermal objects were not recognized and installed in 16192/proc. This was related to the scope type change described above. 16193 16194 161953) iASL Compiler/Disassembler 16196 16197Implemented the -g option to get all of the required ACPI tables 16198from the registry and save them to files (Windows version of the 16199compiler only.) The required tables are the FADT, FACS, and DSDT. 16200 16201Added ACPI table checksum validation during table disassembly in 16202order to catch corrupted tables. 16203 16204 16205---------------------------------------- 1620622 October 2002. Summary of changes for version 20021022. 16207 162081) ACPI CA Core Subsystem: 16209 16210Implemented a restriction on the Scope operator that the target 16211must already exist in the namespace at the time the operator is 16212encountered (during table load or method execution). In other 16213words, forward references are not allowed and Scope() cannot 16214create a new object. This changes the previous behavior where the 16215interpreter would create the name if not found. This new behavior 16216correctly enables the search-to-root algorithm during namespace 16217lookup of the target name. Because of this upsearch, this fixes 16218the known Compaq _SB_.OKEC problem and makes both the AML 16219interpreter and iASL compiler compatible with other ACPI 16220implementations. 16221 16222Completed a major overhaul of the internal ACPI object types for 16223the ACPI Namespace and the associated operand objects. Many of 16224these types had become obsolete with the introduction of the two- 16225pass namespace load. This cleanup simplifies the code and makes 16226the entire namespace load mechanism much clearer and easier to 16227understand. 16228 16229Improved debug output for tracking scope opening/closing to help 16230diagnose scoping issues. The old scope name as well as the new 16231scope name are displayed. Also improved error messages for 16232problems with ASL Mutex objects and error messages for GPE 16233problems. 16234 16235Cleaned up the namespace dump code, removed obsolete code. 16236 16237All string output (for all namespace/object dumps) now uses the 16238common ACPI string output procedure which handles escapes properly 16239and does not emit non-printable characters. 16240 16241Fixed some issues with constants in the 64-bit version of the 16242local C library (utclib.c) 16243 16244 162452) Linux 16246 16247EC Driver: No longer attempts to acquire the Global Lock at 16248interrupt level. 16249 16250 162513) iASL Compiler/Disassembler 16252 16253Implemented ACPI 2.0B grammar change that disallows all Type 1 and 162542 opcodes outside of a control method. This means that the 16255"executable" operators (versus the "namespace" operators) cannot 16256be used at the table level; they can only be used within a control 16257method. 16258 16259Implemented the restriction on the Scope() operator where the 16260target must already exist in the namespace at the time the 16261operator is encountered (during ASL compilation). In other words, 16262forward references are not allowed and Scope() cannot create a new 16263object. This makes the iASL compiler compatible with other ACPI 16264implementations and makes the Scope() implementation adhere to the 16265ACPI specification. 16266 16267Fixed a problem where namepath optimization for the Alias operator 16268was optimizing the wrong path (of the two namepaths.) This caused 16269a "Missing alias link" error message. 16270 16271Fixed a problem where an "unknown reserved name" warning could be 16272incorrectly generated for names like "_SB" when the trailing 16273underscore is not used in the original ASL. 16274 16275Fixed a problem where the reserved name check did not handle 16276NamePaths with multiple NameSegs correctly. The first nameseg of 16277the NamePath was examined instead of the last NameSeg. 16278 16279 16280---------------------------------------- 16281 1628202 October 2002. Summary of changes for this release. 16283 16284 162851) ACPI CA Core Subsystem version 20021002: 16286 16287Fixed a problem where a store/copy of a string to an existing 16288string did not always set the string length properly in the String 16289object. 16290 16291Fixed a reported problem with the ToString operator where the 16292behavior was identical to the ToHexString operator instead of just 16293simply converting a raw buffer to a string data type. 16294 16295Fixed a problem where CopyObject and the other "explicit" 16296conversion operators were not updating the internal namespace node 16297type as part of the store operation. 16298 16299Fixed a memory leak during implicit source operand conversion 16300where the original object was not deleted if it was converted to a 16301new object of a different type. 16302 16303Enhanced error messages for all problems associated with namespace 16304lookups. Common procedure generates and prints the lookup name as 16305well as the formatted status. 16306 16307Completed implementation of a new design for the Alias support 16308within the namespace. The existing design did not handle the case 16309where a new object was assigned to one of the two names due to the 16310use of an explicit conversion operator, resulting in the two names 16311pointing to two different objects. The new design simply points 16312the Alias name to the original name node - not to the object. 16313This results in a level of indirection that must be handled in the 16314name resolution mechanism. 16315 16316Code and Data Size: Current core subsystem library sizes are shown 16317below. These are the code and data sizes for the acpica.lib 16318produced by the Microsoft Visual C++ 6.0 compiler, and these 16319values do not include any ACPI driver or OSPM code. The debug 16320version of the code includes the debug output trace mechanism and 16321has a larger code and data size. Note that these values will vary 16322depending on the efficiency of the compiler and the compiler 16323options used during generation. 16324 16325 Previous Release 16326 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16327 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16328 Current Release: 16329 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16330 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16331 16332 163332) Linux 16334 16335Initialize thermal driver's timer before it is used. (Knut 16336Neumann) 16337 16338Allow handling negative celsius values. (Kochi Takayoshi) 16339 16340Fix thermal management and make trip points. R/W (Pavel Machek) 16341 16342Fix /proc/acpi/sleep. (P. Christeas) 16343 16344IA64 fixes. (David Mosberger) 16345 16346Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 16347 16348Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 16349Brodowski) 16350 16351 163523) iASL Compiler/Disassembler 16353 16354Clarified some warning/error messages. 16355 16356 16357---------------------------------------- 1635818 September 2002. Summary of changes for this release. 16359 16360 163611) ACPI CA Core Subsystem version 20020918: 16362 16363Fixed a reported problem with reference chaining (via the Index() 16364and RefOf() operators) in the ObjectType() and SizeOf() operators. 16365The definition of these operators includes the dereferencing of 16366all chained references to return information on the base object. 16367 16368Fixed a problem with stores to indexed package elements - the 16369existing code would not complete the store if an "implicit 16370conversion" was not performed. In other words, if the existing 16371object (package element) was to be replaced completely, the code 16372didn't handle this case. 16373 16374Relaxed typechecking on the ASL "Scope" operator to allow the 16375target name to refer to an object of type Integer, String, or 16376Buffer, in addition to the scoping object types (Device, 16377predefined Scopes, Processor, PowerResource, and ThermalZone.) 16378This allows existing AML code that has workarounds for a bug in 16379Windows to function properly. A warning is issued, however. This 16380affects both the AML interpreter and the iASL compiler. Below is 16381an example of this type of ASL code: 16382 16383 Name(DEB,0x00) 16384 Scope(DEB) 16385 { 16386 16387Fixed some reported problems with 64-bit integer support in the 16388local implementation of C library functions (clib.c) 16389 16390 163912) Linux 16392 16393Use ACPI fix map region instead of IOAPIC region, since it is 16394undefined in non-SMP. 16395 16396Ensure that the SCI has the proper polarity and trigger, even on 16397systems that do not have an interrupt override entry in the MADT. 16398 163992.5 big driver reorganization (Pat Mochel) 16400 16401Use early table mapping code from acpitable.c (Andi Kleen) 16402 16403New blacklist entries (Andi Kleen) 16404 16405Blacklist improvements. Split blacklist code out into a separate 16406file. Move checking the blacklist to very early. Previously, we 16407would use ACPI tables, and then halfway through init, check the 16408blacklist -- too late. Now, it's early enough to completely fall- 16409back to non-ACPI. 16410 16411 164123) iASL Compiler/Disassembler version 20020918: 16413 16414Fixed a problem where the typechecking code didn't know that an 16415alias could point to a method. In other words, aliases were not 16416being dereferenced during typechecking. 16417 16418 16419---------------------------------------- 1642029 August 2002. Summary of changes for this release. 16421 164221) ACPI CA Core Subsystem Version 20020829: 16423 16424If the target of a Scope() operator already exists, it must be an 16425object type that actually opens a scope -- such as a Device, 16426Method, Scope, etc. This is a fatal runtime error. Similar error 16427check has been added to the iASL compiler also. 16428 16429Tightened up the namespace load to disallow multiple names in the 16430same scope. This previously was allowed if both objects were of 16431the same type. (i.e., a lookup was the same as entering a new 16432name). 16433 16434 164352) Linux 16436 16437Ensure that the ACPI interrupt has the proper trigger and 16438polarity. 16439 16440local_irq_disable is extraneous. (Matthew Wilcox) 16441 16442Make "acpi=off" actually do what it says, and not use the ACPI 16443interpreter *or* the tables. 16444 16445Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 16446Takayoshi) 16447 16448 164493) iASL Compiler/Disassembler Version 20020829: 16450 16451Implemented namepath optimization for name declarations. For 16452example, a declaration like "Method (\_SB_.ABCD)" would get 16453optimized to "Method (ABCD)" if the declaration is within the 16454\_SB_ scope. This optimization is in addition to the named 16455reference path optimization first released in the previous 16456version. This would seem to complete all possible optimizations 16457for namepaths within the ASL/AML. 16458 16459If the target of a Scope() operator already exists, it must be an 16460object type that actually opens a scope -- such as a Device, 16461Method, Scope, etc. 16462 16463Implemented a check and warning for unreachable code in the same 16464block below a Return() statement. 16465 16466Fixed a problem where the listing file was not generated if the 16467compiler aborted if the maximum error count was exceeded (200). 16468 16469Fixed a problem where the typechecking of method return values was 16470broken. This includes the check for a return value when the 16471method is invoked as a TermArg (a return value is expected.) 16472 16473Fixed a reported problem where EOF conditions during a quoted 16474string or comment caused a fault. 16475 16476 16477---------------------------------------- 1647815 August 2002. Summary of changes for this release. 16479 164801) ACPI CA Core Subsystem Version 20020815: 16481 16482Fixed a reported problem where a Store to a method argument that 16483contains a reference did not perform the indirect store correctly. 16484This problem was created during the conversion to the new 16485reference object model - the indirect store to a method argument 16486code was not updated to reflect the new model. 16487 16488Reworked the ACPI mode change code to better conform to ACPI 2.0, 16489handle corner cases, and improve code legibility (Kochi Takayoshi) 16490 16491Fixed a problem with the pathname parsing for the carat (^) 16492prefix. The heavy use of the carat operator by the new namepath 16493optimization in the iASL compiler uncovered a problem with the AML 16494interpreter handling of this prefix. In the case where one or 16495more carats precede a single nameseg, the nameseg was treated as 16496standalone and the search rule (to root) was inadvertently 16497applied. This could cause both the iASL compiler and the 16498interpreter to find the wrong object or to miss the error that 16499should occur if the object does not exist at that exact pathname. 16500 16501Found and fixed the problem where the HP Pavilion DSDT would not 16502load. This was a relatively minor tweak to the table loading code 16503(a problem caused by the unexpected encounter with a method 16504invocation not within a control method), but it does not solve the 16505overall issue of the execution of AML code at the table level. 16506This investigation is still ongoing. 16507 16508Code and Data Size: Current core subsystem library sizes are shown 16509below. These are the code and data sizes for the acpica.lib 16510produced by the Microsoft Visual C++ 6.0 compiler, and these 16511values do not include any ACPI driver or OSPM code. The debug 16512version of the code includes the debug output trace mechanism and 16513has a larger code and data size. Note that these values will vary 16514depending on the efficiency of the compiler and the compiler 16515options used during generation. 16516 16517 Previous Release 16518 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16519 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16520 Current Release: 16521 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16522 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16523 16524 165252) Linux 16526 16527Remove redundant slab.h include (Brad Hards) 16528 16529Fix several bugs in thermal.c (Herbert Nachtnebel) 16530 16531Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 16532 16533Change acpi_system_suspend to use updated irq functions (Pavel 16534Machek) 16535 16536Export acpi_get_firmware_table (Matthew Wilcox) 16537 16538Use proper root proc entry for ACPI (Kochi Takayoshi) 16539 16540Fix early-boot table parsing (Bjorn Helgaas) 16541 16542 165433) iASL Compiler/Disassembler 16544 16545Reworked the compiler options to make them more consistent and to 16546use two-letter options where appropriate. We were running out of 16547sensible letters. This may break some makefiles, so check the 16548current options list by invoking the compiler with no parameters. 16549 16550Completed the design and implementation of the ASL namepath 16551optimization option for the compiler. This option optimizes all 16552references to named objects to the shortest possible path. The 16553first attempt tries to utilize a single nameseg (4 characters) and 16554the "search-to-root" algorithm used by the interpreter. If that 16555cannot be used (because either the name is not in the search path 16556or there is a conflict with another object with the same name), 16557the pathname is optimized using the carat prefix (usually a 16558shorter string than specifying the entire path from the root.) 16559 16560Implemented support to obtain the DSDT from the Windows registry 16561(when the disassembly option is specified with no input file). 16562Added this code as the implementation for AcpiOsTableOverride in 16563the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 16564utility) to scan memory for the DSDT to the AcpiOsTableOverride 16565function in the DOS OSL to make the disassembler truly OS 16566independent. 16567 16568Implemented a new option to disassemble and compile in one step. 16569When used without an input filename, this option will grab the 16570DSDT from the local machine, disassemble it, and compile it in one 16571step. 16572 16573Added a warning message for invalid escapes (a backslash followed 16574by any character other than the allowable escapes). This catches 16575the quoted string error "\_SB_" (which should be "\\_SB_" ). 16576 16577Also, there are numerous instances in the ACPI specification where 16578this error occurs. 16579 16580Added a compiler option to disable all optimizations. This is 16581basically the "compatibility mode" because by using this option, 16582the AML code will come out exactly the same as other ASL 16583compilers. 16584 16585Added error messages for incorrectly ordered dependent resource 16586functions. This includes: missing EndDependentFn macro at end of 16587dependent resource list, nested dependent function macros (both 16588start and end), and missing StartDependentFn macro. These are 16589common errors that should be caught at compile time. 16590 16591Implemented _OSI support for the disassembler and compiler. _OSI 16592must be included in the namespace for proper disassembly (because 16593the disassembler must know the number of arguments.) 16594 16595Added an "optimization" message type that is optional (off by 16596default). This message is used for all optimizations - including 16597constant folding, integer optimization, and namepath optimization. 16598 16599---------------------------------------- 1660025 July 2002. Summary of changes for this release. 16601 16602 166031) ACPI CA Core Subsystem Version 20020725: 16604 16605The AML Disassembler has been enhanced to produce compilable ASL 16606code and has been integrated into the iASL compiler (see below) as 16607well as the single-step disassembly for the AML debugger and the 16608disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 16609resource templates and macros are fully supported. The 16610disassembler has been tested on over 30 different AML files, 16611producing identical AML when the resulting disassembled ASL file 16612is recompiled with the same ASL compiler. 16613 16614Modified the Resource Manager to allow zero interrupts and zero 16615dma channels during the GetCurrentResources call. This was 16616causing problems on some platforms. 16617 16618Added the AcpiOsRedirectOutput interface to the OSL to simplify 16619output redirection for the AcpiOsPrintf and AcpiOsVprintf 16620interfaces. 16621 16622Code and Data Size: Current core subsystem library sizes are shown 16623below. These are the code and data sizes for the acpica.lib 16624produced by the Microsoft Visual C++ 6.0 compiler, and these 16625values do not include any ACPI driver or OSPM code. The debug 16626version of the code includes the debug output trace mechanism and 16627has a larger code and data size. Note that these values will vary 16628depending on the efficiency of the compiler and the compiler 16629options used during generation. 16630 16631 Previous Release 16632 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16633 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16634 Current Release: 16635 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16636 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16637 16638 166392) Linux 16640 16641Fixed a panic in the EC driver (Dominik Brodowski) 16642 16643Implemented checksum of the R/XSDT itself during Linux table scan 16644(Richard Schaal) 16645 16646 166473) iASL compiler 16648 16649The AML disassembler is integrated into the compiler. The "-d" 16650option invokes the disassembler to completely disassemble an 16651input AML file, producing as output a text ASL file with the 16652extension ".dsl" (to avoid name collisions with existing .asl 16653source files.) A future enhancement will allow the disassembler 16654to obtain the BIOS DSDT from the registry under Windows. 16655 16656Fixed a problem with the VendorShort and VendorLong resource 16657descriptors where an invalid AML sequence was created. 16658 16659Implemented a fix for BufferData term in the ASL parser. It was 16660inadvertently defined twice, allowing invalid syntax to pass and 16661causing reduction conflicts. 16662 16663Fixed a problem where the Ones opcode could get converted to a 16664value of zero if "Ones" was used where a byte, word or dword value 16665was expected. The 64-bit value is now truncated to the correct 16666size with the correct value. 16667 16668 16669 16670---------------------------------------- 1667102 July 2002. Summary of changes for this release. 16672 16673 166741) ACPI CA Core Subsystem Version 20020702: 16675 16676The Table Manager code has been restructured to add several new 16677features. Tables that are not required by the core subsystem 16678(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 16679validated in any way and are returned from AcpiGetFirmwareTable if 16680requested. The AcpiOsTableOverride interface is now called for 16681each table that is loaded by the subsystem in order to allow the 16682host to override any table it chooses. Previously, only the DSDT 16683could be overridden. Added one new files, tbrsdt.c and 16684tbgetall.c. 16685 16686Fixed a problem with the conversion of internal package objects to 16687external objects (when a package is returned from a control 16688method.) The return buffer length was set to zero instead of the 16689proper length of the package object. 16690 16691Fixed a reported problem with the use of the RefOf and DeRefOf 16692operators when passing reference arguments to control methods. A 16693new type of Reference object is used internally for references 16694produced by the RefOf operator. 16695 16696Added additional error messages in the Resource Manager to explain 16697AE_BAD_DATA errors when they occur during resource parsing. 16698 16699Split the AcpiEnableSubsystem into two primitives to enable a 16700finer granularity initialization sequence. These two calls should 16701be called in this order: AcpiEnableSubsystem (flags), 16702AcpiInitializeObjects (flags). The flags parameter remains the 16703same. 16704 16705 167062) Linux 16707 16708Updated the ACPI utilities module to understand the new style of 16709fully resolved package objects that are now returned from the core 16710subsystem. This eliminates errors of the form: 16711 16712 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 16713 acpi_utils-0430 [145] acpi_evaluate_reference: 16714 Invalid element in package (not a device reference) 16715 16716The method evaluation utility uses the new buffer allocation 16717scheme instead of calling AcpiEvaluate Object twice. 16718 16719Added support for ECDT. This allows the use of the Embedded 16720 16721Controller before the namespace has been fully initialized, which 16722is necessary for ACPI 2.0 support, and for some laptops to 16723initialize properly. (Laptops using ECDT are still rare, so only 16724limited testing was performed of the added functionality.) 16725 16726Fixed memory leaks in the EC driver. 16727 16728Eliminated a brittle code structure in acpi_bus_init(). 16729 16730Eliminated the acpi_evaluate() helper function in utils.c. It is 16731no longer needed since acpi_evaluate_object can optionally 16732allocate memory for the return object. 16733 16734Implemented fix for keyboard hang when getting battery readings on 16735some systems (Stephen White) 16736 16737PCI IRQ routing update (Dominik Brodowski) 16738 16739Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 16740support 16741 16742---------------------------------------- 1674311 June 2002. Summary of changes for this release. 16744 16745 167461) ACPI CA Core Subsystem Version 20020611: 16747 16748Fixed a reported problem where constants such as Zero and One 16749appearing within _PRT packages were not handled correctly within 16750the resource manager code. Originally reported against the ASL 16751compiler because the code generator now optimizes integers to 16752their minimal AML representation (i.e. AML constants if possible.) 16753The _PRT code now handles all AML constant opcodes correctly 16754(Zero, One, Ones, Revision). 16755 16756Fixed a problem with the Concatenate operator in the AML 16757interpreter where a buffer result object was incorrectly marked as 16758not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 16759 16760All package sub-objects are now fully resolved before they are 16761returned from the external ACPI interfaces. This means that name 16762strings are resolved to object handles, and constant operators 16763(Zero, One, Ones, Revision) are resolved to Integers. 16764 16765Implemented immediate resolution of the AML Constant opcodes 16766(Zero, One, Ones, Revision) to Integer objects upon detection 16767within the AML stream. This has simplified and reduced the 16768generated code size of the subsystem by eliminating about 10 16769switch statements for these constants (which previously were 16770contained in Reference objects.) The complicating issues are that 16771the Zero opcode is used as a "placeholder" for unspecified 16772optional target operands and stores to constants are defined to be 16773no-ops. 16774 16775Code and Data Size: Current core subsystem library sizes are shown 16776below. These are the code and data sizes for the acpica.lib 16777produced by the Microsoft Visual C++ 6.0 compiler, and these 16778values do not include any ACPI driver or OSPM code. The debug 16779version of the code includes the debug output trace mechanism and 16780has a larger code and data size. Note that these values will vary 16781depending on the efficiency of the compiler and the compiler 16782options used during generation. 16783 16784 Previous Release 16785 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16786 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16787 Current Release: 16788 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16789 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16790 16791 167922) Linux 16793 16794 16795Added preliminary support for obtaining _TRA data for PCI root 16796bridges (Bjorn Helgaas). 16797 16798 167993) iASL Compiler Version X2046: 16800 16801Fixed a problem where the "_DDN" reserved name was defined to be a 16802control method with one argument. There are no arguments, and 16803_DDN does not have to be a control method. 16804 16805Fixed a problem with the Linux version of the compiler where the 16806source lines printed with error messages were the wrong lines. 16807This turned out to be the "LF versus CR/LF" difference between 16808Windows and Unix. This appears to be the longstanding issue 16809concerning listing output and error messages. 16810 16811Fixed a problem with the Linux version of compiler where opcode 16812names within error messages were wrong. This was caused by a 16813slight difference in the output of the Flex tool on Linux versus 16814Windows. 16815 16816Fixed a problem with the Linux compiler where the hex output files 16817contained some garbage data caused by an internal buffer overrun. 16818 16819 16820---------------------------------------- 1682117 May 2002. Summary of changes for this release. 16822 16823 168241) ACPI CA Core Subsystem Version 20020517: 16825 16826Implemented a workaround to an BIOS bug discovered on the HP 16827OmniBook where the FADT revision number and the table size are 16828inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 16829behavior is to fallback to using only the ACPI 1.0 fields of the 16830FADT if the table is too small to be a ACPI 2.0 table as claimed 16831by the revision number. Although this is a BIOS bug, this is a 16832case where the workaround is simple enough and with no side 16833effects, so it seemed prudent to add it. A warning message is 16834issued, however. 16835 16836Implemented minimum size checks for the fixed-length ACPI tables - 16837- the FADT and FACS, as well as consistency checks between the 16838revision number and the table size. 16839 16840Fixed a reported problem in the table override support where the 16841new table pointer was incorrectly treated as a physical address 16842instead of a logical address. 16843 16844Eliminated the use of the AE_AML_ERROR exception and replaced it 16845with more descriptive codes. 16846 16847Fixed a problem where an exception would occur if an ASL Field was 16848defined with no named Field Units underneath it (used by some 16849index fields). 16850 16851Code and Data Size: Current core subsystem library sizes are shown 16852below. These are the code and data sizes for the acpica.lib 16853produced by the Microsoft Visual C++ 6.0 compiler, and these 16854values do not include any ACPI driver or OSPM code. The debug 16855version of the code includes the debug output trace mechanism and 16856has a larger code and data size. Note that these values will vary 16857depending on the efficiency of the compiler and the compiler 16858options used during generation. 16859 16860 Previous Release 16861 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16862 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16863 Current Release: 16864 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16865 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16866 16867 16868 168692) Linux 16870 16871Much work done on ACPI init (MADT and PCI IRQ routing support). 16872(Paul D. and Dominik Brodowski) 16873 16874Fix PCI IRQ-related panic on boot (Sam Revitch) 16875 16876Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 16877 16878Fix "MHz" typo (Dominik Brodowski) 16879 16880Fix RTC year 2000 issue (Dominik Brodowski) 16881 16882Preclude multiple button proc entries (Eric Brunet) 16883 16884Moved arch-specific code out of include/platform/aclinux.h 16885 168863) iASL Compiler Version X2044: 16887 16888Implemented error checking for the string used in the EISAID macro 16889(Usually used in the definition of the _HID object.) The code now 16890strictly enforces the PnP format - exactly 7 characters, 3 16891uppercase letters and 4 hex digits. 16892 16893If a raw string is used in the definition of the _HID object 16894(instead of the EISAID macro), the string must contain all 16895alphanumeric characters (e.g., "*PNP0011" is not allowed because 16896of the asterisk.) 16897 16898Implemented checking for invalid use of ACPI reserved names for 16899most of the name creation operators (Name, Device, Event, Mutex, 16900OperationRegion, PowerResource, Processor, and ThermalZone.) 16901Previously, this check was only performed for control methods. 16902 16903Implemented an additional check on the Name operator to emit an 16904error if a reserved name that must be implemented in ASL as a 16905control method is used. We know that a reserved name must be a 16906method if it is defined with input arguments. 16907 16908The warning emitted when a namespace object reference is not found 16909during the cross reference phase has been changed into an error. 16910The "External" directive should be used for names defined in other 16911modules. 16912 16913 169144) Tools and Utilities 16915 16916The 16-bit tools (adump16 and aexec16) have been regenerated and 16917tested. 16918 16919Fixed a problem with the output of both acpidump and adump16 where 16920the indentation of closing parentheses and brackets was not 16921 16922aligned properly with the parent block. 16923 16924 16925---------------------------------------- 1692603 May 2002. Summary of changes for this release. 16927 16928 169291) ACPI CA Core Subsystem Version 20020503: 16930 16931Added support a new OSL interface that allows the host operating 16932 16933system software to override the DSDT found in the firmware - 16934AcpiOsTableOverride. With this interface, the OSL can examine the 16935version of the firmware DSDT and replace it with a different one 16936if desired. 16937 16938Added new external interfaces for accessing ACPI registers from 16939device drivers and other system software - AcpiGetRegister and 16940AcpiSetRegister. This was simply an externalization of the 16941existing AcpiHwBitRegister interfaces. 16942 16943Fixed a regression introduced in the previous build where the 16944ASL/AML CreateField operator always returned an error, 16945"destination must be a NS Node". 16946 16947Extended the maximum time (before failure) to successfully enable 16948ACPI mode to 3 seconds. 16949 16950Code and Data Size: Current core subsystem library sizes are shown 16951below. These are the code and data sizes for the acpica.lib 16952produced by the Microsoft Visual C++ 6.0 compiler, and these 16953values do not include any ACPI driver or OSPM code. The debug 16954version of the code includes the debug output trace mechanism and 16955has a larger code and data size. Note that these values will vary 16956depending on the efficiency of the compiler and the compiler 16957options used during generation. 16958 16959 Previous Release 16960 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16961 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16962 Current Release: 16963 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16964 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16965 16966 169672) Linux 16968 16969Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 16970free. While 3 out of 4 of our in-house systems work fine, the last 16971one still hangs when testing the LAPIC timer. 16972 16973Renamed many files in 2.5 kernel release to omit "acpi_" from the 16974name. 16975 16976Added warning on boot for Presario 711FR. 16977 16978Sleep improvements (Pavel Machek) 16979 16980ACPI can now be built without CONFIG_PCI enabled. 16981 16982IA64: Fixed memory map functions (JI Lee) 16983 16984 169853) iASL Compiler Version X2043: 16986 16987Added support to allow the compiler to be integrated into the MS 16988VC++ development environment for one-button compilation of single 16989files or entire projects -- with error-to-source-line mapping. 16990 16991Implemented support for compile-time constant folding for the 16992Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 16993specification. This allows the ASL writer to use expressions 16994instead of Integer/Buffer/String constants in terms that must 16995evaluate to constants at compile time and will also simplify the 16996emitted AML in any such sub-expressions that can be folded 16997(evaluated at compile-time.) This increases the size of the 16998compiler significantly because a portion of the ACPI CA AML 16999interpreter is included within the compiler in order to pre- 17000evaluate constant expressions. 17001 17002 17003Fixed a problem with the "Unicode" ASL macro that caused the 17004compiler to fault. (This macro is used in conjunction with the 17005_STR reserved name.) 17006 17007Implemented an AML opcode optimization to use the Zero, One, and 17008Ones opcodes where possible to further reduce the size of integer 17009constants and thus reduce the overall size of the generated AML 17010code. 17011 17012Implemented error checking for new reserved terms for ACPI version 170132.0A. 17014 17015Implemented the -qr option to display the current list of ACPI 17016reserved names known to the compiler. 17017 17018Implemented the -qc option to display the current list of ASL 17019operators that are allowed within constant expressions and can 17020therefore be folded at compile time if the operands are constants. 17021 17022 170234) Documentation 17024 17025Updated the Programmer's Reference for new interfaces, data types, 17026and memory allocation model options. 17027 17028Updated the iASL Compiler User Reference to apply new format and 17029add information about new features and options. 17030 17031---------------------------------------- 1703219 April 2002. Summary of changes for this release. 17033 170341) ACPI CA Core Subsystem Version 20020419: 17035 17036The source code base for the Core Subsystem has been completely 17037cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17038versions. The Lint option files used are included in the 17039/acpi/generate/lint directory. 17040 17041Implemented enhanced status/error checking across the entire 17042Hardware manager subsystem. Any hardware errors (reported from 17043the OSL) are now bubbled up and will abort a running control 17044method. 17045 17046 17047Fixed a problem where the per-ACPI-table integer width (32 or 64) 17048was stored only with control method nodes, causing a fault when 17049non-control method code was executed during table loading. The 17050solution implemented uses a global variable to indicate table 17051width across the entire ACPI subsystem. Therefore, ACPI CA does 17052not support mixed integer widths across different ACPI tables 17053(DSDT, SSDT). 17054 17055Fixed a problem where NULL extended fields (X fields) in an ACPI 170562.0 ACPI FADT caused the table load to fail. Although the 17057existing ACPI specification is a bit fuzzy on this topic, the new 17058behavior is to fall back on a ACPI 1.0 field if the corresponding 17059ACPI 2.0 X field is zero (even though the table revision indicates 17060a full ACPI 2.0 table.) The ACPI specification will be updated to 17061clarify this issue. 17062 17063Fixed a problem with the SystemMemory operation region handler 17064where memory was always accessed byte-wise even if the AML- 17065specified access width was larger than a byte. This caused 17066problems on systems with memory-mapped I/O. Memory is now 17067accessed with the width specified. On systems that do not support 17068non-aligned transfers, a check is made to guarantee proper address 17069alignment before proceeding in order to avoid an AML-caused 17070alignment fault within the kernel. 17071 17072 17073Fixed a problem with the ExtendedIrq resource where only one byte 17074of the 4-byte Irq field was extracted. 17075 17076Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17077function was out of date and required a rewrite. 17078 17079Code and Data Size: Current core subsystem library sizes are shown 17080below. These are the code and data sizes for the acpica.lib 17081produced by the Microsoft Visual C++ 6.0 compiler, and these 17082values do not include any ACPI driver or OSPM code. The debug 17083version of the code includes the debug output trace mechanism and 17084has a larger code and data size. Note that these values will vary 17085depending on the efficiency of the compiler and the compiler 17086options used during generation. 17087 17088 Previous Release 17089 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17090 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17091 Current Release: 17092 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17093 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17094 17095 170962) Linux 17097 17098PCI IRQ routing fixes (Dominik Brodowski) 17099 17100 171013) iASL Compiler Version X2042: 17102 17103Implemented an additional compile-time error check for a field 17104unit whose size + minimum access width would cause a run-time 17105access beyond the end-of-region. Previously, only the field size 17106itself was checked. 17107 17108The Core subsystem and iASL compiler now share a common parse 17109object in preparation for compile-time evaluation of the type 171103/4/5 ASL operators. 17111 17112 17113---------------------------------------- 17114Summary of changes for this release: 03_29_02 17115 171161) ACPI CA Core Subsystem Version 20020329: 17117 17118Implemented support for late evaluation of TermArg operands to 17119Buffer and Package objects. This allows complex expressions to be 17120used in the declarations of these object types. 17121 17122Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 171231.0, if the field was larger than 32 bits, it was returned as a 17124buffer - otherwise it was returned as an integer. In ACPI 2.0, 17125the field is returned as a buffer only if the field is larger than 1712664 bits. The TableRevision is now considered when making this 17127conversion to avoid incompatibility with existing ASL code. 17128 17129Implemented logical addressing for AcpiOsGetRootPointer. This 17130allows an RSDP with either a logical or physical address. With 17131this support, the host OS can now override all ACPI tables with 17132one logical RSDP. Includes implementation of "typed" pointer 17133support to allow a common data type for both physical and logical 17134pointers internally. This required a change to the 17135AcpiOsGetRootPointer interface. 17136 17137Implemented the use of ACPI 2.0 Generic Address Structures for all 17138GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 17139mapped I/O for these ACPI features. 17140 17141Initialization now ignores not only non-required tables (All 17142tables other than the FADT, FACS, DSDT, and SSDTs), but also does 17143not validate the table headers of unrecognized tables. 17144 17145Fixed a problem where a notify handler could only be 17146installed/removed on an object of type Device. All "notify" 17147 17148objects are now supported -- Devices, Processor, Power, and 17149Thermal. 17150 17151Removed most verbosity from the ACPI_DB_INFO debug level. Only 17152critical information is returned when this debug level is enabled. 17153 17154Code and Data Size: Current core subsystem library sizes are shown 17155below. These are the code and data sizes for the acpica.lib 17156produced by the Microsoft Visual C++ 6.0 compiler, and these 17157values do not include any ACPI driver or OSPM code. The debug 17158version of the code includes the debug output trace mechanism and 17159has a larger code and data size. Note that these values will vary 17160depending on the efficiency of the compiler and the compiler 17161options used during generation. 17162 17163 Previous Release 17164 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17165 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17166 Current Release: 17167 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17168 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17169 17170 171712) Linux: 17172 17173The processor driver (acpi_processor.c) now fully supports ACPI 171742.0-based processor performance control (e.g. Intel(R) 17175SpeedStep(TM) technology) Note that older laptops that only have 17176the Intel "applet" interface are not supported through this. The 17177'limit' and 'performance' interface (/proc) are fully functional. 17178[Note that basic policy for controlling performance state 17179transitions will be included in the next version of ospmd.] The 17180idle handler was modified to more aggressively use C2, and PIIX4 17181errata handling underwent a complete overhaul (big thanks to 17182Dominik Brodowski). 17183 17184Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 17185based devices in the ACPI namespace are now dynamically bound 17186(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 17187This allows, among other things, ACPI to resolve bus numbers for 17188subordinate PCI bridges. 17189 17190Enhanced PCI IRQ routing to get the proper bus number for _PRT 17191entries defined underneath PCI bridges. 17192 17193Added IBM 600E to bad bios list due to invalid _ADR value for 17194PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 17195 17196In the process of adding full MADT support (e.g. IOAPIC) for IA32 17197(acpi.c, mpparse.c) -- stay tuned. 17198 17199Added back visual differentiation between fixed-feature and 17200control-method buttons in dmesg. Buttons are also subtyped (e.g. 17201button/power/PWRF) to simplify button identification. 17202 17203We no longer use -Wno-unused when compiling debug. Please ignore 17204any "_THIS_MODULE defined but not used" messages. 17205 17206Can now shut down the system using "magic sysrq" key. 17207 17208 172093) iASL Compiler version 2041: 17210 17211Fixed a problem where conversion errors for hex/octal/decimal 17212constants were not reported. 17213 17214Implemented a fix for the General Register template Address field. 17215This field was 8 bits when it should be 64. 17216 17217Fixed a problem where errors/warnings were no longer being emitted 17218within the listing output file. 17219 17220Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 17221exactly 4 characters, alphanumeric only. 17222 17223 17224 17225 17226---------------------------------------- 17227Summary of changes for this release: 03_08_02 17228 17229 172301) ACPI CA Core Subsystem Version 20020308: 17231 17232Fixed a problem with AML Fields where the use of the "AccessAny" 17233keyword could cause an interpreter error due to attempting to read 17234or write beyond the end of the parent Operation Region. 17235 17236Fixed a problem in the SystemMemory Operation Region handler where 17237an attempt was made to map memory beyond the end of the region. 17238This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 17239errors on some Linux systems. 17240 17241Fixed a problem where the interpreter/namespace "search to root" 17242algorithm was not functioning for some object types. Relaxed the 17243internal restriction on the search to allow upsearches for all 17244external object types as well as most internal types. 17245 17246 172472) Linux: 17248 17249We now use safe_halt() macro versus individual calls to sti | hlt. 17250 17251Writing to the processor limit interface should now work. "echo 1" 17252will increase the limit, 2 will decrease, and 0 will reset to the 17253 17254default. 17255 17256 172573) ASL compiler: 17258 17259Fixed segfault on Linux version. 17260 17261 17262---------------------------------------- 17263Summary of changes for this release: 02_25_02 17264 172651) ACPI CA Core Subsystem: 17266 17267 17268Fixed a problem where the GPE bit masks were not initialized 17269properly, causing erratic GPE behavior. 17270 17271Implemented limited support for multiple calling conventions. The 17272code can be generated with either the VPL (variable parameter 17273list, or "C") convention, or the FPL (fixed parameter list, or 17274"Pascal") convention. The core subsystem is about 3.4% smaller 17275when generated with FPL. 17276 17277 172782) Linux 17279 17280Re-add some /proc/acpi/event functionality that was lost during 17281the rewrite 17282 17283Resolved issue with /proc events for fixed-feature buttons showing 17284up as the system device. 17285 17286Fixed checks on C2/C3 latencies to be inclusive of maximum values. 17287 17288Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 17289 17290Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 17291 17292Fixed limit interface & usage to fix bugs with passive cooling 17293hysterisis. 17294 17295Restructured PRT support. 17296 17297 17298---------------------------------------- 17299Summary of changes for this label: 02_14_02 17300 17301 173021) ACPI CA Core Subsystem: 17303 17304Implemented support in AcpiLoadTable to allow loading of FACS and 17305FADT tables. 17306 17307Support for the now-obsolete interim 0.71 64-bit ACPI tables has 17308been removed. All 64-bit platforms should be migrated to the ACPI 173092.0 tables. The actbl71.h header has been removed from the source 17310tree. 17311 17312All C macros defined within the subsystem have been prefixed with 17313"ACPI_" to avoid collision with other system include files. 17314 17315Removed the return value for the two AcpiOsPrint interfaces, since 17316it is never used and causes lint warnings for ignoring the return 17317value. 17318 17319Added error checking to all internal mutex acquire and release 17320calls. Although a failure from one of these interfaces is 17321probably a fatal system error, these checks will cause the 17322immediate abort of the currently executing method or interface. 17323 17324Fixed a problem where the AcpiSetCurrentResources interface could 17325fault. This was a side effect of the deployment of the new memory 17326allocation model. 17327 17328Fixed a couple of problems with the Global Lock support introduced 17329in the last major build. The "common" (1.0/2.0) internal FACS was 17330being overwritten with the FACS signature and clobbering the 17331Global Lock pointer. Also, the actual firmware FACS was being 17332unmapped after construction of the "common" FACS, preventing 17333access to the actual Global Lock field within it. The "common" 17334internal FACS is no longer installed as an actual ACPI table; it 17335is used simply as a global. 17336 17337Code and Data Size: Current core subsystem library sizes are shown 17338below. These are the code and data sizes for the acpica.lib 17339produced by the Microsoft Visual C++ 6.0 compiler, and these 17340values do not include any ACPI driver or OSPM code. The debug 17341version of the code includes the debug output trace mechanism and 17342has a larger code and data size. Note that these values will vary 17343depending on the efficiency of the compiler and the compiler 17344options used during generation. 17345 17346 Previous Release (02_07_01) 17347 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17348 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17349 Current Release: 17350 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17351 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17352 17353 173542) Linux 17355 17356Updated Linux-specific code for core macro and OSL interface 17357changes described above. 17358 17359Improved /proc/acpi/event. It now can be opened only once and has 17360proper poll functionality. 17361 17362Fixed and restructured power management (acpi_bus). 17363 17364Only create /proc "view by type" when devices of that class exist. 17365 17366Fixed "charging/discharging" bug (and others) in acpi_battery. 17367 17368Improved thermal zone code. 17369 17370 173713) ASL Compiler, version X2039: 17372 17373 17374Implemented the new compiler restriction on ASL String hex/octal 17375escapes to non-null, ASCII values. An error results if an invalid 17376value is used. (This will require an ACPI 2.0 specification 17377change.) 17378 17379AML object labels that are output to the optional C and ASM source 17380are now prefixed with both the ACPI table signature and table ID 17381to help guarantee uniqueness within a large BIOS project. 17382 17383 17384---------------------------------------- 17385Summary of changes for this label: 02_01_02 17386 173871) ACPI CA Core Subsystem: 17388 17389ACPI 2.0 support is complete in the entire Core Subsystem and the 17390ASL compiler. All new ACPI 2.0 operators are implemented and all 17391other changes for ACPI 2.0 support are complete. With 17392simultaneous code and data optimizations throughout the subsystem, 17393ACPI 2.0 support has been implemented with almost no additional 17394cost in terms of code and data size. 17395 17396Implemented a new mechanism for allocation of return buffers. If 17397the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 17398be allocated on behalf of the caller. Consolidated all return 17399buffer validation and allocation to a common procedure. Return 17400buffers will be allocated via the primary OSL allocation interface 17401since it appears that a separate pool is not needed by most users. 17402If a separate pool is required for these buffers, the caller can 17403still use the original mechanism and pre-allocate the buffer(s). 17404 17405Implemented support for string operands within the DerefOf 17406operator. 17407 17408Restructured the Hardware and Event managers to be table driven, 17409simplifying the source code and reducing the amount of generated 17410code. 17411 17412Split the common read/write low-level ACPI register bitfield 17413procedure into a separate read and write, simplifying the code 17414considerably. 17415 17416Obsoleted the AcpiOsCallocate OSL interface. This interface was 17417used only a handful of times and didn't have enough critical mass 17418for a separate interface. Replaced with a common calloc procedure 17419in the core. 17420 17421Fixed a reported problem with the GPE number mapping mechanism 17422that allows GPE1 numbers to be non-contiguous with GPE0. 17423Reorganized the GPE information and shrunk a large array that was 17424originally large enough to hold info for all possible GPEs (256) 17425to simply large enough to hold all GPEs up to the largest GPE 17426number on the machine. 17427 17428Fixed a reported problem with resource structure alignment on 64- 17429bit platforms. 17430 17431Changed the AcpiEnableEvent and AcpiDisableEvent external 17432interfaces to not require any flags for the common case of 17433enabling/disabling a GPE. 17434 17435Implemented support to allow a "Notify" on a Processor object. 17436 17437Most TBDs in comments within the source code have been resolved 17438and eliminated. 17439 17440 17441Fixed a problem in the interpreter where a standalone parent 17442prefix (^) was not handled correctly in the interpreter and 17443debugger. 17444 17445Removed obsolete and unnecessary GPE save/restore code. 17446 17447Implemented Field support in the ASL Load operator. This allows a 17448table to be loaded from a named field, in addition to loading a 17449table directly from an Operation Region. 17450 17451Implemented timeout and handle support in the external Global Lock 17452interfaces. 17453 17454Fixed a problem in the AcpiDump utility where pathnames were no 17455longer being generated correctly during the dump of named objects. 17456 17457Modified the AML debugger to give a full display of if/while 17458predicates instead of just one AML opcode at a time. (The 17459predicate can have several nested ASL statements.) The old method 17460was confusing during single stepping. 17461 17462Code and Data Size: Current core subsystem library sizes are shown 17463below. These are the code and data sizes for the acpica.lib 17464produced by the Microsoft Visual C++ 6.0 compiler, and these 17465values do not include any ACPI driver or OSPM code. The debug 17466version of the code includes the debug output trace mechanism and 17467has a larger code and data size. Note that these values will vary 17468depending on the efficiency of the compiler and the compiler 17469options used during generation. 17470 17471 Previous Release (12_18_01) 17472 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17473 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17474 Current Release: 17475 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17476 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17477 174782) Linux 17479 17480 Implemented fix for PIIX reverse throttling errata (Processor 17481driver) 17482 17483Added new Limit interface (Processor and Thermal drivers) 17484 17485New thermal policy (Thermal driver) 17486 17487Many updates to /proc 17488 17489Battery "low" event support (Battery driver) 17490 17491Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 17492 17493IA32 - IA64 initialization unification, no longer experimental 17494 17495Menuconfig options redesigned 17496 174973) ASL Compiler, version X2037: 17498 17499Implemented several new output features to simplify integration of 17500AML code into firmware: 1) Output the AML in C source code with 17501labels for each named ASL object. The original ASL source code 17502is interleaved as C comments. 2) Output the AML in ASM source code 17503with labels and interleaved ASL source. 3) Output the AML in 17504raw hex table form, in either C or ASM. 17505 17506Implemented support for optional string parameters to the 17507LoadTable operator. 17508 17509Completed support for embedded escape sequences within string 17510literals. The compiler now supports all single character escapes 17511as well as the Octal and Hex escapes. Note: the insertion of a 17512null byte into a string literal (via the hex/octal escape) causes 17513the string to be immediately terminated. A warning is issued. 17514 17515Fixed a problem where incorrect AML was generated for the case 17516where an ASL namepath consists of a single parent prefix ( 17517 17518) with no trailing name segments. 17519 17520The compiler has been successfully generated with a 64-bit C 17521compiler. 17522 17523 17524 17525 17526---------------------------------------- 17527Summary of changes for this label: 12_18_01 17528 175291) Linux 17530 17531Enhanced blacklist with reason and severity fields. Any table's 17532signature may now be used to identify a blacklisted system. 17533 17534Call _PIC control method to inform the firmware which interrupt 17535model the OS is using. Turn on any disabled link devices. 17536 17537Cleaned up busmgr /proc error handling (Andreas Dilger) 17538 17539 2) ACPI CA Core Subsystem: 17540 17541Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 17542while loop) 17543 17544Completed implementation of the ACPI 2.0 "Continue", 17545"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 17546operators. All new ACPI 2.0 operators are now implemented in both 17547the ASL compiler and the AML interpreter. The only remaining ACPI 175482.0 task is support for the String data type in the DerefOf 17549operator. Fixed a problem with AcquireMutex where the status code 17550was lost if the caller had to actually wait for the mutex. 17551 17552Increased the maximum ASL Field size from 64K bits to 4G bits. 17553 17554Completed implementation of the external Global Lock interfaces -- 17555AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 17556Handler parameters were added. 17557 17558Completed another pass at removing warnings and issues when 17559compiling with 64-bit compilers. The code now compiles cleanly 17560with the Intel 64-bit C/C++ compiler. Most notably, the pointer 17561add and subtract (diff) macros have changed considerably. 17562 17563 17564Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1756564-bit platforms, 32-bits on all others. This type is used 17566wherever memory allocation and/or the C sizeof() operator is used, 17567and affects the OSL memory allocation interfaces AcpiOsAllocate 17568and AcpiOsCallocate. 17569 17570Implemented sticky user breakpoints in the AML debugger. 17571 17572Code and Data Size: Current core subsystem library sizes are shown 17573below. These are the code and data sizes for the acpica.lib 17574produced by the Microsoft Visual C++ 6.0 compiler, and these 17575values do not include any ACPI driver or OSPM code. The debug 17576version of the code includes the debug output trace mechanism and 17577has a larger code and data size. Note that these values will vary 17578depending on the efficiency of the compiler and the compiler 17579options used during generation. 17580 17581 Previous Release (12_05_01) 17582 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17583 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17584 Current Release: 17585 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17586 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17587 17588 3) ASL Compiler, version X2034: 17589 17590Now checks for (and generates an error if detected) the use of a 17591Break or Continue statement without an enclosing While statement. 17592 17593 17594Successfully generated the compiler with the Intel 64-bit C 17595compiler. 17596 17597 ---------------------------------------- 17598Summary of changes for this label: 12_05_01 17599 17600 1) ACPI CA Core Subsystem: 17601 17602The ACPI 2.0 CopyObject operator is fully implemented. This 17603operator creates a new copy of an object (and is also used to 17604bypass the "implicit conversion" mechanism of the Store operator.) 17605 17606The ACPI 2.0 semantics for the SizeOf operator are fully 17607implemented. The change is that performing a SizeOf on a 17608reference object causes an automatic dereference of the object to 17609tha actual value before the size is evaluated. This behavior was 17610undefined in ACPI 1.0. 17611 17612The ACPI 2.0 semantics for the Extended IRQ resource descriptor 17613have been implemented. The interrupt polarity and mode are now 17614independently set. 17615 17616Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 17617appearing in Package objects were not properly converted to 17618integers when the internal Package was converted to an external 17619object (via the AcpiEvaluateObject interface.) 17620 17621Fixed a problem with the namespace object deletion mechanism for 17622objects created by control methods. There were two parts to this 17623problem: 1) Objects created during the initialization phase method 17624parse were not being deleted, and 2) The object owner ID mechanism 17625to track objects was broken. 17626 17627Fixed a problem where the use of the ASL Scope operator within a 17628control method would result in an invalid opcode exception. 17629 17630Fixed a problem introduced in the previous label where the buffer 17631length required for the _PRT structure was not being returned 17632correctly. 17633 17634Code and Data Size: Current core subsystem library sizes are shown 17635below. These are the code and data sizes for the acpica.lib 17636produced by the Microsoft Visual C++ 6.0 compiler, and these 17637values do not include any ACPI driver or OSPM code. The debug 17638version of the code includes the debug output trace mechanism and 17639has a larger code and data size. Note that these values will vary 17640depending on the efficiency of the compiler and the compiler 17641options used during generation. 17642 17643 Previous Release (11_20_01) 17644 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17645 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17646 17647 Current Release: 17648 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17649 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17650 17651 2) Linux: 17652 17653Updated all files to apply cleanly against 2.4.16. 17654 17655Added basic PCI Interrupt Routing Table (PRT) support for IA32 17656(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 17657version supports both static and dynamic PRT entries, but dynamic 17658entries are treated as if they were static (not yet 17659reconfigurable). Architecture- specific code to use this data is 17660absent on IA32 but should be available shortly. 17661 17662Changed the initialization sequence to start the ACPI interpreter 17663(acpi_init) prior to initialization of the PCI driver (pci_init) 17664in init/main.c. This ordering is required to support PRT and 17665facilitate other (future) enhancement. A side effect is that the 17666ACPI bus driver and certain device drivers can no longer be loaded 17667as modules. 17668 17669Modified the 'make menuconfig' options to allow PCI Interrupt 17670Routing support to be included without the ACPI Bus and other 17671device drivers. 17672 17673 3) ASL Compiler, version X2033: 17674 17675Fixed some issues with the use of the new CopyObject and 17676DataTableRegion operators. Both are fully functional. 17677 17678 ---------------------------------------- 17679Summary of changes for this label: 11_20_01 17680 17681 20 November 2001. Summary of changes for this release. 17682 17683 1) ACPI CA Core Subsystem: 17684 17685Updated Index support to match ACPI 2.0 semantics. Storing a 17686Integer, String, or Buffer to an Index of a Buffer will store only 17687the least-significant byte of the source to the Indexed buffer 17688byte. Multiple writes are not performed. 17689 17690Fixed a problem where the access type used in an AccessAs ASL 17691operator was not recorded correctly into the field object. 17692 17693Fixed a problem where ASL Event objects were created in a 17694signalled state. Events are now created in an unsignalled state. 17695 17696The internal object cache is now purged after table loading and 17697initialization to reduce the use of dynamic kernel memory -- on 17698the assumption that object use is greatest during the parse phase 17699of the entire table (versus the run-time use of individual control 17700methods.) 17701 17702ACPI 2.0 variable-length packages are now fully operational. 17703 17704Code and Data Size: Code and Data optimizations have permitted new 17705feature development with an actual reduction in the library size. 17706Current core subsystem library sizes are shown below. These are 17707the code and data sizes for the acpica.lib produced by the 17708Microsoft Visual C++ 6.0 compiler, and these values do not include 17709any ACPI driver or OSPM code. The debug version of the code 17710includes the debug output trace mechanism and has a larger code 17711and data size. Note that these values will vary depending on the 17712efficiency of the compiler and the compiler options used during 17713generation. 17714 17715 Previous Release (11_09_01): 17716 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17717 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17718 17719 Current Release: 17720 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17721 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17722 17723 2) Linux: 17724 17725Enhanced the ACPI boot-time initialization code to allow the use 17726of Local APIC tables for processor enumeration on IA-32, and to 17727pave the way for a fully MPS-free boot (on SMP systems) in the 17728near future. This functionality replaces 17729arch/i386/kernel/acpitables.c, which was introduced in an earlier 177302.4.15-preX release. To enable this feature you must add 17731"acpi_boot=on" to the kernel command line -- see the help entry 17732for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 17733the works... 17734 17735Restructured the configuration options to allow boot-time table 17736parsing support without inclusion of the ACPI Interpreter (and 17737other) code. 17738 17739NOTE: This release does not include fixes for the reported events, 17740power-down, and thermal passive cooling issues (coming soon). 17741 17742 3) ASL Compiler: 17743 17744Added additional typechecking for Fields within restricted access 17745Operation Regions. All fields within EC and CMOS regions must be 17746declared with ByteAcc. All fields within SMBus regions must be 17747declared with the BufferAcc access type. 17748 17749Fixed a problem where the listing file output of control methods 17750no longer interleaved the actual AML code with the ASL source 17751code. 17752 17753 17754 17755 17756---------------------------------------- 17757Summary of changes for this label: 11_09_01 17758 177591) ACPI CA Core Subsystem: 17760 17761Implemented ACPI 2.0-defined support for writes to fields with a 17762Buffer, String, or Integer source operand that is smaller than the 17763target field. In these cases, the source operand is zero-extended 17764to fill the target field. 17765 17766Fixed a problem where a Field starting bit offset (within the 17767parent operation region) was calculated incorrectly if the 17768 17769alignment of the field differed from the access width. This 17770affected CreateWordField, CreateDwordField, CreateQwordField, and 17771possibly other fields that use the "AccessAny" keyword. 17772 17773Fixed a problem introduced in the 11_02_01 release where indirect 17774stores through method arguments did not operate correctly. 17775 177762) Linux: 17777 17778Implemented boot-time ACPI table parsing support 17779(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 17780facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 17781legacy BIOS interfaces (e.g. MPS) for the configuration of system 17782processors, memory, and interrupts during setup_arch(). Note that 17783this patch does not include the required architecture-specific 17784changes required to apply this information -- subsequent patches 17785will be posted for both IA32 and IA64 to achieve this. 17786 17787Added low-level sleep support for IA32 platforms, courtesy of Pat 17788Mochel. This allows IA32 systems to transition to/from various 17789sleeping states (e.g. S1, S3), although the lack of a centralized 17790driver model and power-manageable drivers will prevent its 17791(successful) use on most systems. 17792 17793Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 17794submenu, unified IA32 and IA64 options, added new "Boot using ACPI 17795tables" option, etc. 17796 17797Increased the default timeout for the EC driver from 1ms to 10ms 17798(1000 cycles of 10us) to try to address AE_TIME errors during EC 17799transactions. 17800 17801 ---------------------------------------- 17802Summary of changes for this label: 11_02_01 17803 178041) ACPI CA Core Subsystem: 17805 17806ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 17807(QWordAcc keyword). All ACPI 2.0 64-bit support is now 17808implemented. 17809 17810OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 17811changes to support ACPI 2.0 Qword field access. Read/Write 17812PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 17813accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 17814the value parameter for the address space handler interface is now 17815an ACPI_INTEGER. OSL implementations of these interfaces must now 17816handle the case where the Width parameter is 64. 17817 17818Index Fields: Fixed a problem where unaligned bit assembly and 17819disassembly for IndexFields was not supported correctly. 17820 17821Index and Bank Fields: Nested Index and Bank Fields are now 17822supported. During field access, a check is performed to ensure 17823that the value written to an Index or Bank register is not out of 17824the range of the register. The Index (or Bank) register is 17825written before each access to the field data. Future support will 17826include allowing individual IndexFields to be wider than the 17827DataRegister width. 17828 17829Fields: Fixed a problem where the AML interpreter was incorrectly 17830attempting to write beyond the end of a Field/OpRegion. This was 17831a boundary case that occurred when a DWORD field was written to a 17832BYTE access OpRegion, forcing multiple writes and causing the 17833interpreter to write one datum too many. 17834 17835Fields: Fixed a problem with Field/OpRegion access where the 17836starting bit address of a field was incorrectly calculated if the 17837current access type was wider than a byte (WordAcc, DwordAcc, or 17838QwordAcc). 17839 17840Fields: Fixed a problem where forward references to individual 17841FieldUnits (individual Field names within a Field definition) were 17842not resolved during the AML table load. 17843 17844Fields: Fixed a problem where forward references from a Field 17845definition to the parent Operation Region definition were not 17846resolved during the AML table load. 17847 17848Fields: Duplicate FieldUnit names within a scope are now detected 17849during AML table load. 17850 17851Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 17852returned an incorrect name for the root node. 17853 17854Code and Data Size: Code and Data optimizations have permitted new 17855feature development with an actual reduction in the library size. 17856Current core subsystem library sizes are shown below. These are 17857the code and data sizes for the acpica.lib produced by the 17858Microsoft Visual C++ 6.0 compiler, and these values do not include 17859any ACPI driver or OSPM code. The debug version of the code 17860includes the debug output trace mechanism and has a larger code 17861and data size. Note that these values will vary depending on the 17862efficiency of the compiler and the compiler options used during 17863generation. 17864 17865 Previous Release (10_18_01): 17866 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17867 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17868 17869 Current Release: 17870 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17871 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17872 17873 2) Linux: 17874 17875Improved /proc processor output (Pavel Machek) Re-added 17876MODULE_LICENSE("GPL") to all modules. 17877 17878 3) ASL Compiler version X2030: 17879 17880Duplicate FieldUnit names within a scope are now detected and 17881flagged as errors. 17882 17883 4) Documentation: 17884 17885Programmer Reference updated to reflect OSL and address space 17886handler interface changes described above. 17887 17888---------------------------------------- 17889Summary of changes for this label: 10_18_01 17890 17891ACPI CA Core Subsystem: 17892 17893Fixed a problem with the internal object reference count mechanism 17894that occasionally caused premature object deletion. This resolves 17895all of the outstanding problem reports where an object is deleted 17896in the middle of an interpreter evaluation. Although this problem 17897only showed up in rather obscure cases, the solution to the 17898problem involved an adjustment of all reference counts involving 17899objects attached to namespace nodes. 17900 17901Fixed a problem with Field support in the interpreter where 17902writing to an aligned field whose length is an exact multiple (2 17903or greater) of the field access granularity would cause an attempt 17904to write beyond the end of the field. 17905 17906The top level AML opcode execution functions within the 17907interpreter have been renamed with a more meaningful and 17908consistent naming convention. The modules exmonad.c and 17909exdyadic.c were eliminated. New modules are exoparg1.c, 17910exoparg2.c, exoparg3.c, and exoparg6.c. 17911 17912Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 17913 17914Fixed a problem where the AML debugger was causing some internal 17915objects to not be deleted during subsystem termination. 17916 17917Fixed a problem with the external AcpiEvaluateObject interface 17918where the subsystem would fault if the named object to be 17919evaluated referred to a constant such as Zero, Ones, etc. 17920 17921Fixed a problem with IndexFields and BankFields where the 17922subsystem would fault if the index, data, or bank registers were 17923not defined in the same scope as the field itself. 17924 17925Added printf format string checking for compilers that support 17926this feature. Corrected more than 50 instances of issues with 17927format specifiers within invocations of ACPI_DEBUG_PRINT 17928throughout the core subsystem code. 17929 17930The ASL "Revision" operator now returns the ACPI support level 17931implemented in the core - the value "2" since the ACPI 2.0 support 17932is more than 50% implemented. 17933 17934Enhanced the output of the AML debugger "dump namespace" command 17935to output in a more human-readable form. 17936 17937Current core subsystem library code sizes are shown below. These 17938 17939are the code and data sizes for the acpica.lib produced by the 17940Microsoft Visual C++ 6.0 compiler, and these values do not include 17941any ACPI driver or OSPM code. The debug version of the code 17942includes the full debug trace mechanism -- leading to a much 17943 17944larger code and data size. Note that these values will vary 17945depending on the efficiency of the compiler and the compiler 17946options used during generation. 17947 17948 Previous Label (09_20_01): 17949 Non-Debug Version: 65K Code, 5K Data, 70K Total 17950 Debug Version: 138K Code, 58K Data, 196K Total 17951 17952 This Label: 17953 17954 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17955 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17956 17957Linux: 17958 17959Implemented a "Bad BIOS Blacklist" to track machines that have 17960known ASL/AML problems. 17961 17962Enhanced the /proc interface for the thermal zone driver and added 17963support for _HOT (the critical suspend trip point). The 'info' 17964file now includes threshold/policy information, and allows setting 17965of _SCP (cooling preference) and _TZP (polling frequency) values 17966to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 17967frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 17968preference to the passive/quiet mode (if supported by the ASL). 17969 17970Implemented a workaround for a gcc bug that resuted in an OOPs 17971when loading the control method battery driver. 17972 17973 ---------------------------------------- 17974Summary of changes for this label: 09_20_01 17975 17976 ACPI CA Core Subsystem: 17977 17978The AcpiEnableEvent and AcpiDisableEvent interfaces have been 17979modified to allow individual GPE levels to be flagged as wake- 17980enabled (i.e., these GPEs are to remain enabled when the platform 17981sleeps.) 17982 17983The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 17984support wake-enabled GPEs. This means that upon entering the 17985sleep state, all GPEs that are not wake-enabled are disabled. 17986When leaving the sleep state, these GPEs are re-enabled. 17987 17988A local double-precision divide/modulo module has been added to 17989enhance portability to OS kernels where a 64-bit math library is 17990not available. The new module is "utmath.c". 17991 17992Several optimizations have been made to reduce the use of CPU 17993stack. Originally over 2K, the maximum stack usage is now below 179942K at 1860 bytes (1.82k) 17995 17996Fixed a problem with the AcpiGetFirmwareTable interface where the 17997root table pointer was not mapped into a logical address properly. 17998 17999Fixed a problem where a NULL pointer was being dereferenced in the 18000interpreter code for the ASL Notify operator. 18001 18002Fixed a problem where the use of the ASL Revision operator 18003returned an error. This operator now returns the current version 18004of the ACPI CA core subsystem. 18005 18006Fixed a problem where objects passed as control method parameters 18007to AcpiEvaluateObject were always deleted at method termination. 18008However, these objects may end up being stored into the namespace 18009by the called method. The object reference count mechanism was 18010applied to these objects instead of a force delete. 18011 18012Fixed a problem where static strings or buffers (contained in the 18013AML code) that are declared as package elements within the ASL 18014code could cause a fault because the interpreter would attempt to 18015delete them. These objects are now marked with the "static 18016object" flag to prevent any attempt to delete them. 18017 18018Implemented an interpreter optimization to use operands directly 18019from the state object instead of extracting the operands to local 18020variables. This reduces stack use and code size, and improves 18021performance. 18022 18023The module exxface.c was eliminated as it was an unnecessary extra 18024layer of code. 18025 18026Current core subsystem library code sizes are shown below. These 18027are the code and data sizes for the acpica.lib produced by the 18028Microsoft Visual C++ 6.0 compiler, and these values do not include 18029any ACPI driver or OSPM code. The debug version of the code 18030includes the full debug trace mechanism -- leading to a much 18031larger code and data size. Note that these values will vary 18032depending on the efficiency of the compiler and the compiler 18033options used during generation. 18034 18035 Non-Debug Version: 65K Code, 5K Data, 70K Total 18036(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18037Total (Previously 195K) 18038 18039Linux: 18040 18041Support for ACPI 2.0 64-bit integers has been added. All ACPI 18042Integer objects are now 64 bits wide 18043 18044All Acpi data types and structures are now in lower case. Only 18045Acpi macros are upper case for differentiation. 18046 18047 Documentation: 18048 18049Changes to the external interfaces as described above. 18050 18051 ---------------------------------------- 18052Summary of changes for this label: 08_31_01 18053 18054 ACPI CA Core Subsystem: 18055 18056A bug with interpreter implementation of the ASL Divide operator 18057was found and fixed. The implicit function return value (not the 18058explicit store operands) was returning the remainder instead of 18059the quotient. This was a longstanding bug and it fixes several 18060known outstanding issues on various platforms. 18061 18062The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18063been further optimized for size. There are 700 invocations of the 18064DEBUG_PRINT macro alone, so each optimization reduces the size of 18065the debug version of the subsystem significantly. 18066 18067A stack trace mechanism has been implemented. The maximum stack 18068usage is about 2K on 32-bit platforms. The debugger command "stat 18069stack" will display the current maximum stack usage. 18070 18071All public symbols and global variables within the subsystem are 18072now prefixed with the string "Acpi". This keeps all of the 18073symbols grouped together in a kernel map, and avoids conflicts 18074with other kernel subsystems. 18075 18076Most of the internal fixed lookup tables have been moved into the 18077code segment via the const operator. 18078 18079Several enhancements have been made to the interpreter to both 18080reduce the code size and improve performance. 18081 18082Current core subsystem library code sizes are shown below. These 18083are the code and data sizes for the acpica.lib produced by the 18084Microsoft Visual C++ 6.0 compiler, and these values do not include 18085any ACPI driver or OSPM code. The debug version of the code 18086includes the full debug trace mechanism which contains over 700 18087invocations of the DEBUG_PRINT macro, 500 function entry macro 18088invocations, and over 900 function exit macro invocations -- 18089leading to a much larger code and data size. Note that these 18090values will vary depending on the efficiency of the compiler and 18091the compiler options used during generation. 18092 18093 Non-Debug Version: 64K Code, 5K Data, 69K Total 18094Debug Version: 137K Code, 58K Data, 195K Total 18095 18096 Linux: 18097 18098Implemented wbinvd() macro, pending a kernel-wide definition. 18099 18100Fixed /proc/acpi/event to handle poll() and short reads. 18101 18102 ASL Compiler, version X2026: 18103 18104Fixed a problem introduced in the previous label where the AML 18105 18106code emitted for package objects produced packages with zero 18107length. 18108 18109 ---------------------------------------- 18110Summary of changes for this label: 08_16_01 18111 18112ACPI CA Core Subsystem: 18113 18114The following ACPI 2.0 ASL operators have been implemented in the 18115AML interpreter (These are already supported by the Intel ASL 18116compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18117ToBuffer. Support for 64-bit AML constants is implemented in the 18118AML parser, debugger, and disassembler. 18119 18120The internal memory tracking mechanism (leak detection code) has 18121been upgraded to reduce the memory overhead (a separate tracking 18122block is no longer allocated for each memory allocation), and now 18123supports all of the internal object caches. 18124 18125The data structures and code for the internal object caches have 18126been coelesced and optimized so that there is a single cache and 18127memory list data structure and a single group of functions that 18128implement generic cache management. This has reduced the code 18129size in both the debug and release versions of the subsystem. 18130 18131The DEBUG_PRINT macro(s) have been optimized for size and replaced 18132by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 18133different, because it generates a single call to an internal 18134function. This results in a savings of about 90 bytes per 18135invocation, resulting in an overall code and data savings of about 1813616% in the debug version of the subsystem. 18137 18138 Linux: 18139 18140Fixed C3 disk corruption problems and re-enabled C3 on supporting 18141machines. 18142 18143Integrated low-level sleep code by Patrick Mochel. 18144 18145Further tweaked source code Linuxization. 18146 18147Other minor fixes. 18148 18149 ASL Compiler: 18150 18151Support for ACPI 2.0 variable length packages is fixed/completed. 18152 18153Fixed a problem where the optional length parameter for the ACPI 181542.0 ToString operator. 18155 18156Fixed multiple extraneous error messages when a syntax error is 18157detected within the declaration line of a control method. 18158 18159 ---------------------------------------- 18160Summary of changes for this label: 07_17_01 18161 18162ACPI CA Core Subsystem: 18163 18164Added a new interface named AcpiGetFirmwareTable to obtain any 18165ACPI table via the ACPI signature. The interface can be called at 18166any time during kernel initialization, even before the kernel 18167virtual memory manager is initialized and paging is enabled. This 18168allows kernel subsystems to obtain ACPI tables very early, even 18169before the ACPI CA subsystem is initialized. 18170 18171Fixed a problem where Fields defined with the AnyAcc attribute 18172could be resolved to the incorrect address under the following 18173conditions: 1) the field width is larger than 8 bits and 2) the 18174parent operation region is not defined on a DWORD boundary. 18175 18176Fixed a problem where the interpreter is not being locked during 18177namespace initialization (during execution of the _INI control 18178methods), causing an error when an attempt is made to release it 18179later. 18180 18181ACPI 2.0 support in the AML Interpreter has begun and will be 18182ongoing throughout the rest of this year. In this label, The Mod 18183operator is implemented. 18184 18185Added a new data type to contain full PCI addresses named 18186ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 18187and Function values. 18188 18189 Linux: 18190 18191Enhanced the Linux version of the source code to change most 18192capitalized ACPI type names to lowercase. For example, all 18193instances of ACPI_STATUS are changed to acpi_status. This will 18194result in a large diff, but the change is strictly cosmetic and 18195aligns the CA code closer to the Linux coding standard. 18196 18197OSL Interfaces: 18198 18199The interfaces to the PCI configuration space have been changed to 18200add the PCI Segment number and to split the single 32-bit combined 18201DeviceFunction field into two 16-bit fields. This was 18202accomplished by moving the four values that define an address in 18203PCI configuration space (segment, bus, device, and function) to 18204the new ACPI_PCI_ID structure. 18205 18206The changes to the PCI configuration space interfaces led to a 18207reexamination of the complete set of address space access 18208interfaces for PCI, I/O, and Memory. The previously existing 18 18209interfaces have proven difficult to maintain (any small change 18210must be propagated across at least 6 interfaces) and do not easily 18211allow for future expansion to 64 bits if necessary. Also, on some 18212systems, it would not be appropriate to demultiplex the access 18213width (8, 16, 32,or 64) before calling the OSL if the 18214corresponding native OS interfaces contain a similar access width 18215parameter. For these reasons, the 18 address space interfaces 18216have been replaced by these 6 new ones: 18217 18218AcpiOsReadPciConfiguration 18219AcpiOsWritePciConfiguration 18220AcpiOsReadMemory 18221AcpiOsWriteMemory 18222AcpiOsReadPort 18223AcpiOsWritePort 18224 18225Added a new interface named AcpiOsGetRootPointer to allow the OSL 18226to perform the platform and/or OS-specific actions necessary to 18227obtain the ACPI RSDP table pointer. On IA-32 platforms, this 18228interface will simply call down to the CA core to perform the low- 18229memory search for the table. On IA-64, the RSDP is obtained from 18230EFI. Migrating this interface to the OSL allows the CA core to 18231 18232remain OS and platform independent. 18233 18234Added a new interface named AcpiOsSignal to provide a generic 18235"function code and pointer" interface for various miscellaneous 18236signals and notifications that must be made to the host OS. The 18237first such signals are intended to support the ASL Fatal and 18238Breakpoint operators. In the latter case, the AcpiOsBreakpoint 18239interface has been obsoleted. 18240 18241The definition of the AcpiFormatException interface has been 18242changed to simplify its use. The caller no longer must supply a 18243buffer to the call; A pointer to a const string is now returned 18244directly. This allows the call to be easily used in printf 18245statements, etc. since the caller does not have to manage a local 18246buffer. 18247 18248 18249 ASL Compiler, Version X2025: 18250 18251The ACPI 2.0 Switch/Case/Default operators have been implemented 18252and are fully functional. They will work with all ACPI 1.0 18253interpreters, since the operators are simply translated to If/Else 18254pairs. 18255 18256The ACPI 2.0 ElseIf operator is implemented and will also work 18257with 1.0 interpreters, for the same reason. 18258 18259Implemented support for ACPI 2.0 variable-length packages. These 18260packages have a separate opcode, and their size is determined by 18261the interpreter at run-time. 18262 18263Documentation The ACPI CA Programmer Reference has been updated to 18264reflect the new interfaces and changes to existing interfaces. 18265 18266 ------------------------------------------ 18267Summary of changes for this label: 06_15_01 18268 18269 ACPI CA Core Subsystem: 18270 18271Fixed a problem where a DWORD-accessed field within a Buffer 18272object would get its byte address inadvertently rounded down to 18273the nearest DWORD. Buffers are always Byte-accessible. 18274 18275 ASL Compiler, version X2024: 18276 18277Fixed a problem where the Switch() operator would either fault or 18278hang the compiler. Note however, that the AML code for this ACPI 182792.0 operator is not yet implemented. 18280 18281Compiler uses the new AcpiOsGetTimer interface to obtain compile 18282timings. 18283 18284Implementation of the CreateField operator automatically converts 18285a reference to a named field within a resource descriptor from a 18286byte offset to a bit offset if required. 18287 18288Added some missing named fields from the resource descriptor 18289support. These are the names that are automatically created by the 18290compiler to reference fields within a descriptor. They are only 18291valid at compile time and are not passed through to the AML 18292interpreter. 18293 18294Resource descriptor named fields are now typed as Integers and 18295subject to compile-time typechecking when used in expressions. 18296 18297 ------------------------------------------ 18298Summary of changes for this label: 05_18_01 18299 18300 ACPI CA Core Subsystem: 18301 18302Fixed a couple of problems in the Field support code where bits 18303from adjacent fields could be returned along with the proper field 18304bits. Restructured the field support code to improve performance, 18305readability and maintainability. 18306 18307New DEBUG_PRINTP macro automatically inserts the procedure name 18308into the output, saving hundreds of copies of procedure name 18309strings within the source, shrinking the memory footprint of the 18310debug version of the core subsystem. 18311 18312 Source Code Structure: 18313 18314The source code directory tree was restructured to reflect the 18315current organization of the component architecture. Some files 18316and directories have been moved and/or renamed. 18317 18318 Linux: 18319 18320Fixed leaking kacpidpc processes. 18321 18322Fixed queueing event data even when /proc/acpi/event is not 18323opened. 18324 18325 ASL Compiler, version X2020: 18326 18327Memory allocation performance enhancement - over 24X compile time 18328improvement on large ASL files. Parse nodes and namestring 18329buffers are now allocated from a large internal compiler buffer. 18330 18331The temporary .SRC file is deleted unless the "-s" option is 18332specified 18333 18334The "-d" debug output option now sends all output to the .DBG file 18335instead of the console. 18336 18337"External" second parameter is now optional 18338 18339"ElseIf" syntax now properly allows the predicate 18340 18341Last operand to "Load" now recognized as a Target operand 18342 18343Debug object can now be used anywhere as a normal object. 18344 18345ResourceTemplate now returns an object of type BUFFER 18346 18347EISAID now returns an object of type INTEGER 18348 18349"Index" now works with a STRING operand 18350 18351"LoadTable" now accepts optional parameters 18352 18353"ToString" length parameter is now optional 18354 18355"Interrupt (ResourceType," parse error fixed. 18356 18357"Register" with a user-defined region space parse error fixed 18358 18359Escaped backslash at the end of a string ("\\") scan/parse error 18360fixed 18361 18362"Revision" is now an object of type INTEGER. 18363 18364 18365 18366------------------------------------------ 18367Summary of changes for this label: 05_02_01 18368 18369Linux: 18370 18371/proc/acpi/event now blocks properly. 18372 18373Removed /proc/sys/acpi. You can still dump your DSDT from 18374/proc/acpi/dsdt. 18375 18376 ACPI CA Core Subsystem: 18377 18378Fixed a problem introduced in the previous label where some of the 18379"small" resource descriptor types were not recognized. 18380 18381Improved error messages for the case where an ASL Field is outside 18382the range of the parent operation region. 18383 18384 ASL Compiler, version X2018: 18385 18386 18387Added error detection for ASL Fields that extend beyond the length 18388of the parent operation region (only if the length of the region 18389is known at compile time.) This includes fields that have a 18390minimum access width that is smaller than the parent region, and 18391individual field units that are partially or entirely beyond the 18392extent of the parent. 18393 18394 18395 18396------------------------------------------ 18397Summary of changes for this label: 04_27_01 18398 18399 ACPI CA Core Subsystem: 18400 18401Fixed a problem where the namespace mutex could be released at the 18402wrong time during execution of AcpiRemoveAddressSpaceHandler. 18403 18404Added optional thread ID output for debug traces, to simplify 18405debugging of multiple threads. Added context switch notification 18406when the debug code realizes that a different thread is now 18407executing ACPI code. 18408 18409Some additional external data types have been prefixed with the 18410string "ACPI_" for consistency. This may effect existing code. 18411The data types affected are the external callback typedefs - e.g., 18412 18413WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 18414 18415 Linux: 18416 18417Fixed an issue with the OSL semaphore implementation where a 18418thread was waking up with an error from receiving a SIGCHLD 18419signal. 18420 18421Linux version of ACPI CA now uses the system C library for string 18422manipulation routines instead of a local implementation. 18423 18424Cleaned up comments and removed TBDs. 18425 18426 ASL Compiler, version X2017: 18427 18428Enhanced error detection and reporting for all file I/O 18429operations. 18430 18431 Documentation: 18432 18433Programmer Reference updated to version 1.06. 18434 18435 18436 18437------------------------------------------ 18438Summary of changes for this label: 04_13_01 18439 18440 ACPI CA Core Subsystem: 18441 18442Restructured support for BufferFields and RegionFields. 18443BankFields support is now fully operational. All known 32-bit 18444limitations on field sizes have been removed. Both BufferFields 18445and (Operation) RegionFields are now supported by the same field 18446management code. 18447 18448Resource support now supports QWORD address and IO resources. The 1844916/32/64 bit address structures and the Extended IRQ structure 18450have been changed to properly handle Source Resource strings. 18451 18452A ThreadId of -1 is now used to indicate a "mutex not acquired" 18453condition internally and must never be returned by AcpiOsThreadId. 18454This reserved value was changed from 0 since Unix systems allow a 18455thread ID of 0. 18456 18457Linux: 18458 18459Driver code reorganized to enhance portability 18460 18461Added a kernel configuration option to control ACPI_DEBUG 18462 18463Fixed the EC driver to honor _GLK. 18464 18465ASL Compiler, version X2016: 18466 18467Fixed support for the "FixedHw" keyword. Previously, the FixedHw 18468address space was set to 0, not 0x7f as it should be. 18469 18470 ------------------------------------------ 18471Summary of changes for this label: 03_13_01 18472 18473 ACPI CA Core Subsystem: 18474 18475During ACPI initialization, the _SB_._INI method is now run if 18476present. 18477 18478Notify handler fix - notifies are deferred until the parent method 18479completes execution. This fixes the "mutex already acquired" 18480issue seen occasionally. 18481 18482Part of the "implicit conversion" rules in ACPI 2.0 have been 18483found to cause compatibility problems with existing ASL/AML. The 18484convert "result-to-target-type" implementation has been removed 18485for stores to method Args and Locals. Source operand conversion 18486is still fully implemented. Possible changes to ACPI 2.0 18487specification pending. 18488 18489Fix to AcpiRsCalculatePciRoutingTableLength to return correct 18490length. 18491 18492Fix for compiler warnings for 64-bit compiles. 18493 18494 Linux: 18495 18496/proc output aligned for easier parsing. 18497 18498Release-version compile problem fixed. 18499 18500New kernel configuration options documented in Configure.help. 18501 18502IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 18503context" message. 18504 18505 OSPM: 18506 18507Power resource driver integrated with bus manager. 18508 18509Fixed kernel fault during active cooling for thermal zones. 18510 18511Source Code: 18512 18513The source code tree has been restructured. 18514 18515 18516 18517------------------------------------------ 18518Summary of changes for this label: 03_02_01 18519 18520 Linux OS Services Layer (OSL): 18521 18522Major revision of all Linux-specific code. 18523 18524Modularized all ACPI-specific drivers. 18525 18526Added new thermal zone and power resource drivers. 18527 18528Revamped /proc interface (new functionality is under /proc/acpi). 18529 18530New kernel configuration options. 18531 18532 Linux known issues: 18533 18534New kernel configuration options not documented in Configure.help 18535yet. 18536 18537 18538Module dependencies not currently implemented. If used, they 18539should be loaded in this order: busmgr, power, ec, system, 18540processor, battery, ac_adapter, button, thermal. 18541 18542Modules will not load if CONFIG_MODVERSION is set. 18543 18544IBM 600E - entering S5 may reboot instead of shutting down. 18545 18546IBM 600E - Sleep button may generate "Invalid <NULL> context" 18547message. 18548 18549Some systems may fail with "execution mutex already acquired" 18550message. 18551 18552 ACPI CA Core Subsystem: 18553 18554Added a new OSL Interface, AcpiOsGetThreadId. This was required 18555for the deadlock detection code. Defined to return a non-zero, 32- 18556bit thread ID for the currently executing thread. May be a non- 18557zero constant integer on single-thread systems. 18558 18559Implemented deadlock detection for internal subsystem mutexes. We 18560may add conditional compilation for this code (debug only) later. 18561 18562ASL/AML Mutex object semantics are now fully supported. This 18563includes multiple acquires/releases by owner and support for the 18564 18565Mutex SyncLevel parameter. 18566 18567A new "Force Release" mechanism automatically frees all ASL 18568Mutexes that have been acquired but not released when a thread 18569exits the interpreter. This forces conformance to the ACPI spec 18570("All mutexes must be released when an invocation exits") and 18571prevents deadlocked ASL threads. This mechanism can be expanded 18572(later) to monitor other resource acquisitions if OEM ASL code 18573continues to misbehave (which it will). 18574 18575Several new ACPI exception codes have been added for the Mutex 18576support. 18577 18578Recursive method calls are now allowed and supported (the ACPI 18579spec does in fact allow recursive method calls.) The number of 18580recursive calls is subject to the restrictions imposed by the 18581SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 18582parameter. 18583 18584Implemented support for the SyncLevel parameter for control 18585methods (ACPI 2.0 feature) 18586 18587Fixed a deadlock problem when multiple threads attempted to use 18588the interpreter. 18589 18590Fixed a problem where the string length of a String package 18591element was not always set in a package returned from 18592AcpiEvaluateObject. 18593 18594Fixed a problem where the length of a String package element was 18595not always included in the length of the overall package returned 18596from AcpiEvaluateObject. 18597 18598Added external interfaces (Acpi*) to the ACPI debug memory 18599manager. This manager keeps a list of all outstanding 18600allocations, and can therefore detect memory leaks and attempts to 18601free memory blocks more than once. Useful for code such as the 18602power manager, etc. May not be appropriate for device drivers. 18603Performance with the debug code enabled is slow. 18604 18605The ACPI Global Lock is now an optional hardware element. 18606 18607 ASL Compiler Version X2015: 18608 18609Integrated changes to allow the compiler to be generated on 18610multiple platforms. 18611 18612Linux makefile added to generate the compiler on Linux 18613 18614 Source Code: 18615 18616All platform-specific headers have been moved to their own 18617subdirectory, Include/Platform. 18618 18619New source file added, Interpreter/ammutex.c 18620 18621New header file, Include/acstruct.h 18622 18623 Documentation: 18624 18625The programmer reference has been updated for the following new 18626interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 18627 18628 ------------------------------------------ 18629Summary of changes for this label: 02_08_01 18630 18631Core ACPI CA Subsystem: Fixed a problem where an error was 18632incorrectly returned if the return resource buffer was larger than 18633the actual data (in the resource interfaces). 18634 18635References to named objects within packages are resolved to the 18636 18637full pathname string before packages are returned directly (via 18638the AcpiEvaluateObject interface) or indirectly via the resource 18639interfaces. 18640 18641Linux OS Services Layer (OSL): 18642 18643Improved /proc battery interface. 18644 18645 18646Added C-state debugging output and other miscellaneous fixes. 18647 18648ASL Compiler Version X2014: 18649 18650All defined method arguments can now be used as local variables, 18651including the ones that are not actually passed in as parameters. 18652The compiler tracks initialization of the arguments and issues an 18653exception if they are used without prior assignment (just like 18654locals). 18655 18656The -o option now specifies a filename prefix that is used for all 18657output files, including the AML output file. Otherwise, the 18658default behavior is as follows: 1) the AML goes to the file 18659specified in the DSDT. 2) all other output files use the input 18660source filename as the base. 18661 18662 ------------------------------------------ 18663Summary of changes for this label: 01_25_01 18664 18665Core ACPI CA Subsystem: Restructured the implementation of object 18666store support within the interpreter. This includes support for 18667the Store operator as well as any ASL operators that include a 18668target operand. 18669 18670Partially implemented support for Implicit Result-to-Target 18671conversion. This is when a result object is converted on the fly 18672to the type of an existing target object. Completion of this 18673support is pending further analysis of the ACPI specification 18674concerning this matter. 18675 18676CPU-specific code has been removed from the subsystem (hardware 18677directory). 18678 18679New Power Management Timer functions added 18680 18681Linux OS Services Layer (OSL): Moved system state transition code 18682to the core, fixed it, and modified Linux OSL accordingly. 18683 18684Fixed C2 and C3 latency calculations. 18685 18686 18687We no longer use the compilation date for the version message on 18688initialization, but retrieve the version from AcpiGetSystemInfo(). 18689 18690Incorporated for fix Sony VAIO machines. 18691 18692Documentation: The Programmer Reference has been updated and 18693reformatted. 18694 18695 18696ASL Compiler: Version X2013: Fixed a problem where the line 18697numbering and error reporting could get out of sync in the 18698presence of multiple include files. 18699 18700 ------------------------------------------ 18701Summary of changes for this label: 01_15_01 18702 18703Core ACPI CA Subsystem: 18704 18705Implemented support for type conversions in the execution of the 18706ASL Concatenate operator (The second operand is converted to 18707match the type of the first operand before concatenation.) 18708 18709Support for implicit source operand conversion is partially 18710implemented. The ASL source operand types Integer, Buffer, and 18711String are freely interchangeable for most ASL operators and are 18712converted by the interpreter on the fly as required. Implicit 18713Target operand conversion (where the result is converted to the 18714target type before storing) is not yet implemented. 18715 18716Support for 32-bit and 64-bit BCD integers is implemented. 18717 18718Problem fixed where a field read on an aligned field could cause a 18719read past the end of the field. 18720 18721New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 18722does not return a value, but the caller expects one. (The ASL 18723compiler flags this as a warning.) 18724 18725ASL Compiler: 18726 18727Version X2011: 187281. Static typechecking of all operands is implemented. This 18729prevents the use of invalid objects (such as using a Package where 18730an Integer is required) at compile time instead of at interpreter 18731run-time. 187322. The ASL source line is printed with ALL errors and warnings. 187333. Bug fix for source EOF without final linefeed. 187344. Debug option is split into a parse trace and a namespace trace. 187355. Namespace output option (-n) includes initial values for 18736integers and strings. 187376. Parse-only option added for quick syntax checking. 187387. Compiler checks for duplicate ACPI name declarations 18739 18740Version X2012: 187411. Relaxed typechecking to allow interchangeability between 18742strings, integers, and buffers. These types are now converted by 18743the interpreter at runtime. 187442. Compiler reports time taken by each internal subsystem in the 18745debug output file. 18746 18747 18748 ------------------------------------------ 18749Summary of changes for this label: 12_14_00 18750 18751ASL Compiler: 18752 18753This is the first official release of the compiler. Since the 18754compiler requires elements of the Core Subsystem, this label 18755synchronizes everything. 18756 18757------------------------------------------ 18758Summary of changes for this label: 12_08_00 18759 18760 18761Fixed a problem where named references within the ASL definition 18762of both OperationRegions and CreateXXXFields did not work 18763properly. The symptom was an AE_AML_OPERAND_TYPE during 18764initialization of the region/field. This is similar (but not 18765related internally) to the problem that was fixed in the last 18766label. 18767 18768Implemented both 32-bit and 64-bit support for the BCD ASL 18769functions ToBCD and FromBCD. 18770 18771Updated all legal headers to include "2000" in the copyright 18772years. 18773 18774 ------------------------------------------ 18775Summary of changes for this label: 12_01_00 18776 18777Fixed a problem where method invocations within the ASL definition 18778of both OperationRegions and CreateXXXFields did not work 18779properly. The symptom was an AE_AML_OPERAND_TYPE during 18780initialization of the region/field: 18781 18782 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 18783[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 18784(0x3005) 18785 18786Fixed a problem where operators with more than one nested 18787subexpression would fail. The symptoms were varied, by mostly 18788AE_AML_OPERAND_TYPE errors. This was actually a rather serious 18789problem that has gone unnoticed until now. 18790 18791 Subtract (Add (1,2), Multiply (3,4)) 18792 18793Fixed a problem where AcpiGetHandle didn't quite get fixed in the 18794previous build (The prefix part of a relative path was handled 18795incorrectly). 18796 18797Fixed a problem where Operation Region initialization failed if 18798the operation region name was a "namepath" instead of a simple 18799"nameseg". Symptom was an AE_NO_OPERAND error. 18800 18801Fixed a problem where an assignment to a local variable via the 18802indirect RefOf mechanism only worked for the first such 18803assignment. Subsequent assignments were ignored. 18804 18805 ------------------------------------------ 18806Summary of changes for this label: 11_15_00 18807 18808ACPI 2.0 table support with backwards support for ACPI 1.0 and the 188090.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 18810the AML interpreter does NOT have support for the new 2.0 ASL 18811grammar terms at this time. 18812 18813All ACPI hardware access is via the GAS structures in the ACPI 2.0 18814FADT. 18815 18816All physical memory addresses across all platforms are now 64 bits 18817wide. Logical address width remains dependent on the platform 18818(i.e., "void *"). 18819 18820AcpiOsMapMemory interface changed to a 64-bit physical address. 18821 18822The AML interpreter integer size is now 64 bits, as per the ACPI 188232.0 specification. 18824 18825For backwards compatibility with ACPI 1.0, ACPI tables with a 18826revision number less than 2 use 32-bit integers only. 18827 18828Fixed a problem where the evaluation of OpRegion operands did not 18829always resolve them to numbers properly. 18830 18831------------------------------------------ 18832Summary of changes for this label: 10_20_00 18833 18834Fix for CBN_._STA issue. This fix will allow correct access to 18835CBN_ OpRegions when the _STA returns 0x8. 18836 18837Support to convert ACPI constants (Ones, Zeros, One) to actual 18838values before a package object is returned 18839 18840Fix for method call as predicate to if/while construct causing 18841incorrect if/while behavior 18842 18843Fix for Else block package lengths sometimes calculated wrong (if 18844block > 63 bytes) 18845 18846Fix for Processor object length field, was always zero 18847 18848Table load abort if FACP sanity check fails 18849 18850Fix for problem with Scope(name) if name already exists 18851 18852Warning emitted if a named object referenced cannot be found 18853(resolved) during method execution. 18854 18855 18856 18857 18858 18859------------------------------------------ 18860Summary of changes for this label: 9_29_00 18861 18862New table initialization interfaces: AcpiInitializeSubsystem no 18863longer has any parameters AcpiFindRootPointer - Find the RSDP (if 18864necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 18865>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 18866AcpiLoadTables 18867 18868Note: These interface changes require changes to all existing OSDs 18869 18870The PCI_Config default address space handler is always installed 18871at the root namespace object. 18872 18873------------------------------------------- 18874Summary of changes for this label: 09_15_00 18875 18876The new initialization architecture is implemented. New 18877interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 18878AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 18879 18880(Namespace is automatically loaded when a table is loaded) 18881 18882The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1888352 bytes to 32 bytes. There is usually one of these for every 18884namespace object, so the memory savings is significant. 18885 18886Implemented just-in-time evaluation of the CreateField operators. 18887 18888Bug fixes for IA-64 support have been integrated. 18889 18890Additional code review comments have been implemented 18891 18892The so-called "third pass parse" has been replaced by a final walk 18893through the namespace to initialize all operation regions (address 18894spaces) and fields that have not yet been initialized during the 18895execution of the various _INI and REG methods. 18896 18897New file - namespace/nsinit.c 18898 18899------------------------------------------- 18900Summary of changes for this label: 09_01_00 18901 18902Namespace manager data structures have been reworked to change the 18903primary object from a table to a single object. This has 18904resulted in dynamic memory savings of 3X within the namespace and 189052X overall in the ACPI CA subsystem. 18906 18907Fixed problem where the call to AcpiEvFindPciRootBuses was 18908inadvertently left commented out. 18909 18910Reduced the warning count when generating the source with the GCC 18911compiler. 18912 18913Revision numbers added to each module header showing the 18914SourceSafe version of the file. Please refer to this version 18915number when giving us feedback or comments on individual modules. 18916 18917The main object types within the subsystem have been renamed to 18918clarify their purpose: 18919 18920ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 18921ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 18922ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 18923 18924NOTE: no changes to the initialization sequence are included in 18925this label. 18926 18927------------------------------------------- 18928Summary of changes for this label: 08_23_00 18929 18930Fixed problem where TerminateControlMethod was being called 18931multiple times per method 18932 18933Fixed debugger problem where single stepping caused a semaphore to 18934be oversignalled 18935 18936Improved performance through additional parse object caching - 18937added ACPI_EXTENDED_OP type 18938 18939------------------------------------------- 18940Summary of changes for this label: 08_10_00 18941 18942Parser/Interpreter integration: Eliminated the creation of 18943complete parse trees for ACPI tables and control methods. 18944Instead, parse subtrees are created and then deleted as soon as 18945they are processed (Either entered into the namespace or executed 18946by the interpreter). This reduces the use of dynamic kernel 18947memory significantly. (about 10X) 18948 18949Exception codes broken into classes and renumbered. Be sure to 18950recompile all code that includes acexcep.h. Hopefully we won't 18951have to renumber the codes again now that they are split into 18952classes (environment, programmer, AML code, ACPI table, and 18953internal). 18954 18955Fixed some additional alignment issues in the Resource Manager 18956subcomponent 18957 18958Implemented semaphore tracking in the AcpiExec utility, and fixed 18959several places where mutexes/semaphores were being unlocked 18960without a corresponding lock operation. There are no known 18961semaphore or mutex "leaks" at this time. 18962 18963Fixed the case where an ASL Return operator is used to return an 18964unnamed package. 18965 18966------------------------------------------- 18967Summary of changes for this label: 07_28_00 18968 18969Fixed a problem with the way addresses were calculated in 18970AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 18971manifested itself when a Field was created with WordAccess or 18972DwordAccess, but the field unit defined within the Field was less 18973 18974than a Word or Dword. 18975 18976Fixed a problem in AmlDumpOperands() module's loop to pull 18977operands off of the operand stack to display information. The 18978problem manifested itself as a TLB error on 64-bit systems when 18979accessing an operand stack with two or more operands. 18980 18981Fixed a problem with the PCI configuration space handlers where 18982context was getting confused between accesses. This required a 18983change to the generic address space handler and address space 18984setup definitions. Handlers now get both a global handler context 18985(this is the one passed in by the user when executing 18986AcpiInstallAddressSpaceHandler() and a specific region context 18987that is unique to each region (For example, the _ADR, _SEG and 18988_BBN values associated with a specific region). The generic 18989function definitions have changed to the following: 18990 18991typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 18992UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 18993*HandlerContext, // This used to be void *Context void 18994*RegionContext); // This is an additional parameter 18995 18996typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 18997RegionHandle, UINT32 Function, void *HandlerContext, void 18998**RegionContext); // This used to be **ReturnContext 18999 19000------------------------------------------- 19001Summary of changes for this label: 07_21_00 19002 19003Major file consolidation and rename. All files within the 19004interpreter have been renamed as well as most header files. This 19005was done to prevent collisions with existing files in the host 19006OSs -- filenames such as "config.h" and "global.h" seem to be 19007quite common. The VC project files have been updated. All 19008makefiles will require modification. 19009 19010The parser/interpreter integration continues in Phase 5 with the 19011implementation of a complete 2-pass parse (the AML is parsed 19012twice) for each table; This avoids the construction of a huge 19013parse tree and therefore reduces the amount of dynamic memory 19014required by the subsystem. Greater use of the parse object cache 19015means that performance is unaffected. 19016 19017Many comments from the two code reviews have been rolled in. 19018 19019The 64-bit alignment support is complete. 19020 19021------------------------------------------- 19022Summary of changes for this label: 06_30_00 19023 19024With a nod and a tip of the hat to the technology of yesteryear, 19025we've added support in the source code for 80 column output 19026devices. The code is now mostly constrained to 80 columns or 19027less to support environments and editors that 1) cannot display 19028or print more than 80 characters on a single line, and 2) cannot 19029disable line wrapping. 19030 19031A major restructuring of the namespace data structure has been 19032completed. The result is 1) cleaner and more 19033understandable/maintainable code, and 2) a significant reduction 19034in the dynamic memory requirement for each named ACPI object 19035(almost half). 19036 19037------------------------------------------- 19038Summary of changes for this label: 06_23_00 19039 19040Linux support has been added. In order to obtain approval to get 19041the ACPI CA subsystem into the Linux kernel, we've had to make 19042quite a few changes to the base subsystem that will affect all 19043users (all the changes are generic and OS- independent). The 19044effects of these global changes have been somewhat far reaching. 19045Files have been merged and/or renamed and interfaces have been 19046renamed. The major changes are described below. 19047 19048Osd* interfaces renamed to AcpiOs* to eliminate namespace 19049pollution/confusion within our target kernels. All OSD 19050interfaces must be modified to match the new naming convention. 19051 19052Files merged across the subsystem. A number of the smaller source 19053and header files have been merged to reduce the file count and 19054increase the density of the existing files. There are too many 19055to list here. In general, makefiles that call out individual 19056files will require rebuilding. 19057 19058Interpreter files renamed. All interpreter files now have the 19059prefix am* instead of ie* and is*. 19060 19061Header files renamed: The acapi.h file is now acpixf.h. The 19062acpiosd.h file is now acpiosxf.h. We are removing references to 19063the acronym "API" since it is somewhat windowsy. The new name is 19064"external interface" or xface or xf in the filenames.j 19065 19066 19067All manifest constants have been forced to upper case (some were 19068mixed case.) Also, the string "ACPI_" has been prepended to many 19069(not all) of the constants, typedefs, and structs. 19070 19071The globals "DebugLevel" and "DebugLayer" have been renamed 19072"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19073 19074All other globals within the subsystem are now prefixed with 19075"AcpiGbl_" Internal procedures within the subsystem are now 19076prefixed with "Acpi" (with only a few exceptions). The original 19077two-letter abbreviation for the subcomponent remains after "Acpi" 19078- for example, CmCallocate became AcpiCmCallocate. 19079 19080Added a source code translation/conversion utility. Used to 19081generate the Linux source code, it can be modified to generate 19082other types of source as well. Can also be used to cleanup 19083existing source by removing extraneous spaces and blank lines. 19084Found in tools/acpisrc/* 19085 19086OsdUnMapMemory was renamed to OsdUnmapMemory and then 19087AcpiOsUnmapMemory. (UnMap became Unmap). 19088 19089A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19090When set to one, this indicates that the caller wants to use the 19091 19092semaphore as a mutex, not a counting semaphore. ACPI CA uses 19093both types. However, implementers of this call may want to use 19094different OS primitives depending on the type of semaphore 19095requested. For example, some operating systems provide separate 19096 19097"mutex" and "semaphore" interfaces - where the mutex interface is 19098much faster because it doesn't have all the overhead of a full 19099semaphore implementation. 19100 19101Fixed a deadlock problem where a method that accesses the PCI 19102address space can block forever if it is the first access to the 19103space. 19104 19105------------------------------------------- 19106Summary of changes for this label: 06_02_00 19107 19108Support for environments that cannot handle unaligned data 19109accesses (e.g. firmware and OS environments devoid of alignment 19110handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19111been added (via configurable macros) in these three areas: - 19112Transfer of data from the raw AML byte stream is done via byte 19113moves instead of word/dword/qword moves. - External objects are 19114aligned within the user buffer, including package elements (sub- 19115objects). - Conversion of name strings to UINT32 Acpi Names is now 19116done byte-wise. 19117 19118The Store operator was modified to mimic Microsoft's 19119implementation when storing to a Buffer Field. 19120 19121Added a check of the BM_STS bit before entering C3. 19122 19123The methods subdirectory has been obsoleted and removed. A new 19124file, cmeval.c subsumes the functionality. 19125 19126A 16-bit (DOS) version of AcpiExec has been developed. The 19127makefile is under the acpiexec directory. 19128