1---------------------------------------- 231 March 2021. Summary of changes for version 20210331: 3 4This release is available at https://acpica.org/downloads, and includes 5all ACPI 6.4 support 6 71) ACPICA kernel-resident subsystem: 8ACPI 6.4: iASL: deprecate DDBHandleObj keyword 9Always create namespace nodes using AcpiNsCreateNode(). ACPICA is 10allocating an object using kmalloc(), but then frees it 11using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong. 12Fixed a race condition in generic serial bus operation region handler. 13Fixed by Hans de Goede. 14 152) iASL Compiler/Disassembler and ACPICA tools: 16 17ACPI 6.4: NFIT: add Location Cookie field 18ACPI 6.4: HMAT: add new fields/flags 19ACPI 6.4: Add new flags in SRAT 20ACPI 6.4: add SDEV secure access components 21ACPI 6.4: add Csi2Bus resource template 22ACPI 6.4: add support for PHAT table 23ACPI 6.4: add support for PMTT table 24Add disassembly support for the IVRS table. Compilation of the table is 25not yet complete. 26Fixed a potential infinite loop due to type mismatch. The for-loop is 27using a UINT8 counter and comparing the upper 28limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In 29the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i 30will wrap around to zero and the loop will never exit. I suspect 31the AslGbl_ExpectedMessagesIndex is never that high, but fixing 32this does future proof the code and cleans up static analysis 33warnings.Colin King. 34iASL/TableCompiler: update it with IORT table E.b revision changes. From 35shamiali2008. 36iASL/TableCompiler: Add compilation support for the VIOT table. Signed- 37off-by: Jean-Philippe Brucker. 38iASL/TableCompiler: Add compilation support for CEDT table. Also, update 39the CEDT template. 40 41---------------------------------------- 4205 January 2021. Summary of changes for version 20210105: 43 44This release is available at https://acpica.org/downloads 45 46 471) ACPICA kernel-resident subsystem: 48 49Updated all copyrights to 2021. This affects all ACPICA source code 50modules. 51 522) iASL Compiler/Disassembler and ACPICA tools: 53 54ASL test suite (ASLTS): Updated all copyrights to 2021. 55 56Tools and utilities: Updated all signon copyrights to 2021. 57 58iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC, 59MTMR. Al Stone. 60 61 62---------------------------------------- 6317 December 2020. Summary of changes for version 20201217: 64 65This release is available at https://acpica.org/downloads 66 67 681) ACPICA kernel-resident subsystem: 69 70Note: The implementation of ACPI 6.4 is underway, and is expected to be 71mostly finished next month, when ACPI 6.4 is released. 72 73From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added 74several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to 75enable this. 76 77AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0. 78These included a few casts, as well as a null pointer check. 79 80Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on 81implicit fallthrough, as well as __attribute__((__fallthrough__)) and 82comments to explicitly denote that cases of fallthrough were intentional. 83Clang also supports this warning and statement attribute, but not the 84comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature 85of GCC. With assistance from @nickdesaulniers. 86 872) iASL Compiler/Disassembler and ACPICA tools: 88 89Added improvement to method call analysis by saving the return type and 90relaxing certain cases of type checking. 91 92iASL Table Compiler: Improved info messages. Added a message to the -T 93option for when the default template (DSDT) is used. 94Also added a note for when multiple SSDTs are created with a DSDT that 95the SSDTs are created in the same file as the DSDT. 96 97 98---------------------------------------- 99 10013 November 2020. Summary of changes for version 20201113: 101 102This release is available at https://acpica.org/downloads 103 104 1051) ACPICA kernel-resident subsystem: 106 107Interpreter: fixed a memory leak by using use existing buffer in _HID 108repair. There was a memory leak that occurred when a _CID object is 109defined as a package containing string objects. When _CID is checked for 110any possible repairs, it calls a helper function to repair _HID (because 111_CID basically contains multiple _HID entries). The _HID repair function 112assumes that string objects are standalone objects that are not contained 113inside of any packages. The _HID repair function replaced the string 114object with a brand new object and attempted to delete the old object by 115decrementing the reference count of the old object. Strings inside of 116packages have a reference count of 2 so the _HID repair function leaves 117this object in a dangling state and causes a memory leak. Instead of 118allocating a brand new object and removing the old object, use the 119existing object when repairing the _HID object. 120 121Added function trace macros to improve namespace debugging. The namespace 122repair mechanism does not have function tracing macros. Add several trace 123macros to improve debuggability. 124 125Handle "orphan" _REG methods for GPIO OpRegions. Before this change 126AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no 127matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry 128Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. 129The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific 130UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads 131to potential issues with checks for OpRegion availability, or in other 132words checks if _REG has been called for the OpRegion which the ACPI code 133wants to use. Except for the "orphan" EC handling, ACPICA core does not 134call _REG on an ACPI node which does not define an OpRegion matching the 135type being registered; and the reference design DSDT, from which most 136Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor 137UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins 138were assigned ACPI controlled functions in the reference design. Together 139this leads to the perfect storm, at least on the Cherry Trail based 140Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code 141and has added the Cherry Trail specific UserDefined(0x93) opregion to its 142GPO2 ACPI node to access this pin. But it uses a "has _REG been called" 143availability check for the standard GeneralPurposeIo OpRegion. This 144clearly is a bug in the DSDT, but this does work under Windows. This 145issue leads to the intel vbtn driver reporting the device always being in 146tablet-mode at boot, even if it is in laptop mode. Which in turn causes 147userspace to ignore touchpad events. So in other words, this issue causes 148the touchpad to not work at boot. This change fixes this by extending the 149"orphan" _REG method handling to also apply to GPIO address-space 150handlers. 151 152 1532) iASL Compiler/Disassembler and ACPICA tools: 154 155iASL: Added more info to namespace dump file (-ln option). In a separate 156section of the dump file (after the main namespace dump), emit the full 157pathname for each namespace node, its type, and the ASL filename and line 158number where it is declared. 159 160AcpiHelp: Added an option to display/decode iASL exceptions. Option is: - 161x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value 162is omitted, all iASL exceptions are displayed. 163 164iASL: Use StringLiteral instead of StringData for some ASL macros. The 165use of the stringData rule allows for some "string" oriented opcodes 166(Such as ToString, ToHexString, etc.) None of which make sense with the 167macros in question. This change modifies the StringData part of the rule 168for these macros to a simple string literal - thus disallowing the use 169of ToString, ToHexString, etc. 170The following ASL operators (macros) are affected: 171EisaId 172Fprintf 173Printf 174ToUuid 175Unicode 176Note: The MS compiler requires the use of string literals for these 177operators also. 178 179iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search 180the list of "known" UUIDs for the input to the ToUUID macro. 181 182Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the 183NFIT table. 184 185 186---------------------------------------- 187 18825 September 2020. Summary of changes for version 20200925: 189 190This release is available at https://acpica.org/downloads 191 192 1931) ACPICA kernel-resident subsystem: 194 195Preserve memory opregion mappings. The ACPICA's strategy with respect to 196the handling of memory mappings associated with memory operation regions 197is to avoid mapping the entire region at once which may be problematic at 198least in principle (for example, it may lead to conflicts with 199overlapping mappings having different attributes created by drivers). It 200may also be wasteful, because memory opregions on some systems take up 201vastchunks of address space while the fields in those regions actually 202accessed by AML are sparsely distributed. 203 204For this reason, a one-page "window" is mapped for a given opregion on 205the first memory access through it and if that "window" does not cover an 206address range accessed through that opregion subsequently, it is unmapped 207and a new "window" is mapped to replace it. Next, if the new "window" is 208not sufficient to access memory through the opregion in question in the 209future, it will be replaced with yet another "window" and so on. That 210may lead to a suboptimal sequence of memory mapping and unmapping 211operations, for example if two fields in one opregion separated from each 212other by a sufficiently wide chunk of unused address space are accessed 213in an alternating pattern. 214 215Added support for 64 bit risc-v compilation. Useful for acpica tools and 216incorporating ACPICA into the Firmware Test Suite. Colin Ian King 217<colin.king@canonical.com>. 218 219Added support for SMBus predefined names (from SMBus Control Method 220Interface Specification, Version 1.0, December 10, 1999. New predefined 221names: 222 _SBA 223 _SBI 224 _SBR 225 _SBT 226 _SBW 227 228AML Disassembler: Added a new command, "All <NameSeg>". This command will 229evaluate all objects in the current namespace whose NameString contains 230the input NameSeg as the last element of the NameString. Useful for 231debugging. 232 233 2342) iASL Compiler/Disassembler and ACPICA tools: 235 236iASL: fixed a crash that occurred when predefined objects return packages 237with lengths that exceed the initializer list. 238 239iASL: added more detail to external resolution error message when 240compiling multiple definition blocks. 241 242iASL: added a remark for an attempt to create a nameseg or namestring 243containing lower-case letters. This should prevent declaring multiple 244namesegs or namestrings in an attempt to refer to different objects (with 245different cases), but actually refer to the same object(s). 246 247iASL: improve alias analysis by saving object type. If the alias is a 248method type, the parameter count is also recorded. 249 250AcpiExec: Increase the default loop timeout value. Was 1 second, is now 25110 seconds. Prevents unnecessary timeouts when executing control methods 252from the command line. 253 254AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 255list. Includes: 256 Memory Device 257 Generic Buttons Device 258 NVDIMM Root Device 259 Control Method Battery 260 Device Graphs for _DSD method 261 Hierarchical Data Extension 262....ARM CoreSight Graph 263 264---------------------------------------- 265 266 26717 July 2020. Summary of changes for version 20200717: 268 269This release is available at https://acpica.org/downloads 270 271 2721) ACPICA kernel-resident subsystem: 273 274Do not increment OperationRegion reference counts for field units. Recent 275server firmware has revealed that this reference count can overflow on 276large servers that declare many field units (thousands) under the same 277OperationRegion. This occurs because each field unit declaration will add 278a reference count to the source OperationRegion. This release solves the 279reference count overflow for OperationRegion objects by preventing 280fieldUnits from incrementing their parent OperationRegion's reference 281count. 282 283Replaced one-element arrays with flexible-arrays, which were introduced 284in C99. 285 286Restored the readme file containing the directions for generation of 287ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 288located at: generate/msvc2017/readme.txt 289 2902) iASL Compiler/Disassembler and ACPICA tools: 291 292iASL: Fixed a regression found in version 20200214. Prevent iASL from 293emitting an extra byte of garbage data when control methods declared a 294single parameter type without using braces. This extra byte is known to 295cause a blue screen on the Windows AML interpreter. 296 297iASL: Made a change to allow external declarations to specify the type of 298a named object even when some name segments are not defined. 299This change allows the following ASL code to compile (When DEV0 is not 300defined or not defined yet): 301 302 External (\_SB.DEV0.OBJ1, IntObj) 303 External (\_SB.DEV0, DeviceObj) 304 305iASL: Fixed a problem where method names in "Alias ()" statement could be 306misinterpreted. They are now interpreted correctly as method invocations. 307 308iASL: capture a method parameter count (Within the Method info segment, 309as well as the argument node) when using parameter type lists. 310 311---------------------------------------- 312 313 31428 May 2020. Summary of changes for version 20200528: 315 316 3171) ACPICA kernel-resident subsystem: 318 319Removed old/obsolete Visual Studio files which were used to build the 320Windows versions of the ACPICA tools. Since we have moved to Visual 321Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 322project files. The new subdirectory and solution file are located at: 323 324 acpica/generate/msvc2017/AcpiComponents.sln 325 326 3272) iASL Compiler/Disassembler and ACPICA tools: 328 329iASL: added support for a new OperationRegion Address Space (subtype): 330PlatformRtMechanism. Support for this new keyword is being released for 331early prototyping. It will appear in the next release of the ACPI 332specification. 333 334iASL: do not optimize the NameString parameter of the CondRefOf operator. 335In the previous iASL compiler release, the NameString parameter of the 336CondRefOf was optimized. There is evidence that some implementations of 337the AML interpreter do not perform the recursive search-to-parent search 338during the execution of the CondRefOf operator. Therefore, the CondRefOf 339operator behaves differently when the NameString parameter is a single 340name segment (a NameSeg) as opposed to a full NamePath (starting at the 341root scope) or a NameString containing parent prefixes. 342 343iASL: Prevent an inadvertent remark message. This change prevents a 344remark if within a control method the following exist: 3451) An Operation Region is defined, and 3462) A Field operator is defined that refers to the region. 347This happens because at the top level, the Field operator does not 348actually create a new named object, it simply references the operation 349region. 350 351Removed support for the acpinames utility. The acpinames was a simple 352utility used to populate and display the ACPI namespace without executing 353any AML code. However, ACPICA now supports executable opcodes outside of 354control methods. This means that executable AML opcodes such as If and 355Store opcodes need to be executed during table load. Therefore, acpinames 356would need to be updated to match the same behavior as the acpiexec 357utility and since acpiexec can already dump the entire namespace (via the 358'namespace' command), we no longer have the need to maintain acpinames. 359 360 In order to dump the contents of the ACPI namespace using acpiexec, 361execute the following command from the command line: 362 363 acpiexec -b "n" [aml files] 364 365---------------------------------------- 366 367 36830 April 2020. Summary of changes for version 20200430: 369 3701) ACPICA kernel-resident subsystem: 371 372Cleaned up the coding style of a couple of global variables 373(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 374AcpiProtocolLengths was made static, and the definition of 375AcpiGbl_NextCmdNum was moved to acglobal.h. 376 377 3782) iASL Compiler/Disassembler and ACPICA tools: 379 380iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 381associated with a field. 382 383Disassembler: has been made more resilient so that it will continue to 384parse AML even if the AML generates ACPI namespace errors. This enables 385iASL to disassemble some AML that may have been compiled using older 386versions of iASL that no longer compile with newer versions of iASL. 387 388iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 389was a mixup where _NIG required one parameter and _NIH required zero 390parameters. This change swaps these parameter requirements. Now it is 391required that _NIH must be called with one parameter and _NIG requires 392zero parameters. 393 394iASL: Allow use of undefined externals as long as they are protected by 395an if (CondRefOf (...)) block when compiling multiple definition blocks. 396 397iASL: Fixed the type override behavior of named objects that are declared 398as External. External declarations will no longer override the type of 399the actual definition if it already exists. 400 401AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 402command line wildcard support on Windows. Note: the AcpiNames utility is 403essentially redundant with the AcpiExec utility (using the "namespace" 404command) and is therefore deprecated. It will be removed in future 405releases of ACPICA. 406 407Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 408operators. The disassembler is intended to emit existing ASL code as-is. 409Therefore, error messages emitted during disassembly should be ignored or 410handled in a way such that the disassembler can continue to parse the 411AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 412parsing for create operators in order to complete parsing ASL termlists. 413 414iASL DataTable Compiler: IVRS table: fix potentially uninitialized 415variable warning. Some compilers catch potential uninitialized variables. 416This is done by examining branches of if/else statements. This change 417replaces an "else if" with an "else" to fix the uninitialized variable 418warning. 419 420 421---------------------------------------- 42226 March 2020. Summary of changes for version 20200326: 423 424 4251) ACPICA kernel-resident subsystem: 426 427Performed a code clean-up to prevent build errors on early versions of 428GCC-10. 429 430Added the NHLT table signature. iASL data table compiler/disassembler 431support for this table is coming soon. 432 433 4342) iASL Compiler/Disassembler and ACPICA tools: 435 436AcpiExec: Fixed several problems with the namespace initialization file 437(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 438errors, several seg faults, and enhancements to line parsing within the 439init file. In addition, each object found in the init file and it's new 440value is displayed, as well as any such entries that do not have a 441corresponding name in the namespace. For reference, the syntax for the 442various supported data types are presented below: 443 PCHG 0x777788889999BBBB // Integer 444 \DEV1.STR1 "XYZ" // String 445 BUF1 (88 99 AA) // Buffer 446 PKG1 [0x1111 0x2222] // Package 447 \BF1 0x7980 // BufferField 448 RCRV 0x0123456789ABCDEF // Field Unit 449 450iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 451can be used anywhere in a given ASL file to configure iASL to expect an 452iASL compiler error code on the line where this macro was placed. If the 453error code does not exist, an error is generated. This is intended to be 454used for ACPICA's ASL test suite, but can be used by ASL developers as 455well. 456 457iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 458IVRS table parsing supported only IVHD type 10h structures. Parsing an 459IVHD type 11h caused the iasl to report unknown subtable type. Add 460necessary structure definition for IVHD type 11h and apply correct 461parsing method based on subtable type. Micha? ?ygowski. 462 463iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 464According to AMD IOMMU Specification Revision 3.05 the reserved field 465should be IOMMU Feature Reporting. Change the name of the field to the 466correct one. Micha? ?ygowski. 467 468acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 469based on suggestions by David Seifert and Benjamin Berg. 470 471iASL: table compiler: removed an unused variable (DtCompilerParserResult) 472causing linking errors. Patch based on suggestions by David Seifert and 473Benjamin Berg. 474 475iASL: table compiler: make LexBuffer static to avoid linking errors in 476newer compilers. Patch based on suggestions by David Seifert and Benjamin 477Berg. 478 479iASL: fixed type matching between External and Named objects. External 480object types can only be expressed with ACPI object type values that are 481defined in the ACPI spec. However, iASL uses ACPI object type values that 482are local to ACPICA in addition to the values defined in the ACPI spec. 483This change implements type matching to map some object type values 484specific to ACPICA to ones that are defined in the ACPI spec. 485 486iASL: Dropped the type mismatch compiler error that can arise from 487External declarations to a warning. This warning can occur when there is 488a type difference between the external declaration and the actual object 489declaration (when compiling multiple files/modules simultaneously). 490 491iASL: removed an incorrect error message regarding externals. This change 492removes an incorrect error that is emitted when a duplicate external 493declaration does not contain a type that opens a scope. This is incorrect 494because the duplicate external with conflicting types are already caught 495by iASL and it doesn't make any sense to enforce what this conflicting 496type should be. 497 498AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 499surrounded by parens. Otherwise, a logical statement that applies a 500logical not operator to this macro could result in a computation that 501applies the operator to the left side of the logical and but not the 502right. Reported-by: John Levon <john.levon@joyent.com> 503 504Fixed a problem with the local version of sprint(): On 32-bit, the 505provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 506String + Size will wrap, meaning End < Start, and 507AcpiUtBoundStringOutput() will never output anything as a result. The 508symptom seen of this was acpixtract failing to output anything -- with a 509custom build that included utprint.c. Signed-off-by: John Levon 510<john.levon@joyent.com> 511 512iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 513ACPI specification. 514 515 516---------------------------------------- 51714 February 2020. Summary of changes for version 20200214: 518 519 5201) ACPICA kernel-resident subsystem: 521 522Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 523in a guest when it receives a sleep trigger from the hypervisor. When the 524guest resumes from this power state, it does not see the SleepEnabled 525bit. In other words, the sleepHibernation (S4) is triggered in a guest 526when it receives a sleep trigger from the hypervisor. When the guest 527resumes from this power state, it does not see the SleepEnabled bit. In 528other words, the sleep button is not enabled on waking from an S4 state. 529This causes subsequent invocation of sleep state to fail since the 530guest.button is not enabled on waking from an S4 state. This causes 531subsequent invocation of sleep state to fail in the guest. Fix this 532problem by enabling the sleep button in ACPI legacy wake. From Anchal 533Agarwal <anchalag@amazon.com>. 534 535Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 536for checking the status bits of all enabled GPEs in one go. It is needed 537to distinguish spurious SCIs from genuine ones when deciding whether or 538not to wake up the system from suspend-to-idle. 539 540Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 541using HOST in their environment to represent the host name for their 542machines. Avoid this problem by renaming this variable from HOST to 543ACPI_HOST. 544 545MSVC 2017 project files: Enable multiprocessor generation to improve 546build performance. 547 548Added a macro to get the byte width of a Generic Address structure. New 549ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 550ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 551 552 5532) iASL Compiler/Disassembler and ACPICA tools: 554 555iASL: Implemented full support for the (optional, rarely used) ReturnType 556and ParameterTypesList for the Method, Function, and External operators. 557For Method declarations, the number of individual ParameterTypes must 558match the declaration of the number of arguments (NumArgs). This also 559Fixes a problem with the External operator where extra/extraneous bytes 560were emitted in the AML code if the optional ReturnType/ParameterTypes 561were specified for a MethodObj declaration. 562New error message: 5631) Method NumArgs count does not match length of ParameterTypes list 564 565iASL: Implemented detection of type mismatches between External 566declarations and named object declarations. Also, detect type mismatches 567between multiple External declarations of the same Name. 568New error messages: 5691) Type mismatch between external declaration and actual object 570declaration detected 5712) Type mismatch between multiple external declarations detected 572 573iASL: Implemented new error messages for External operators that specify 574a ReturnType and/or ParameterTypesList for any object type other than 575control methods (MethodObj). 576New error messages: 5771) Return type is only allowed for Externals declared as MethodObj 5782) Parameter type is only allowed for Externals declared as MethodObj 579 580iASL: Implemented two new remark/warning messages for ASL code that 581creates named objects from within a control method. This is very 582inefficient since the named object must be created and deleted each time 583the method is executed. 584New messages: 5851) Creation of named objects within a method is highly inefficient, use 586globals or method local variables instead (remark) 5872) Static OperationRegion should be declared outside control method 588(warning) 589 590iASL: Improved illegal forward reference detection by adding support to 591detect forward-reference method invocations. 592 593iASL: Detect and issue an error message for NameStrings that contain too 594many individual NameSegs (>255). This is an AML limitation that is 595defined in the ACPI specification. 596New message: 5971) NameString contains too many NameSegs (>255) 598 599acpidump: windows: use GetSystemFirmwareTable API for all tables except 600SSDT. By using this API, acpidump is able to get all tables in the XSDT 601 602iASL: Removed unused parser file and updated msvc2017 project files. 603Removed the obsolete AslCompiler.y from the repository. 604 605iASL: msvc2017: Fixed macros in the file dependency list to prevent 606unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 607 608Disassembler: Prevent spilling error messages to the output file. All 609errors are directed to the console instead. These error messages 610prevented re-compilation of the resulting disassembled ASL output file 611(.DSL). 612 613 614---------------------------------------- 61510 January 2020. Summary of changes for version 20200110: 616 617 6181) ACPICA kernel-resident subsystem: 619 620Updated all copyrights to 2020. This affects all ACPICA source code 621modules. 622 623 6242) iASL Compiler/Disassembler and ACPICA tools: 625 626ASL test suite (ASLTS): Updated all copyrights to 2020. 627 628Tools and utilities: Updated all signon copyrights to 2020. 629 630iASL: fix forward reference analysis for field declarations. Fixes 631forward reference analysis for field declarations by searching the 632parent scope for the named object when the object is not present in 633the current scope. 634 635iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 636full pathname of the name that already exists is printed. 637 638iASL: Enhance duplicate Case() detection for buffers. Add check for 639buffers with no initializer list (these buffers will be filled with 640zeros at runtime.) 641 642 643---------------------------------------- 64413 December 2019. Summary of changes for version 20191213: 645 646 6471) ACPICA kernel-resident subsystem: 648 649Return a Buffer object for all fields created via the CreateField 650operator. Previously, an Integer would be returned if the size of 651the field was less than or equal to the current size of an Integer. 652Although this goes against the ACPI specification, it provides 653compatibility with other ACPI implementations. Also updated the 654ASLTS test suite to reflect this new behavior. 655 6562) iASL Compiler/Disassembler and ACPICA tools: 657 658iASL: Implemented detection of (and throw an error for) duplicate 659values for Case statements within a single Switch statement. Duplicate 660Integers, Strings, and Buffers are supported. 661 662iASL: Fix error logging issue during multiple file compilation -- 663Switch to the correct input file during error node creation. 664 665iASL: For duplicate named object creation, now emit an error instead 666of a warning - since this will cause a runtime error. 667 668AcpiSrc: Add unix line-ending support for non-Windows builds. 669 670iASL: Add an error condition for an attempt to create a NameString 671with > 255 NameSegs (the max allowable via the AML definition). 672 673 674---------------------------------------- 67518 October 2019. Summary of changes for version 20191018: 676 677 6781) ACPICA kernel-resident subsystem: 679 680Debugger: added a new command: ?Fields [address space ID]?. This command 681dumps the contents of all field units that are defined within the 682namespace with a particular address space ID. 683 684Modified the external interface AcpiLoadTable() to return a table index. 685This table index can be used for unloading a table for debugging. 686 ACPI_STATUS 687 AcpiLoadTable ( 688 ACPI_TABLE_HEADER *Table, 689 UINT32 *TableIndex)) 690 691Implemented a new external interface: AcpiUnloadTable() This new function 692takes a table index as an argument and unloads the table. Useful for 693debugging only. 694 ACPI_STATUS 695 AcpiUnloadTable ( 696 UINT32 TableIndex)) 697 698Ported the AcpiNames utility to use the new table initialization 699sequence. The utility was broken before this change. Also, it was 700required to include most of the AML interpreter into the utility in order 701to process table initialization (module-level code execution.) 702 703Update for results from running Clang V8.0.1. This fixes all "dead 704assignment" warnings. There are still several "Dereference of NULL 705pointer" warnings, but these have been found to be false positive 706warnings. 707 708 7092) iASL Compiler/Disassembler and ACPICA tools: 710 711iASL: numerous table compiler changes to ensure that the usage of 712yacc/bison syntax is POSIX-compliant. 713 714iASL/disassembler: several simple bug fixes in the data table 715disassembler. 716 717Acpiexec: expanded the initialization file (the -fi option) to initialize 718strings, buffers, packages, and field units. 719 720 721---------------------------------------- 72216 August 2019. Summary of changes for version 20190816: 723 724This release is available at https://acpica.org/downloads 725 726 7271) ACPICA kernel-resident subsystem: 728 729Modified the OwnerId mechanism to allow for more Owner Ids. The previous 730limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 731exceptions on machines with a large number of initialization threads, 732many CPU cores and nested initialization control methods. 733 734Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 735checking if the given GPE (as represented by a GPE device handle and a 736GPE number) is currently active and dispatching it (if that's the case) 737outside of interrupt context. 738 739Table load: exit the interpreter before initializing objects within the 740new table This prevents re-acquiring the interpreter lock when loading 741tables 742 743Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 744uk Kim 745 746Macros: removed pointer math on a null pointer. Causes warnings on some 747compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 748instead of using arithmetic. 749 750Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 751across all "printf-like" internal functions. Also, cleanup all calls to 752such functions (both in 32-bit mode and 64-bit mode) now that they are 753analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 754 755 7562) iASL Compiler/Disassembler and ACPICA tools: 757 758iASL: implemented a new data table compiler flex/bison front-end. This 759change is internal and is not intended to result in changes to the 760compiled code. This new compiler front-end can be invoked using the -tp 761option for now, until the old mechanism is removed. 762 763ASLTS: Implemented a new data table compiler test suite. This test suite 764generates all table templates and compile/disassemble/re-compile/binary- 765compare each file. 766 767iASL: return -1 if AML files were not generated due to compiler errors 768 769iASL: added a warning on use of the now-legacy ASL Processor () keyword. 770 771iASL: added an error on _UID object declaration that returns a String 772within a Processor () declaration. A _UID for a processor must be an 773Integer. 774 775iASL: added a null terminator to name strings that consist only of 776multiple parent prefixes (^) 777 778iASL: added support to compile both ASL and data table files in a single 779command. 780 781Updated the tool generation project files that were recently migrated to 782MSVC 2017 to eliminate all new warnings. The new project files appear in 783the directory \acpica\generate\msvc2017. This change effectively 784deprecates the older project files in \acpica\generate\msvc9. 785 786 787---------------------------------------- 78803 July 2019. Summary of changes for version 20190703: 789 790 7911) ACPICA kernel-resident subsystem: 792 793Remove legacy module-level support code. There were still some remnants 794of the legacy module-level code executions. Since we no longer support 795this option, this is essentially dead code and has been removed from the 796ACPICA source. 797 798iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 799scope. If these named objects are declared outside the root scope, they 800will not be invoked by any host Operating System. 801 802Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 803one) can be enabled in two situations. First, the GPEs with existing _Lxx 804and _Exx methods are enabled implicitly by ACPICA during system 805initialization. Second, the GPEs without these methods (like GPEs listed 806by _PRW objects for wakeup devices) need to be enabled directly by the 807code that is going to use them (e.g. ACPI power management or device 808drivers). 809 810In the former case, if the status of a given GPE is set to start with, 811its handler method (either _Lxx or _Exx) needs to be invoked to take care 812of the events (possibly) signaled before the GPE was enabled. In the 813latter case, however, the first caller of AcpiEnableGpe() for a given GPE 814should not be expected to care about any events that might be signaled 815through it earlier. In that case, it is better to clear the status of 816the GPE before enabling it, to prevent stale events from triggering 817unwanted actions (like spurious system resume, for example). 818 819For this reason, modify AcpiEvAddGpeReference() to take an additional 820boolean argument indicating whether or not the GPE status needs to be 821cleared when its reference counter changes from zero to one and make 822AcpiEnableGpe() pass TRUE to it through that new argument. 823 824 8252) iASL Compiler/Disassembler and ACPICA tools: 826 827The tool generation process has been migrated to MSVC 2017, and all 828project files have been upgraded. The new project files appear in the 829directory \acpica\generate\msvc2017. This change effectively deprecates 830the older project files in \acpica\generate\msvc9. 831 832iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 833scope. If these named objects are declared outside the root scope, they 834will not be invoked by any host Operating System 835 836---------------------------------------- 83709 May 2019. Summary of changes for version 20190509: 838 839 8401) ACPICA kernel-resident subsystem: 841 842Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 843them") that causes problems with Thunderbolt controllers to occur if a 844dock device is connected at init time (the xhci_hcd and thunderbolt 845modules crash which prevents peripherals connected through them from 846working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 847Dispatch active GPEs at init time") to get undone, so the problem 848addressed by commit ecc1165b8b74 appears again as a result of it. 849 850 8512) iASL Compiler/Disassembler and ACPICA tools: 852 853Reverted iASL: Additional forward reference detection. This change 854reverts forward reference detection for field declarations. The feature 855unintentionally emitted AML bytecode with incorrect package lengths for 856some ASL code related to Fields and OperationRegions. This malformed AML 857can cause systems to crash 858during boot. The malformed AML bytecode is emitted in iASL version 85920190329 and 20190405. 860 861iASL: improve forward reference detection. This change improves forward 862reference detection for named objects inside of scopes. If a parse object 863has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 864a named object that is declared later in the AML bytecode. This is 865allowed if the reference is inside of a method and the declaration is 866outside of a method like so: 867 868DefinitionBlock(...) 869{ 870 Method (TEST) 871 { 872 Return (NUM0) 873 } 874 Name (NUM0,0) 875} 876 877However, if the declaration and reference are both in the same method or 878outside any methods, this is a forward reference and should be marked as 879an error because it would result in runtime errors. 880 881DefinitionBlock(...) 882{ 883 Name (BUFF, Buffer (NUM0) {}) // Forward reference 884 Name (NUM0, 0x0) 885 886 Method (TEST) 887 { 888 Local0 = NUM1 889 Name (NUM1, 0x1) // Forward reference 890 return (Local0) 891 } 892} 893 894iASL: Implemented additional buffer overflow analysis for BufferField 895declarations. Check if a buffer index argument to a create buffer field 896operation is beyond the end of the target buffer. 897 898This affects these AML operators: 899 900 AML_CREATE_FIELD_OP 901 AML_CREATE_BIT_FIELD_OP 902 AML_CREATE_BYTE_FIELD_OP 903 AML_CREATE_WORD_FIELD_OP 904 AML_CREATE_DWORD_FIELD_OP 905 AML_CREATE_QWORD_FIELD_OP 906 907 There are three conditions that must be satisfied in order to allow this 908validation at compile time: 909 910 1) The length of the target buffer must be an integer constant 911 2) The index specified in the create* must be an integer constant 912 3) For CreateField, the bit length argument must be non-zero. 913 914Example: 915 Name (BUF1, Buffer() {1,2}) 916 CreateField (BUF1, 7, 9, CF03) // 3: ERR 917 918dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 919Error 6165 - ^ Buffer index beyond end of 920target buffer 921 922 923---------------------------------------- 92405 April 2019. Summary of changes for version 20190405: 925 926 9271) ACPICA kernel-resident subsystem: 928 929Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 930unconditionally clearing ACPI IRQs during suspend/resume") was added 931earlier to stop clearing of event status bits unconditionally on suspend 932and resume paths. Though this change fixed an issue on suspend path, it 933introduced regressions on several resume paths. In the case of S0ix, 934events are enabled as part of device suspend path. If status bits for the 935events are set when they are enabled, it could result in premature wake 936from S0ix. If status is cleared for any event that is being enabled so 937that any stale events are cleared out. In case of S0ix, events are 938enabled as part of device suspend path. If status bits for the events are 939set when they are enabled, it could result in premature wake from S0ix. 940 941This change ensures that status is cleared for any event that is being 942enabled so that any stale events are cleared out. 943 944 9452) iASL Compiler/Disassembler and ACPICA tools: 946 947iASL: Implemented an enhanced multiple file compilation that combines 948named objects from all input files to a single namespace. With this 949feature, any unresolved external declarations as well as duplicate named 950object declarations can be detected during compilation rather than 951generating errors much later at runtime. The following commands are 952examples that utilize this feature: 953 iasl dsdt.asl ssdt.asl 954 iasl dsdt.asl ssdt1.asl ssdt2.asl 955 iasl dsdt.asl ssdt*.asl 956 957---------------------------------------- 95829 March 2019. Summary of changes for version 20190329: 959 960 9611) ACPICA kernel-resident subsystem: 962 963Namespace support: Remove the address nodes from global list after method 964termination. The global address list contains pointers to namespace nodes 965that represent Operation Regions. This change properly removes Operation 966Region namespace nodes that are declared dynamically during method 967execution. 968 969Linux: Use a different debug default than ACPICA. There was a divergence 970between Linux and the ACPICA codebases. In order to resolve this 971divergence, Linux now declares its own debug default in aclinux.h 972 973Renamed some internal macros to improve code understanding and 974maintenance. The macros below all operate on single 4-character ACPI 975NameSegs, not generic strings (old -> new): 976 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 977 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 978 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 979 980Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 981table. 982 983Test suite: Update makefiles, add PCC operation region support 984 985 9862) iASL Compiler/Disassembler and Tools: 987 988iASL: Implemented additional illegal forward reference detection. Now 989detect and emit an error upon detection of a forward reference from a 990Field to an Operation Region. This will fail at runtime if allowed to 991pass the compiler. 992 993AcpiExec: Add an address list check for dynamic Operation Regions. This 994feature performs a sanity test for each node the global address list. 995This is done in order to ensure that all dynamic operation regions are 996properly removed from the global address list and no dangling pointers 997are left behind. 998 999Disassembler: Improved generation of resource pathnames. This change 1000improves the code that generates resource descriptor and resource tag 1001pathnames. The original code used a bunch of str* C library functions 1002that caused warnings on some compilers. 1003 1004iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 1005function can overwrite buffers if the calling code is not very careful. 1006In the case of generating a module/table header, use of memmove is a 1007better implementation. 1008 1009 10103) Status of new features that have not been completed at this time: 1011 1012iASL: Implementing an enhanced multiple file compilation into a single 1013namespace feature (Status): This feature will be released soon, and 1014allows multiple ASL files to be compiled into the same single namespace. 1015By doing so, any unresolved external declarations as well as duplicate 1016named object declarations can be detected during compilation (rather than 1017later during runtime). The following commands are examples that utilize 1018this feature: 1019 iasl dsdt.asl ssdt.asl 1020 iasl dsdt.asl ssdt1.asl ssdt2.asl 1021 iasl dsdt.asl ssdt*.asl 1022 1023ASL tutorial status: Feedback is being gathered internally and the 1024current plan is to publish this tutorial on the ACPICA website after a 1025final review by a tech writer. 1026 1027---------------------------------------- 102815 February 2019. Summary of changes for version 20190215: 1029 1030 10310) Support for ACPI specification version 6.3: 1032 1033Add PCC operation region support for the AML interpreter. This adds PCC 1034operation region support in the AML interpreter and a default handler for 1035acpiexec. The change also renames the PCC region address space keyword to 1036PlatformCommChannel. 1037 1038Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 1039These methods provide OSPM with health information and device boot 1040status. 1041 1042PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 1043defines if the trigger needs to be invoked by OSPM before or at the end 1044of kernel crash dump processing/handling operation. 1045 1046SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 1047is used for describing devices such as heterogeneous processors, 1048accelerators, GPUs, and IO devices with integrated compute or DMA 1049engines. 1050 1051MADT: Add support for statistical profiling in GICC. Statistical 1052profiling extension (SPE) is an architecture-specific feature for ARM. 1053 1054MADT: Add online capable flag. If this bit is set, system hardware 1055supports enabling this processor during OS runtime. 1056 1057New Error Disconnect Recover Notification value. There are a number of 1058scenarios where system Firmware in collaboration with hardware may 1059disconnect one or more devices from the rest of the system for purposes 1060of error containment. Firmware can use this new notification value to 1061alert OSPM of such a removal. 1062 1063PPTT: New additional fields in Processor Structure Flags. These flags 1064provide more information about processor topology. 1065 1066NFIT/Disassembler: Change a field name from "Address Range" to "Region 1067Type". 1068 1069HMAT updates: make several existing fields to be reserved as well as 1070rename subtable 0 to "memory proximity domain attributes". 1071 1072GTDT: Add support for new GTDT Revision 3. This revision adds information 1073for the EL2 timer. 1074 1075iASL: Update the HMAT example template for new fields. 1076 1077iASL: Add support for the new revision of the GTDT (Rev 3). 1078 1079 10801) ACPICA kernel-resident subsystem: 1081 1082AML Parser: fix the main AML parse loop to correctly skip erroneous 1083extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 1084byte extended opcodes. If an error occurs during an AML table load, the 1085AML parser will continue loading the table by skipping the offending 1086opcode. This implements a "load table at any cost" philosophy. 1087 1088 10892) iASL Compiler/Disassembler and Tools: 1090 1091iASL: Add checks for illegal object references, such as a reference 1092outside of method to an object within a method. Such an object is only 1093temporary. 1094 1095iASL: Emit error for creation of a zero-length operation region. Such a 1096region is rather pointless. If encountered, a runtime error is also 1097implemented in the interpreter. 1098 1099Debugger: Fix a possible fault with the "test objects" command. 1100 1101iASL: Makefile: support parent directory filenames containing embedded 1102spaces. 1103 1104iASL: Update the TPM2 template to revision 4. 1105 1106iASL: Add the ability to report specific warnings or remarks as errors. 1107 1108Disassembler: Disassemble OEMx tables as actual AML byte code. 1109Previously, these tables were treated as "unknown table". 1110 1111iASL: Add definition and disassembly for TPM2 revision 3. 1112 1113iASL: Add support for TPM2 rev 3 compilation. 1114 1115 1116---------------------------------------- 111708 January 2019. Summary of changes for version 20190108: 1118 1119 11201) ACPICA kernel-resident subsystem: 1121 1122Updated all copyrights to 2019. This affects all source code modules. 1123 1124 11252) iASL Compiler/Disassembler and Tools: 1126 1127ASL test suite (ASLTS): Updated all copyrights to 2019. 1128 1129Tools: Updated all signon copyrights to 2019. 1130 1131AcpiExec: Added a new option to dump extra information concerning any 1132memory leaks detected by the internal object/cache tracking mechanism. - 1133va 1134 1135iASL: Updated the table template for the TPM2 table to the newest version 1136of the table (Revision 4) 1137 1138 1139---------------------------------------- 114013 December 2018. Summary of changes for version 20181213: 1141 1142 11431) ACPICA Kernel-resident Subsystem: 1144 1145Fixed some buffer length issues with the GenericSerialBus, related to two 1146of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 1147which are rarely seen in the field. For these, the LEN field of the ASL 1148buffer is now ignored. Hans de Goede 1149 1150Implemented a new object evaluation trace mechanism for control methods 1151and data objects. This includes nested control methods. It is 1152particularly useful for examining the ACPI execution during system 1153initialization since the output is relatively terse. The flag below 1154enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 1155 #define ACPI_LV_EVALUATION 0x00080000 1156 1157Examples: 1158 Enter evaluation : _SB.PCI0._INI (Method) 1159 Exit evaluation : _SB.PCI0._INI 1160 Enter evaluation : _OSI (Method) 1161 Exit evaluation : _OSI 1162 Enter evaluation : _SB.PCI0.TEST (Method) 1163 Nested method call : _SB.PCI0.NST1 1164 Exit nested method : _SB.PCI0.NST1 1165 Exit evaluation : _SB.PCI0.TEST 1166 1167Added two recently-defined _OSI strings. See 1168https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 1169osi. 1170 "Windows 2018" 1171 "Windows 2018.2" 1172 1173Update for buffer-to-string conversions via the ToHexString ASL operator. 1174A "0x" is now prepended to each of the hex values in the output string. 1175This provides compatibility with other ACPI implementations. The ACPI 1176specification is somewhat vague on this issue. 1177 Example output string after conversion: 1178"0x01,0x02,0x03,0x04,0x05,0x06" 1179 1180Return a run-time error for TermArg expressions within individual package 1181elements. Although this is technically supported by the ASL grammar, 1182other ACPI implementations do not support this either. Also, this fixes a 1183fault if this type of construct is ever encountered (it never has been). 1184 1185 11862) iASL Compiler/Disassembler and Tools: 1187 1188iASL: Implemented a new compile option (-ww) that will promote individual 1189warnings and remarks to errors. This is intended to enhance the firmware 1190build process. 1191 1192AcpiExec: Implemented a new command-line option (-eo) to support the new 1193object evaluation trace mechanism described above. 1194 1195Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 1196instead of a "unknown table" message. 1197 1198AcpiHelp: Improved support for the "special" predefined names such as 1199_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 1200used for "xx" and "x". 1201 1202---------------------------------------- 120331 October 2018. Summary of changes for version 20181031: 1204 1205 1206An Operation Region regression was fixed by properly adding address 1207ranges to a global list during initialization. This allows OS to 1208accurately check for overlapping regions between native devices (such as 1209PCI) and Operation regions as well as checking for region conflicts 1210between two Operation Regions. 1211 1212Added support for the 2-byte extended opcodes in the code/feature that 1213attempts to continue parsing during the table load phase. Skip parsing 1214Device declarations (and other extended opcodes) when an error occurs 1215during parsing. Previously, only single-byte opcodes were supported. 1216 1217Cleanup: Simplified the module-level code support by eliminating a 1218useless global variable (AcpiGbl_GroupModuleLeveCode). 1219 1220 12212) iASL Compiler/Disassembler and Tools: 1222 1223iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 1224could cause a fault in the preprocessor. This was an inadvertent side- 1225effect from moving more allocations/frees to the local cache/memory 1226mechanism. 1227 1228iASL: Enhanced error detection by validating that all NameSeg elements 1229within a NamePatch actually exist. The previous behavior was spotty at 1230best, and such errors could be improperly ignored at compiler time (never 1231at runtime, however. There are two new error messages, as shown in the 1232examples below: 1233 1234dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 1235Error 6161 - ^ One or more objects within 1236the Pathname do not exist (TTTT.BXXX) 1237 1238dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 1239Error 6160 - One or more prefix Scopes do not exist ^ 1240(BBBB.CBF1) 1241 1242iASL: Disassembler/table-compiler: Added support for the static data 1243table TPM2 revision 3 (an older version of TPM2). The support has been 1244added for the compiler and the disassembler. 1245 1246Fixed compilation of DOS format data table file on Unix/Linux systems. 1247iASL now properly detects line continuations (\) for DOS format data 1248table definition language files on when executing on Unix/Linux. 1249 1250---------------------------------------- 125103 October 2018. Summary of changes for version 20181003: 1252 1253 12542) iASL Compiler/Disassembler and Tools: 1255 1256Fixed a regression introduced in version 20180927 that could cause the 1257compiler to fault, especially with NamePaths containing one or more 1258carats (^). Such as: ^^_SB_PCI0 1259 1260Added a new remark for the Sleep() operator when the sleep time operand 1261is larger than one second. This is a very long time for the ASL/BIOS code 1262and may not be what was intended by the ASL writer. 1263 1264---------------------------------------- 126527 September 2018. Summary of changes for version 20180927: 1266 1267 12681) ACPICA kernel-resident subsystem: 1269 1270Updated the GPE support to clear the status of all ACPI events when 1271entering any/all sleep states in order to avoid premature wakeups. In 1272theory, this may cause some wakeup events to be missed, but the 1273likelihood of this is small. This change restores the original behavior 1274of the ACPICA code in order to fix a regression seen from the previous 1275"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1276This regression could cause some systems to incorrectly wake immediately. 1277 1278Updated the execution of the _REG methods during initialization and 1279namespace loading to bring the behavior into closer conformance to the 1280ACPI specification and other ACPI implementations: 1281 1282From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1283 "Control methods must assume all operation regions are inaccessible 1284until the _REG(RegionSpace, 1) method is executed" 1285 1286 "The exceptions to this rule are: 12871. OSPM must guarantee that the following operation regions are always 1288accessible: 1289 SystemIO operation regions. 1290 SystemMemory operation regions when accessing memory returned by the 1291System Address Map reporting interfaces." 1292 1293Since the state of both the SystemIO and SystemMemory address spaces are 1294defined by the specification to never change, this ACPICA change ensures 1295that now _REG is never called on them. This solves some problems seen in 1296the field and provides compatibility with other ACPI implementations. An 1297update to the upcoming new version of the ACPI specification will help 1298clarify this behavior. 1299 1300Updated the implementation of support for the Generic Serial Bus. For the 1301"bidirectional" protocols, the internal implementation now automatically 1302creates a return data buffer of the maximum size (255). This handles the 1303worst-case for data that is returned from the serial bus handler, and 1304fixes some problems seen in the field. This new buffer is directly 1305returned to the ASL. As such, there is no true "bidirectional" buffer, 1306which matches the ACPI specification. This is the reason for the "double 1307store" seen in the example ASL code in the specification, shown below: 1308 1309Word Process Call (AttribProcessCall): 1310 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1311 Field(TOP1, BufferAcc, NoLock, Preserve) 1312 { 1313 FLD1, 8, // Virtual register at command value 1. 1314 } 1315 1316 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1317 // as BUFF 1318 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1319 1320 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1321 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1322transaction 1323 // This is the "double store". The write to 1324 // FLD1 returns a new buffer, which is stored 1325 // back into BUFF with the second Store. 1326 1327 13282) iASL Compiler/Disassembler and Tools: 1329 1330iASL: Implemented detection of extraneous/redundant uses of the Offset() 1331operator within a Field Unit list. A remark is now issued for these. For 1332example, the first two of the Offset() operators below are extraneous. 1333Because both the compiler and the interpreter track the offsets 1334automatically, these Offsets simply refer to the current offset and are 1335unnecessary. Note, when optimization is enabled, the iASL compiler will 1336in fact remove the redundant Offset operators and will not emit any AML 1337code for them. 1338 1339 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1340 Field (OPR1) 1341 { 1342 Offset (0), // Never needed 1343 FLD1, 32, 1344 Offset (4), // Redundant, offset is already 4 (bytes) 1345 FLD2, 8, 1346 Offset (64), // OK use of Offset. 1347 FLD3, 16, 1348 } 1349dsdt.asl 14: Offset (0), 1350Remark 2158 - ^ Unnecessary/redundant use of Offset 1351operator 1352 1353dsdt.asl 16: Offset (4), 1354Remark 2158 - ^ Unnecessary/redundant use of Offset 1355operator 1356 1357---------------------------------------- 135810 August 2018. Summary of changes for version 20180810: 1359 1360 13611) ACPICA kernel-resident subsystem: 1362 1363Initial ACPI table loading: Attempt to continue loading ACPI tables 1364regardless of malformed AML. Since migrating table initialization to the 1365new module-level code support, the AML interpreter rejected tables upon 1366any ACPI error encountered during table load. This is a problem because 1367non-serious ACPI errors during table load do not necessarily mean that 1368the entire definition block (DSDT or SSDT) is invalid. This change 1369improves the table loading by ignoring some types of errors that can be 1370generated by incorrect AML. This can range from object type errors, scope 1371errors, and index errors. 1372 1373Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1374during suspend/resume. The status of ACPI events is no longer cleared 1375when entering the ACPI S5 system state (power off) which caused some 1376systems to power up immediately after turning off power in certain 1377situations. This was a functional regression. It was fixed by clearing 1378the status of all ACPI events again when entering S5 (for system-wide 1379suspend or hibernation the clearing of the status of all events is not 1380desirable, as it might cause the kernel to miss wakeup events sometimes). 1381Rafael Wysocki. 1382 1383 13842) iASL Compiler/Disassembler and Tools: 1385 1386AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1387elements listed in the initialization file were previously initialized 1388after the table load and before executing module-level code blocks. 1389Recent changes in the module-level code support means that the table load 1390becomes a large control method execution. If fields are used within 1391module-level code and we are executing with the -fi option, the 1392initialization values were used to initialize the namespace object(s) 1393only after the table was finished loading. This change Provides an early 1394initialization of objects specified in the initialization file so that 1395field unit values are populated during the table load (not after the 1396load). 1397 1398AcpiExec: Fixed a small memory leak regression that could result in 1399warnings during exit of the utility. These warnings were similar to 1400these: 1401 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 1402 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 1403 1404---------------------------------------- 140529 June 2018. Summary of changes for version 20180629: 1406 1407 14081) iASL Compiler/Disassembler and Tools: 1409 1410iASL: Fixed a regression related to the use of the ASL External 1411statement. Error checking for the use of the External() statement has 1412been relaxed. Previously, a restriction on the use of External meant that 1413the referenced named object was required to be defined in a different 1414table (an SSDT). Thus it would be an error to declare an object as an 1415external and then define the same named object in the same table. For 1416example: 1417 DefinitionBlock (...) 1418 { 1419 External (DEV1) 1420 Device (DEV1){...} // This was an error 1421 } 1422However, this behavior has caused regressions in some existing ASL code, 1423because there is code that depends on named objects and externals (with 1424the same name) being declared in the same table. This change will allow 1425the ASL code above to compile without errors or warnings. 1426 1427iASL: Implemented ASL language extensions for four operators to make some 1428of their arguments optional instead of required: 1429 1) Field (RegionName, AccessType, LockRule, UpdateRule) 1430 2) BankField (RegionName, BankName, BankValue, 1431 AccessType, LockRule, UpdateRule) 1432 3) IndexField (IndexName, DataName, 1433 AccessType, LockRule, UpdateRule) 1434For the Field operators above, the AccessType, LockRule, and UpdateRule 1435are now optional arguments. The default values are: 1436 AccessType: AnyAcc 1437 LockRule: NoLock 1438 UpdateRule: Preserve 1439 4) Mutex (MutexName, SyncLevel) 1440For this operator, the SyncLevel argument is now optional. This argument 1441is rarely used in any meaningful way by ASL code, and thus it makes sense 1442to make it optional. The default value is: 1443 SyncLevel: 0 1444 1445iASL: Attempted use of the ASL Unload() operator now results in the 1446following warning: 1447 "Unload is not supported by all operating systems" 1448This is in fact very true, and the Unload operator may be completely 1449deprecated in the near future. 1450 1451AcpiExec: Fixed a regression for the -fi option (Namespace initialization 1452file. Recent changes in the ACPICA module-level code support altered the 1453table load/initialization sequence . This means that the table load has 1454become a large method execution of the table itself. If Operation Region 1455Fields are used within any module-level code and the -fi option was 1456specified, the initialization values were populated only after the table 1457had completely finished loading (and thus the module-level code had 1458already been executed). This change moves the initialization of objects 1459listed in the initialization file to before the table is executed as a 1460method. Field unit values are now initialized before the table execution 1461is performed. 1462 1463---------------------------------------- 146431 May 2018. Summary of changes for version 20180531: 1465 1466 14671) ACPICA kernel-resident Subsystem: 1468 1469Implemented additional support to help ensure that a DSDT or SSDT is 1470fully loaded even if errors are incurred during the load. The majority of 1471the problems that are seen is the failure of individual AML operators 1472that occur during execution of any module-level code (MLC) existing in 1473the table. This support adds a mechanism to abort the current ASL 1474statement (AML opcode), emit an error message, and to simply move on to 1475the next opcode -- instead of aborting the entire table load. This is 1476different than the execution of a control method where the entire method 1477is aborted upon any error. The goal is to perform a very "best effort" to 1478load the ACPI tables. The most common MLC errors that have been seen in 1479the field are direct references to unresolved ASL/AML symbols (referenced 1480directly without the use of the CondRefOf operator to validate the 1481symbol). This new ACPICA behavior is now compatible with other ACPI 1482implementations. 1483 1484Interpreter: The Unload AML operator is no longer supported for the 1485reasons below. An AE_NOT_IMPLEMENTED exception is returned. 14861) A correct implementation on at least some hosts may not be possible. 14872) Other ACPI implementations do not correctly/fully support it. 14883) It requires host device driver support which is not known to exist. 1489 (To properly support namespace unload out from underneath.) 14904) This AML operator has never been seen in the field. 1491 1492Parser: Added a debug option to dump AML parse sub-trees as they are 1493being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 1494ACPI_DB_PARSE_TREES. 1495 1496Debugger: Reduced the verbosity for errors incurred during table load and 1497module-level code execution. 1498 1499Completed an investigation into adding a namespace node "owner list" 1500instead of the current "owner ID" associated with namespace nodes. This 1501list would link together all nodes that are owned by an individual 1502control method. The purpose would be to enhance control method execution 1503by speeding up cleanup during method exit (all namespace nodes created by 1504a method are deleted upon method termination.) Currently, the entire 1505namespace must be searched for matching owner IDs if (and only if) the 1506method creates named objects outside of the local scope. However, by far 1507the most common case is that methods create objects locally, not outside 1508the method scope. There is already an ACPICA optimization in place that 1509only searches the entire namespace in the rare case of a method creating 1510objects elsewhere in the namespace. Therefore, it is felt that the 1511overhead of adding an additional pointer to each namespace node to 1512implement the owner list makes this feature unnecessary. 1513 1514 15152) iASL Compiler/Disassembler and Tools: 1516 1517iASL, Disassembler, and Template generator: Implemented support for 1518Revision D of the IORT table. Adds a new subtable that is used to specify 1519SMMUv3 PMCGs. rmurphy-arm. 1520 1521Disassembler: Restored correct table header validation for the "special" 1522ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 1523table header and must be special-cased. This was a regression that has 1524been present for apparently a long time. 1525 1526AcpiExec: Reduced verbosity of the local exception handler implemented 1527within acpiexec. This handler is invoked by ACPICA upon any exceptions 1528generated during control method execution. A new option was added: -vh 1529restores the original verbosity level if desired. 1530 1531AcpiExec: Changed the default base from decimal to hex for the -x option 1532(set debug level). This simplifies the use of this option and matches the 1533behavior of the corresponding iASL -x option. 1534 1535AcpiExec: Restored a force-exit on multiple control-c (sigint) 1536interrupts. This allows program termination even if other issues cause 1537the control-c to fail. 1538 1539ASL test suite (ASLTS): Added tests for the recently implemented package 1540element resolution mechanism that allows forward references to named 1541objects from individual package elements (this mechanism provides 1542compatibility with other ACPI implementations.) 1543 1544 1545---------------------------------------- 15468 May 2018. Summary of changes for version 20180508: 1547 1548 15491) ACPICA kernel-resident subsystem: 1550 1551Completed the new (recently deployed) package resolution mechanism for 1552the Load and LoadTable ASL/AML operators. This fixes a regression that 1553was introduced in version 20180209 that could result in an 1554AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 1555(SSDT) that contains package objects. 1556 1557 15582) iASL Compiler/Disassembler and Tools: 1559 1560AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 15611 MB. This change allows for table offsets within the acpidump file to be 1562up to 8 characters. These changes are backwards compatible with existing 1563acpidump files. 1564 1565 1566---------------------------------------- 156727 April 2018. Summary of changes for version 20180427: 1568 1569 15701) ACPICA kernel-resident subsystem: 1571 1572Debugger: Added support for Package objects in the "Test Objects" 1573command. This command walks the entire namespace and evaluates all named 1574data objects (Integers, Strings, Buffers, and now Packages). 1575 1576Improved error messages for the namespace root node. Originally, the root 1577was referred to by the confusing string "\___". This has been replaced by 1578"Namespace Root" for clarification. 1579 1580Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 1581Ian King <colin.king@canonical.com>. 1582 1583 15842) iASL Compiler/Disassembler and Tools: 1585 1586iASL: Implemented support to detect and flag illegal forward references. 1587For compatibility with other ACPI implementations, these references are 1588now illegal at the root level of the DSDT or SSDTs. Forward references 1589have always been illegal within control methods. This change should not 1590affect existing ASL/AML code because of the fact that these references 1591have always been illegal in the other ACPI implementation. 1592 1593iASL: Added error messages for the case where a table OEM ID and OEM 1594TABLE ID strings are longer than the ACPI-defined length. Previously, 1595these strings were simply silently truncated. 1596 1597iASL: Enhanced the -tc option (which creates an AML hex file in C, 1598suitable for import into a firmware project): 1599 1) Create a unique name for the table, to simplify use of multiple 1600SSDTs. 1601 2) Add a protection #ifdef in the file, similar to a .h header file. 1602With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 1603evan.lloyd@arm.com 1604 1605AcpiExec: Added a new option, -df, to disable the local fault handler. 1606This is useful during debugging, where it may be desired to drop into a 1607debugger on a fault. 1608 1609---------------------------------------- 161013 March 2018. Summary of changes for version 20180313: 1611 1612 16131) ACPICA kernel-resident subsystem: 1614 1615Implemented various improvements to the GPE support: 1616 16171) Dispatch all active GPEs at initialization time so that no GPEs are 1618lost. 16192) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 1620before devices are enumerated. 16213) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 1622IRQs are not lost. 16234) Add parallel GPE handling to eliminate the possibility of dispatching 1624the same GPE twice. 16255) Dispatch any pending GPEs after enabling for the first time. 1626 1627AcpiGetObjectInfo - removed support for the _STA method. This was causing 1628problems on some platforms. 1629 1630Added a new _OSI string, "Windows 2017.2". 1631 1632Cleaned up and simplified the module-level code support. These changes 1633are in preparation for the eventual removal of the legacy MLC support 1634(deferred execution), replaced by the new MLC architecture which executes 1635the MLC as a table is loaded (DSDT/SSDTs). 1636 1637Changed a compile-time option to a runtime option. Changes the option to 1638ignore ACPI table load-time package resolution errors into a runtime 1639option. Used only for platforms that generate many AE_NOT_FOUND errors 1640during boot. AcpiGbl_IgnorePackageResolutionErrors. 1641 1642Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 1643ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 1644compilation errors from unused variables (seen with some compilers). 1645 1646 16472) iASL Compiler/Disassembler and Tools: 1648 1649ASLTS: parallelized execution in order to achieve an (approximately) 2X 1650performance increase. 1651 1652ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 1653error reporting. 1654 1655---------------------------------------- 165609 February 2018. Summary of changes for version 20180209: 1657 1658 16591) ACPICA kernel-resident subsystem: 1660 1661Completed the final integration of the recent changes to Package Object 1662handling and the module-level AML code support. This allows forward 1663references from individual package elements when the package object is 1664declared from within module-level code blocks. Provides compatibility 1665with other ACPI implementations. 1666 1667The new architecture for the AML module-level code has been completed and 1668is now the default for the ACPICA code. This new architecture executes 1669the module-level code in-line as the ACPI table is loaded/parsed instead 1670of the previous architecture which deferred this code until after the 1671table was fully loaded. This solves some ASL code ordering issues and 1672provides compatibility with other ACPI implementations. At this time, 1673there is an option to fallback to the earlier architecture, but this 1674support is deprecated and is planned to be completely removed later this 1675year. 1676 1677Added a compile-time option to ignore AE_NOT_FOUND exceptions during 1678resolution of named reference elements within Package objects. Although 1679this is potentially a serious problem, it can generate a lot of 1680noise/errors on platforms whose firmware carries around a bunch of unused 1681Package objects. To disable these errors, define 1682ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 1683errors are always reported for ACPICA applications such as AcpiExec. 1684 1685Fixed a regression related to the explicit type-conversion AML operators 1686(ToXXXX). The regression was introduced early in 2017 but was not seen 1687until recently because these operators are not fully supported by other 1688ACPI implementations and are thus rarely used by firmware developers. The 1689operators are defined by the ACPI specification to not implement the 1690"implicit result object conversion". The regression incorrectly 1691introduced this object conversion for the following explicit conversion 1692operators: 1693 ToInteger 1694 ToString 1695 ToBuffer 1696 ToDecimalString 1697 ToHexString 1698 ToBCD 1699 FromBCD 1700 1701 17022) iASL Compiler/Disassembler and Tools: 1703 1704iASL: Fixed a problem with the compiler constant folding feature as 1705related to the ToXXXX explicit conversion operators. These operators do 1706not support the "implicit result object conversion" by definition. Thus, 1707ASL expressions that use these operators cannot be folded to a simple 1708Store operator because Store implements the implicit conversion. This 1709change uses the CopyObject operator for the ToXXXX operator folding 1710instead. CopyObject is defined to not implement implicit result 1711conversions and is thus appropriate for folding the ToXXXX operators. 1712 1713iASL: Changed the severity of an error condition to a simple warning for 1714the case where a symbol is declared both locally and as an external 1715symbol. This accommodates existing ASL code. 1716 1717AcpiExec: The -ep option to enable the new architecture for module-level 1718code has been removed. It is replaced by the -dp option which instead has 1719the opposite effect: it disables the new architecture (the default) and 1720enables the legacy architecture. When the legacy code is removed in the 1721future, the -dp option will be removed also. 1722 1723---------------------------------------- 172405 January 2018. Summary of changes for version 20180105: 1725 1726 17271) ACPICA kernel-resident subsystem: 1728 1729Updated all copyrights to 2018. This affects all source code modules. 1730 1731Fixed a possible build error caused by an unresolved reference to the 1732AcpiUtSafeStrncpy function. 1733 1734Removed NULL pointer arithmetic in the various pointer manipulation 1735macros. All "(void *) NULL" constructs are converted to "(void *) 0". 1736This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 1737 1738Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 1739Mittal. 1740 1741 17422) iASL Compiler/Disassembler and Tools: 1743 1744ASLTS: Updated all copyrights to 2018. 1745 1746Tools: Updated all signon copyrights to 2018. 1747 1748AcpiXtract: Fixed a regression related to ACPI table signatures where the 1749signature was truncated to 3 characters (instead of 4). 1750 1751AcpiExec: Restore the original terminal mode after the use of the -v and 1752-vd options. 1753 1754ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 1755 1756---------------------------------------- 175714 December 2017. Summary of changes for version 20171214: 1758 1759 17601) ACPICA kernel-resident subsystem: 1761 1762Fixed a regression in the external (public) AcpiEvaluateObjectTyped 1763interface where the optional "pathname" argument had inadvertently become 1764a required argument returning an error if omitted (NULL pointer 1765argument). 1766 1767Fixed two possible memory leaks related to the recently developed "late 1768resolution" of reference objects within ASL Package Object definitions. 1769 1770Added two recently defined _OSI strings: "Windows 2016" and "Windows 17712017". Mario Limonciello. 1772 1773Implemented and deployed a safer version of the C library function 1774strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 1775creation of unterminated strings as a possible result of a standard 1776strncpy. 1777 1778Cleaned up and restructured the global variable file (acglobal.h). There 1779are many changes, but no functional changes. 1780 1781 17822) iASL Compiler/Disassembler and Tools: 1783 1784iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 1785optional OemData field at the end of the table was incorrectly required 1786for proper compilation. It is now correctly an optional field. 1787 1788ASLTS: The entire suite was converted from standard ASL to the ASL+ 1789language, using the ASL-to-ASL+ converter which is integrated into the 1790iASL compiler. A binary compare of all output files has verified the 1791correctness of the conversion. 1792 1793iASL: Fixed the source code build for platforms where "char" is unsigned. 1794This affected the iASL lexer only. Jung-uk Kim. 1795 1796---------------------------------------- 179710 November 2017. Summary of changes for version 20171110: 1798 1799 18001) ACPICA kernel-resident subsystem: 1801 1802This release implements full support for ACPI 6.2A: 1803 NFIT - Added a new subtable, "Platform Capabilities Structure" 1804No other changes to ACPICA were required, since ACPI 6.2A is primarily an 1805errata release of the specification. 1806 1807Other ACPI table changes: 1808 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 1809 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 1810Linton 1811 1812Utilities: Modified the string/integer conversion functions to use 1813internal 64-bit divide support instead of a native divide. On 32-bit 1814platforms, a 64-bit divide typically requires a library function which 1815may not be present in the build (kernel or otherwise). 1816 1817Implemented a targeted error message for timeouts returned from the 1818Embedded Controller device driver. This is seen frequently enough to 1819special-case an AE_TIME returned from an EC operation region access: 1820 "Timeout from EC hardware or EC device driver" 1821 1822Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 1823runtime error messages have the identical prefix. 1824 1825 18262) iASL Compiler/Disassembler and Tools: 1827 1828AcpiXtract: Fixed a problem with table header detection within the 1829acpidump file. Processing a table could be ended early if a 0x40 (@) 1830appears in the original binary table, resulting in the @ symbol appearing 1831in the decoded ASCII field at the end of the acpidump text line. The 1832symbol caused acpixtract to incorrectly think it had reached the end of 1833the current table and the beginning of a new table. 1834 1835AcpiXtract: Added an option (-f) to ignore some errors during table 1836extraction. This initial implementation ignores non-ASCII and non- 1837printable characters found in the acpidump text file. 1838 1839TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 1840for ASLTS. This feature is used to track memory allocations from 1841different memory caches within the ACPICA code. At the end of an ASLTS 1842run, these memory statistics are recorded and stored in a log file. 1843 1844Debugger (user-space version): Implemented a simple "Background" command. 1845Creates a new thread to execute a control method in the background, while 1846control returns to the debugger prompt to allow additional commands. 1847 Syntax: Background <Namepath> [Arguments] 1848 1849---------------------------------------- 185029 September 2017. Summary of changes for version 20170929: 1851 1852 18531) ACPICA kernel-resident subsystem: 1854 1855Redesigned and implemented an improved ASL While() loop timeout 1856mechanism. This mechanism is used to prevent infinite loops in the kernel 1857AML interpreter caused by either non-responsive hardware or incorrect AML 1858code. The new implementation uses AcpiOsGetTimer instead of a simple 1859maximum loop count, and is thus more accurate and constant across 1860different machines. The default timeout is currently 30 seconds, but this 1861may be adjusted later. 1862 1863Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 1864better reflect the new implementation of the loop timeout mechanism. 1865 1866Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 1867and to fix an off-by-one error. Jung-uk Kim. 1868 1869Fixed an EFI build problem by updating the makefiles to for a new file 1870that was added, utstrsuppt.c 1871 1872 18732) iASL Compiler/Disassembler and Tools: 1874 1875Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 1876includes support in the table disassembler, compiler, and template 1877generator. 1878 1879iASL: Added an exception for an illegal type of recursive method 1880invocation. If a method creates named objects, the first recursive call 1881will fail at runtime. This change adds an error detection at compile time 1882to catch the problem up front. Note: Marking such a method as 1883"serialized" will not help with this problem, because the same thread can 1884acquire the method mutex more than once. Example compiler and runtime 1885output: 1886 1887 Method (MTH1) 1888 { 1889 Name (INT1, 1) 1890 MTH1 () 1891 } 1892 1893 dsdt.asl 22: MTH1 () 1894 Error 6152 - ^ Illegal recursive call to method 1895 that creates named objects (MTH1) 1896 1897Previous runtime exception: 1898 ACPI Error: [INT1] Namespace lookup failure, 1899 AE_ALREADY_EXISTS (20170831/dswload2-465) 1900 1901iASL: Updated support for External() opcodes to improve namespace 1902management and error detection. These changes are related to issues seen 1903with multiple-segment namespace pathnames within External declarations, 1904such as below: 1905 1906 External(\_SB.PCI0.GFX0, DeviceObj) 1907 External(\_SB.PCI0.GFX0.ALSI) 1908 1909iASL: Implemented support for multi-line error/warning messages. This 1910enables more detailed and helpful error messages as below, from the 1911initial deployment for the duplicate names error: 1912 1913 DSDT.iiii 1692: Device(PEG2) { 1914 Error 6074 - ^ Name already exists in scope 1915(PEG2) 1916 1917 Original name creation/declaration below: 1918 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 1919 1920AcpiXtract: Added additional flexibility to support differing input hex 1921dump formats. Specifically, hex dumps that contain partial disassembly 1922and/or comments within the ACPI table data definition. There exist some 1923dump utilities seen in the field that create this type of hex dump (such 1924as Simics). For example: 1925 1926 DSDT @ 0xdfffd0c0 (10999 bytes) 1927 Signature DSDT 1928 Length 10999 1929 Revision 1 1930 Checksum 0xf3 (Ok) 1931 OEM_ID BXPC 1932 OEM_table_id BXDSDT 1933 OEM_revision 1 1934 Creator_id 1280593481 1935 Creator_revision 537399345 1936 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 1937 ... 1938 2af0: 5f 4c 30 46 00 a4 01 1939 1940Test suite: Miscellaneous changes/fixes: 1941 More cleanup and simplification of makefiles 1942 Continue compilation of test cases after a compile failure 1943 Do not perform binary compare unless both files actually exist 1944 1945iASL: Performed some code/module restructuring. Moved all memory 1946allocation functions to new modules. Two new files, aslallocate.c and 1947aslcache.c 1948 1949---------------------------------------- 195031 August 2017. Summary of changes for version 20170831: 1951 1952 19531) ACPICA kernel-resident subsystem: 1954 1955Implemented internal support for full 64-bit addresses that appear in all 1956Generic Address Structure (GAS) structures. Previously, only the lower 32 1957bits were used. Affects the use of GAS structures in the FADT and other 1958tables, as well as the GAS structures passed to the AcpiRead and 1959AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 1960 1961Added header support for the PDTT ACPI table (Processor Debug Trigger 1962Table). Full support in the iASL Data Table Compiler and disassembler is 1963forthcoming. 1964 1965 19662) iASL Compiler/Disassembler and Tools: 1967 1968iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 1969Properties Topology Table) where a flag bit was specified in the wrong 1970bit position ("Line Size Valid", bit 6). 1971 1972iASL: Implemented support for Octal integer constants as defined by the 1973ASL language grammar, per the ACPI specification. Any integer constant 1974that starts with a zero is an octal constant. For example, 1975 Store (037777, Local0) /* Octal constant */ 1976 Store (0x3FFF, Local0) /* Hex equivalent */ 1977 Store (16383, Local0) /* Decimal equivalent */ 1978 1979iASL: Improved overflow detection for 64-bit string conversions during 1980compilation of integer constants. "Overflow" in this case means a string 1981that represents an integer that is too large to fit into a 64-bit value. 1982Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 1983the low-order 32 bits with a warning, as previously implemented. Several 1984new exceptions are defined that indicate a 64-bit overflow, as well as 1985the base (radix) that was used during the attempted conversion. Examples: 1986 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 1987 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 1988 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 1989 1990iASL: Added a warning for the case where a ResourceTemplate is declared 1991with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 1992this case, the resulting template is created with a single END_TAG 1993descriptor, which is essentially useless. 1994 1995iASL: Expanded the -vw option (ignore specific warnings/remarks) to 1996include compilation error codes as well. 1997 1998---------------------------------------- 199928 July 2017. Summary of changes for version 20170728: 2000 2001 20021) ACPICA kernel-resident subsystem: 2003 2004Fixed a regression seen with small resource descriptors that could cause 2005an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 2006 2007AML interpreter: Implemented a new feature that allows forward references 2008from individual named references within package objects that are 2009contained within blocks of "module-level code". This provides 2010compatibility with other ACPI implementations and supports existing 2011firmware that depends on this feature. Example: 2012 2013 Name (ABCD, 1) 2014 If (ABCD) /* An If() at module-level */ 2015 { 2016 Name (PKG1, Package() 2017 { 2018 INT1 /* Forward reference to object INT1 2019*/ 2020 }) 2021 Name (INT1, 0x1234) 2022 } 2023 2024AML Interpreter: Fixed a problem with the Alias() operator where aliases 2025to some ASL objects were not handled properly. Objects affected are: 2026Mutex, Event, and OperationRegion. 2027 2028AML Debugger: Enhanced to properly handle AML Alias objects. These 2029objects have one level of indirection which was not fully supported by 2030the debugger. 2031 2032Table Manager: Added support to detect and ignore duplicate SSDTs within 2033the XSDT/RSDT. This error in the XSDT has been seen in the field. 2034 2035EFI and EDK2 support: 2036 Enabled /WX flag for MSVC builds 2037 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 2038 Added local support for 64-bit multiply and shift operations 2039 Added support to compile acpidump.efi on Windows 2040 Added OSL function stubs for interfaces not used under EFI 2041 2042Added additional support for the _DMA predefined name. _DMA returns a 2043buffer containing a resource template. This change add support within the 2044resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 2045resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 2046 2047 20482) iASL Compiler/Disassembler and Tools: 2049 2050iASL: Fixed a problem where the internal input line buffer(s) could 2051overflow if there are very long lines in the input ASL source code file. 2052Implemented buffer management that automatically increases the size of 2053the buffers as necessary. 2054 2055iASL: Added an option (-vx) to "expect" particular remarks, warnings and 2056errors. If the specified exception is not raised during compilation, the 2057compiler emits an error. This is intended to support the ASL test suite, 2058but may be useful in other contexts. 2059 2060iASL: Implemented a new predefined macro, __METHOD__, which returns a 2061string containing the name of the current control method that is being 2062compiled. 2063 2064iASL: Implemented debugger and table compiler support for the SDEI ACPI 2065table (Software Delegated Exception Interface). James Morse 2066<james.morse@arm.com> 2067 2068Unix/Linux makefiles: Added an option to disable compile optimizations. 2069The disable occurs when the NOOPT flag is set to TRUE. 2070theracermaster@gmail.com 2071 2072Acpidump: Added support for multiple DSDT and FACS tables. This can occur 2073when there are different tables for 32-bit versus 64-bit. 2074 2075Enhanced error reporting for the ASL test suite (ASLTS) by removing 2076unnecessary/verbose text, and emit the actual line number where an error 2077has occurred. These changes are intended to improve the usefulness of the 2078test suite. 2079 2080---------------------------------------- 208129 June 2017. Summary of changes for version 20170629: 2082 2083 20841) ACPICA kernel-resident subsystem: 2085 2086Tables: Implemented a deferred ACPI table verification. This is useful 2087for operating systems where the tables cannot be verified in the early 2088initialization stage due to early memory mapping limitations on some 2089architectures. Lv Zheng. 2090 2091Tables: Removed the signature validation for dynamically loaded tables. 2092Provides compatibility with other ACPI implementations. Previously, only 2093SSDT tables were allowed, as per the ACPI specification. Now, any table 2094signature can be used via the Load() operator. Lv Zheng. 2095 2096Tables: Fixed several mutex issues that could cause errors during table 2097acquisition. Lv Zheng. 2098 2099Tables: Fixed a problem where an ACPI warning could be generated if a 2100null pointer was passed to the AcpiPutTable interface. Lv Zheng. 2101 2102Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 2103AcpiPutTable interfaces. This applies to the "late stage" table loading 2104when the use of AcpiPutTable is no longer required (since the system 2105memory manager is fully running and available). Lv Zheng. 2106 2107Fixed/Reverted a regression during processing of resource descriptors 2108that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 2109exception in this case. 2110 2111Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 2112I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 2113 2114Interpreter: Fixed a possible fault if an Alias operator with an invalid 2115or duplicate target is encountered during Alias creation in 2116AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 2117 2118Added an option to use designated initializers for function pointers. 2119Kees Cook <keescook@google.com> 2120 2121 21222) iASL Compiler/Disassembler and Tools: 2123 2124iASL: Allow compilation of External declarations with target pathnames 2125that refer to existing named objects within the table. Erik Schmauss. 2126 2127iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 2128FieldUnit name also is declared via External in the same table. Erik 2129Schmauss. 2130 2131iASL: Allow existing scope names within pathnames used in External 2132statements. For example: 2133 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 2134 Device (ABCD) 2135 2136iASL: IORT ACPI table: Implemented changes required to decode the new 2137Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 2138compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 2139 2140Disassembler: Don't abort disassembly on errors from External() 2141statements. Erik Schmauss. 2142 2143Disassembler: fixed a possible fault when one of the Create*Field 2144operators references a Resource Template. ACPICA Bugzilla 1396. 2145 2146iASL: In the source code, resolved some naming inconsistences across the 2147parsing support. Fixes confusion between "Parse Op" and "Parse Node". 2148Adds a new file, aslparseop.c 2149 2150---------------------------------------- 215131 May 2017. Summary of changes for version 20170531: 2152 2153 21540) ACPI 6.2 support: 2155 2156The ACPI specification version 6.2 has been released and is available at 2157http://uefi.org/specifications 2158 2159This version of ACPICA fully supports the ACPI 6.2 specification. Changes 2160are summarized below. 2161 2162New ACPI tables (Table Compiler/Disassembler/Templates): 2163 HMAT (Heterogeneous Memory Attributes Table) 2164 WSMT (Windows SMM Security Mitigation Table) 2165 PPTT (Processor Properties Topology Table) 2166 2167New subtables for existing ACPI tables: 2168 HEST (New subtable, Arch-deferred machine check) 2169 SRAT (New subtable, Arch-specific affinity structure) 2170 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 2171 2172Simple updates for existing ACPI tables: 2173 BGRT (two new flag bits) 2174 HEST (New bit defined for several subtables, GHES_ASSIST) 2175 2176New Resource Descriptors and Resource macros (Compiler/Disassembler): 2177 PinConfig() 2178 PinFunction() 2179 PinGroup() 2180 PinGroupConfig() 2181 PinGroupFunction() 2182 New type for hardware error notification (section 18.3.2.9) 2183 2184New predefined names/methods (Compiler/Interpreter): 2185 _HMA (Heterogeneous Memory Attributes) 2186 _LSI (Label Storage Information) 2187 _LSR (Label Storage Read) 2188 _LSW (Label Storage Write) 2189 2190ASL grammar/macro changes (Compiler): 2191 For() ASL macro, implemented with the AML while operator 2192 Extensions to Concatenate operator 2193 Support for multiple definition blocks in same ASL file 2194 Clarification for Buffer operator 2195 Allow executable AML code underneath all scopes (Devices, etc.) 2196 Clarification/change for the _OSI return value 2197 ASL grammar update for reference operators 2198 Allow a zero-length string for AML filename in DefinitionBlock 2199 2200Miscellaneous: 2201 New device object notification value 2202 Remove a notify value (0x0C) for graceful shutdown 2203 New UUIDs for processor/cache properties and 2204 physical package property 2205 New _HID, ACPI0014 (Wireless Power Calibration Device) 2206 2207 22081) ACPICA kernel-resident subsystem: 2209 2210Added support to disable ACPI events on hardware-reduced platforms. 2211Eliminates error messages of the form "Could not enable fixed event". Lv 2212Zheng 2213 2214Fixed a problem using Device/Thermal objects with the ObjectType and 2215DerefOf ASL operators. This support had not been fully/properly 2216implemented. 2217 2218Fixed a problem where if a Buffer object containing a resource template 2219was longer than the actual resource template, an error was generated -- 2220even though the AML is legal. This case has been seen in the field. 2221 2222Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 2223The values for DUAL_PIC and MULTIPLE_APIC were reversed. 2224 2225Added header file changes for the TPM2 ACPI table. Update to new version 2226of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 2227 2228Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 2229These interfaces are intended to be used only in conjunction with the 2230predefined _DLM method (Device Lock Method). "This object appears in a 2231device scope when AML access to the device must be synchronized with the 2232OS environment". 2233 2234Example Code and Data Size: These are the sizes for the OS-independent 2235acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2236debug version of the code includes the debug output trace mechanism and 2237has a much larger code and data size. 2238 2239 Current Release: 2240 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 2241 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 2242 Previous Release: 2243 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2244 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2245 2246 22472) iASL Compiler/Disassembler and Tools: 2248 2249iASL: Fixed a problem where an External() declaration could not refer to 2250a Field Unit. Erik Schmauss. 2251 2252Disassembler: Improved support for the Switch/Case operators. This 2253feature will disassemble AML code back to the original Switch operators 2254when possible, instead of an If..Else sequence. David Box 2255 2256iASL and disassembler: Improved the handling of multiple extraneous 2257parentheses for both ASL input and disassembled ASL output. 2258 2259Improved the behavior of the iASL compiler and disassembler to detect 2260improper use of external declarations 2261 2262Disassembler: Now aborts immediately upon detection of an unknown AML 2263opcode. The AML parser has no real way to recover from this, and can 2264result in the creation of an ill-formed parse tree that causes errors 2265later during the disassembly. 2266 2267All tools: Fixed a problem where the Unix application OSL did not handle 2268control-c correctly. For example, a control-c could incorrectly wake the 2269debugger. 2270 2271AcpiExec: Improved the Control-C handling and added a handler for 2272segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2273environments. 2274 2275Reduced the verbosity of the generic unix makefiles. Previously, each 2276compilation displayed the full set of compiler options. This has been 2277eliminated as the options are easily inspected within the makefiles. Each 2278compilation now results in a single line of output. 2279 2280---------------------------------------- 228103 March 2017. Summary of changes for version 20170303: 2282 2283 22840) ACPICA licensing: 2285 2286The licensing information at the start of each source code module has 2287been updated. In addition to the Intel license, the dual GPLv2/BSD 2288license has been added for completeness. Now, a single version of the 2289source code should be suitable for all ACPICA customers. This is the 2290major change for this release since it affects all source code modules. 2291 2292 22931) ACPICA kernel-resident subsystem: 2294 2295Fixed two issues with the common asltypes.h header that could cause 2296problems in some environments: (Kim Jung-uk) 2297 Removed typedef for YY_BUFFER_STATE ? 2298 Fixes an error with earlier versions of Flex. 2299 Removed use of FILE typedef (which is only defined in stdio.h) 2300 2301 23022) iASL Compiler/Disassembler and Tools: 2303 2304Disassembler: fixed a regression introduced in 20170224. A fix for a 2305memory leak related to resource descriptor tags (names) could fault when 2306the disassembler was generated with 64-bit compilers. 2307 2308The ASLTS test suite has been updated to implement a new testing 2309architecture. During generation of the suite from ASL source, both the 2310ASL and ASL+ compilers are now validated, as well as the disassembler 2311itself (Erik Schmauss). The architecture executes as follows: 2312 2313 For every ASL source module: 2314 Compile (legacy ASL compilation) 2315 Disassemble the resulting AML to ASL+ source code 2316 Compile the new ASL+ module 2317 Perform a binary compare on the legacy AML and the new ASL+ AML 2318 The ASLTS suite then executes normally using the AML binaries. 2319 2320---------------------------------------- 232124 February 2017. Summary of changes for version 20170224: 2322 2323 23241) ACPICA kernel-resident subsystem: 2325 2326Interpreter: Fixed two issues with the control method return value auto- 2327repair feature, where an attempt to double-delete an internal object 2328could result in an ACPICA warning (for _CID repair and others). No fault 2329occurs, however, because the attempted deletion (actually a release to an 2330internal cache) is detected and ignored via object poisoning. 2331 2332Debugger: Fixed an AML interpreter mutex issue during the single stepping 2333of control methods. If certain debugger commands are executed during 2334stepping, a mutex acquire/release error could occur. Lv Zheng. 2335 2336Fixed some issues generating ACPICA with the Intel C compiler by 2337restoring the original behavior and compiler-specific include file in 2338acenv.h. Lv Zheng. 2339 2340Example Code and Data Size: These are the sizes for the OS-independent 2341acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2342debug version of the code includes the debug output trace mechanism and 2343has a much larger code and data size. 2344 2345 Current Release: 2346 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2347 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2348 Previous Release: 2349 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2350 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2351 2352 23532) iASL Compiler/Disassembler and Tools: 2354 2355iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2356tool has been designed, implemented, and included in this release. The 2357key feature of this utility is that the original comments within the 2358input ASL file are preserved during the conversion process, and included 2359within the converted ASL+ file -- thus creating a transparent conversion 2360of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2361 2362 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2363converted code 2364 2365iASL/Disassembler: Improved the detection and correct disassembly of 2366Switch/Case operators. This feature detects sequences of if/elseif/else 2367operators that originated from ASL Switch/Case/Default operators and 2368emits the original operators. David Box. 2369 2370iASL: Improved the IORT ACPI table support in the following areas. Lv 2371Zheng: 2372 Clear MappingOffset if the MappingCount is zero. 2373 Fix the disassembly of the SMMU GSU interrupt offset. 2374 Update the template file for the IORT table. 2375 2376Disassembler: Enhanced the detection and disassembly of resource 2377template/descriptor within a Buffer object. An EndTag descriptor is now 2378required to have a zero second byte, since all known ASL compilers emit 2379this. This helps eliminate incorrect decisions when a buffer is 2380disassembled (false positives on resource templates). 2381 2382---------------------------------------- 238319 January 2017. Summary of changes for version 20170119: 2384 2385 23861) General ACPICA software: 2387 2388Entire source code base: Added the 2017 copyright to all source code 2389legal/licensing module headers and utility/tool signons. This includes 2390the standard Linux dual-license header. This affects virtually every file 2391in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2392the ACPICA test suite. 2393 2394 23952) iASL Compiler/Disassembler and Tools: 2396 2397iASL: Removed/fixed an inadvertent remark when a method argument 2398containing a reference is used as a target operand within the method (and 2399never used as a simple argument), as in the example below. Jeffrey Hugo. 2400 2401 dsdt.asl 1507: Store(0x1, Arg0) 2402 Remark 2146 - ^ Method Argument is never used (Arg0) 2403 2404All tools: Removed the bit width of the compiler that generated the tool 2405from the common signon for all user space tools. This proved to be 2406confusing and unnecessary. This includes similar removal of HARDWARE_NAME 2407from the generic makefiles (Thomas Petazzoni). Example below. 2408 2409 Old: 2410 ASL+ Optimizing Compiler version 20170119-32 2411 ASL+ Optimizing Compiler version 20170119-64 2412 2413 New: 2414 ASL+ Optimizing Compiler version 20170119 2415 2416---------------------------------------- 241722 December 2016. Summary of changes for version 20161222: 2418 2419 24201) ACPICA kernel-resident subsystem: 2421 2422AML Debugger: Implemented a new mechanism to simplify and enhance 2423debugger integration into all environments, including kernel debuggers 2424and user-space utilities, as well as remote debug services. This 2425mechanism essentially consists of new OSL interfaces to support debugger 2426initialization/termination, as well as wait/notify interfaces to perform 2427the debugger handshake with the host. Lv Zheng. 2428 2429 New OSL interfaces: 2430 AcpiOsInitializeDebugger (void) 2431 AcpiOsTerminateDebugger (void) 2432 AcpiOsWaitCommandReady (void) 2433 AcpiOsNotifyCommandComplete (void) 2434 2435 New OS services layer: 2436 osgendbg.c -- Example implementation, and used for AcpiExec 2437 2438Update for Generic Address Space (GAS) support: Although the AccessWidth 2439and/or BitOffset fields of the GAS are not often used, this change now 2440fully supports these fields. This affects the internal support for FADT 2441registers, registers in other ACPI data tables, and the AcpiRead and 2442AcpiWrite public interfaces. Lv Zheng. 2443 2444Sleep support: In order to simplify integration of ACPI sleep for the 2445various host operating systems, a new OSL interface has been introduced. 2446AcpiOsEnterSleep allows the host to perform any required operations 2447before the final write to the sleep control register(s) is performed by 2448ACPICA. Lv Zheng. 2449 2450 New OSL interface: 2451 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 2452 2453 Called from these internal interfaces: 2454 AcpiHwLegacySleep 2455 AcpiHwExtendedSleep 2456 2457EFI support: Added a very small EFI/ACPICA example application. Provides 2458a simple demo for EFI integration, as well as assisting with resolution 2459of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 2460 2461 source/tools/efihello/efihello.c 2462 2463Local C library: Implemented several new functions to enhance ACPICA 2464portability, for environments where these clib functions are not 2465available (such as EFI). Lv Zheng: 2466 putchar 2467 getchar 2468 strpbrk 2469 strtok 2470 memmove 2471 2472Fixed a regression where occasionally a valid resource descriptor was 2473incorrectly detected as invalid at runtime, and a 2474AE_AML_NO_RESOURCE_END_TAG was returned. 2475 2476Fixed a problem with the recently implemented support that enables 2477control method invocations as Target operands to many ASL operators. 2478Warnings of this form: "Needed type [Reference], found [Processor]" were 2479seen at runtime for some method invocations. 2480 2481Example Code and Data Size: These are the sizes for the OS-independent 2482acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2483debug version of the code includes the debug output trace mechanism and 2484has a much larger code and data size. 2485 2486 Current Release: 2487 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 2488 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 2489 Previous Release: 2490 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2491 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2492 2493 24942) iASL Compiler/Disassembler and Tools: 2495 2496Disassembler: Enhanced output by adding the capability to detect and 2497disassemble ASL Switch/Case statements back to the original ASL source 2498code instead of if/else blocks. David Box. 2499 2500AcpiHelp: Split a large file into separate files based upon 2501functionality/purpose. New files are: 2502 ahaml.c 2503 ahasl.c 2504 2505---------------------------------------- 250617 November 2016. Summary of changes for version 20161117: 2507 2508 25091) ACPICA kernel-resident subsystem: 2510 2511Table Manager: Fixed a regression introduced in 20160729, "FADT support 2512cleanup". This was an attempt to remove all references in the source to 2513the FADT version 2, which never was a legal version number. It was 2514skipped because it was an early version of 64-bit support that was 2515eventually abandoned for the current 64-bit support. 2516 2517Interpreter: Fixed a problem where runtime implicit conversion was 2518incorrectly disabled for the ASL operators below. This brings the 2519behavior into compliance with the ACPI specification: 2520 FromBCD 2521 ToBCD 2522 ToDecimalString 2523 ToHexString 2524 ToInteger 2525 ToBuffer 2526 2527Table Manager: Added a new public interface, AcpiPutTable, used to 2528release and free an ACPI table returned by AcpiGetTable and related 2529interfaces. Lv Zheng. 2530 2531Example Code and Data Size: These are the sizes for the OS-independent 2532acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2533debug version of the code includes the debug output trace mechanism and 2534has a much larger code and data size. 2535 2536 Current Release: 2537 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2538 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2539 Previous Release: 2540 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2541 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2542 2543 25442) iASL Compiler/Disassembler and Tools: 2545 2546Disassembler: Fixed a regression for disassembly of Resource Template. 2547Detection of templates in the AML stream missed some types of templates. 2548 2549iASL: Fixed a problem where an Access Size error was returned for the PCC 2550address space when the AccessSize of the GAS register is greater than a 2551DWORD. Hoan Tran. 2552 2553iASL: Implemented several grammar changes for the operators below. These 2554changes are slated for the next version of the ACPI specification: 2555 RefOf - Disallow method invocation as an operand 2556 CondRefOf - Disallow method invocation as an operand 2557 DerefOf - Disallow operands that use the result from operators 2558that 2559 do not return a reference (Changed TermArg to 2560SuperName). 2561 2562iASL: Control method invocations are now allowed for Target operands, as 2563per the ACPI specification. Removed error for using a control method 2564invocation as a Target operand. 2565 2566Disassembler: Improved detection of Resource Templates, Unicode, and 2567Strings within Buffer objects. These subtypes do not contain a specific 2568opcode to indicate the originating ASL code, and they must be detected by 2569other means within the disassembler. 2570 2571iASL: Implemented an optimization improvement for 32-bit ACPI tables 2572(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 2573only after 64-bit to 32-bit truncation. A truncation warning message is 2574still emitted, however. 2575 2576AcpiXtract: Implemented handling for both types of line terminators (LF 2577or CR/LF) so that it can accept AcpiDump output files from any system. 2578Peter Wu. 2579 2580AcpiBin: Added two new options for comparing AML files: 2581 -a: compare and display ALL mismatches 2582 -o: start compare at this offset into the second file 2583 2584---------------------------------------- 258530 September 2016. Summary of changes for version 20160930: 2586 2587 25881) ACPICA kernel-resident subsystem: 2589 2590Fixed a regression in the internal AcpiTbFindTable function where a non 2591AE_OK exception could inadvertently be returned even if the function did 2592not fail. This problem affects the following operators: 2593 DataTableRegion 2594 LoadTable 2595 2596Fixed a regression in the LoadTable operator where a load to any 2597namespace location other than the root no longer worked properly. 2598 2599Increased the maximum loop count value that will result in the 2600AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 2601prevent infinite loops within the AML interpreter and thus the host OS 2602kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 26031,048,575). 2604 2605Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 2606acpixf.h file. This allows hosts to easily configure the maximum loop 2607count at runtime. 2608 2609Removed an illegal character in the strtoul64.c file. This character 2610caused errors with some C compilers. 2611 2612Example Code and Data Size: These are the sizes for the OS-independent 2613acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2614debug version of the code includes the debug output trace mechanism and 2615has a much larger code and data size. 2616 2617 Current Release: 2618 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2619 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2620 Previous Release: 2621 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 2622 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2623 2624 26252) iASL Compiler/Disassembler and Tools: 2626 2627Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 2628the simpler ASL ElseIf keyword. During the conversion, a trailing If 2629block could be lost and missing from the disassembled output. 2630 2631iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 2632the missing rule caused a parse error when using the Index operator as an 2633operand to ObjectType. This construct now compiles properly. Example: 2634 ObjectType(PKG1[4]). 2635 2636iASL: Correctly handle unresolved symbols in the hardware map file (-lm 2637option). Previously, unresolved symbols could cause a protection fault. 2638Such symbols are now marked as unresolved in the map file. 2639 2640iASL: Implemented support to allow control method invocations as an 2641operand to the ASL DeRefOf operator. Example: 2642 DeRefOf(MTH1(Local0)) 2643 2644Disassembler: Improved support for the ToPLD ASL macro. Detection of a 2645possible _PLD buffer now includes examination of both the normal buffer 2646length (16 or 20) as well as the surrounding AML package length. 2647 2648Disassembler: Fixed a problem with the decoding of complex expressions 2649within the Divide operator for ASL+. For the case where both the quotient 2650and remainder targets are specified, the entire statement cannot be 2651disassembled. Previously, the output incorrectly contained a mix of ASL- 2652and ASL+ operators. This mixed statement causes a syntax error when 2653compiled. Example: 2654 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 2655disassembled to: 2656 Divide (INT1 + 6, 128, RSLT, QUOT) 2657 2658iASL/Tools: Added support to process AML and non-AML ACPI tables 2659consistently. For the disassembler and AcpiExec, allow all types of ACPI 2660tables (AML and data tables). For the iASL -e option, allow only AML 2661tables (DSDT/SSDT). 2662 2663---------------------------------------- 266431 August 2016. Summary of changes for version 20160831: 2665 2666 26671) ACPICA kernel-resident subsystem: 2668 2669Improve support for the so-called "module-level code", which is defined 2670to be math, logical and control AML opcodes that appear outside of any 2671control method. This change improves the support by adding more opcodes 2672that can be executed in the manner. Some other issues have been solved, 2673and the ASL grammar changes to support such code under all scope 2674operators (Device, etc.) are complete. Lv Zheng. 2675 2676UEFI support: these OSL functions have been implemented. This is an 2677additional step toward supporting the AcpiExec utility natively (with 2678full hardware access) under UEFI. Marcelo Ferreira. 2679 AcpiOsReadPciConfiguration 2680 AcpiOsWritePciConfiguration 2681 2682Fixed a possible mutex error during control method auto-serialization. Lv 2683Zheng. 2684 2685Updated support for the Generic Address Structure by fully implementing 2686all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 2687Zheng. 2688 2689Updated the return value for the internal _OSI method. Instead of 26900xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 2691for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 2692implementations, and will be reflected and clarified in the next version 2693of the ACPI specification. 2694 2695Implemented two new table events that can be passed to an ACPICA table 2696handler. These events are used to indicate a table installation or 2697uninstallation. These events are used in addition to existed table load 2698and unload events. Lv Zheng. 2699 2700Implemented a cleanup for all internal string-to-integer conversions. 2701Consolidate multiple versions of this functionality and limit possible 2702bases to either 10 or 16 to simplify the code. Adds a new file, 2703utstrtoul64. 2704 2705Cleanup the inclusion order of the various compiler-specific headers. 2706This simplifies build configuration management. The compiler-specific 2707headers are now split out from the host-specific headers. Lv Zheng. 2708 2709Example Code and Data Size: These are the sizes for the OS-independent 2710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2711debug version of the code includes the debug output trace mechanism and 2712has a much larger code and data size. 2713 2714 Current Release: 2715 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 2716 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2717 2718 27192) iASL Compiler/Disassembler and Tools: 2720 2721iASL/AcpiExec: Added a command line option to display the build date/time 2722of the tool (-vd). This can be useful to verify that the correct version 2723of the tools are being used. 2724 2725AML Debugger: Implemented a new subcommand ("execute predef") to execute 2726all predefined control methods and names within the current namespace. 2727This can be useful for debugging problems with ACPI tables and the ACPI 2728namespace. 2729 2730---------------------------------------- 273129 July 2016. Summary of changes for version 20160729: 2732 2733 27341) ACPICA kernel-resident subsystem: 2735 2736Implemented basic UEFI support for the various ACPICA tools. This 2737includes: 27381) An OSL to implement the various AcpiOs* interfaces on UEFI. 27392) Support to obtain the ACPI tables on UEFI. 27403) Local implementation of required C library functions not available on 2741UEFI. 27424) A front-end (main) function for the tools for UEFI-related 2743initialization. 2744 2745The initial deployment of this support is the AcpiDump utility executing 2746as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 2747Current environments supported are Linux/Unix. MSVC generation is not 2748supported at this time. See the generate/efi/README file for build 2749instructions. Lv Zheng. 2750 2751Future plans include porting the AcpiExec utility to execute natively on 2752the platform with I/O and memory access. This will allow viewing/dump of 2753the platform namespace and native execution of ACPI control methods that 2754access the actual hardware. To fully implement this support, the OSL 2755functions below must be implemented with UEFI interfaces. Any community 2756help in the implementation of these functions would be appreciated: 2757 AcpiOsReadPort 2758 AcpiOsWritePort 2759 AcpiOsReadMemory 2760 AcpiOsWriteMemory 2761 AcpiOsReadPciConfiguration 2762 AcpiOsWritePciConfiguration 2763 2764Restructured and standardized the C library configuration for ACPICA, 2765resulting in the various configuration options below. This includes a 2766global restructuring of the compiler-dependent and platform-dependent 2767include files. These changes may affect the existing platform-dependent 2768configuration files on some hosts. Lv Zheng. 2769 2770The current C library configuration options appear below. For any issues, 2771it may be helpful to examine the existing compiler-dependent and 2772platform-dependent files as examples. Lv Zheng. 2773 27741) Linux kernel: 2775 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2776library. 2777 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 27782) Unix/Windows/BSD applications: 2779 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 2780library. 2781 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 27823) UEFI applications: 2783 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2784library. 2785 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 27864) UEFI applications (EDK2/StdLib): 2787 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 2788 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 2789 2790 2791AML interpreter: "module-level code" support. Allows for execution of so- 2792called "executable" AML code (math/logical operations, etc.) outside of 2793control methods not just at the module level (top level) but also within 2794any scope declared outside of a control method - Scope{}, Device{}, 2795Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 2796 2797Simplified the configuration of the "maximum AML loops" global option by 2798adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 2799modified at runtime. 2800 2801 2802Example Code and Data Size: These are the sizes for the OS-independent 2803acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2804debug version of the code includes the debug output trace mechanism and 2805has a much larger code and data size. 2806 2807 Current Release: 2808 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 2809 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2810 2811 28122) iASL Compiler/Disassembler and Tools: 2813 2814iASL: Add full support for the RASF ACPI table (RAS Features Table). 2815Includes disassembler, data table compiler, and header support. 2816 2817iASL Expand "module-level code" support. Allows for 2818compilation/disassembly of so-called "executable" AML code (math/logical 2819operations, etc.) outside of control methods not just at the module level 2820(top level) but also within any scope declared outside of a control 2821method - Scope{}, Device{}, Processor{}, PowerResource{}, and 2822ThermalZone{}. 2823 2824AcpiDump: Added support for dumping all SSDTs on newer versions of 2825Windows. These tables are now easily available -- SSDTs are not available 2826through the registry on older versions. 2827 2828---------------------------------------- 282927 May 2016. Summary of changes for version 20160527: 2830 2831 28321) ACPICA kernel-resident subsystem: 2833 2834Temporarily reverted the new arbitrary bit length/alignment support in 2835AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 2836a number of regressions with the new code that need to be fully resolved 2837and tested before this support can be finally integrated into ACPICA. 2838Apologies for any inconveniences these issues may have caused. 2839 2840The ACPI message macros are not configurable (ACPI_MSG_ERROR, 2841ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 2842and ACPI_MSG_BIOS_WARNING). Lv Zheng. 2843 2844Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 2845option. Adds a new return macro, return_STR. Junk-uk Kim. 2846 2847Example Code and Data Size: These are the sizes for the OS-independent 2848acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2849debug version of the code includes the debug output trace mechanism and 2850has a much larger code and data size. 2851 2852 Current Release: 2853 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 2854 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2855 Previous Release: 2856 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2857 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 2858 2859---------------------------------------- 286022 April 2016. Summary of changes for version 20160422: 2861 28621) ACPICA kernel-resident subsystem: 2863 2864Fixed a regression in the GAS (generic address structure) arbitrary bit 2865support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 2866and incorrect return values. Lv Zheng. ACPICA BZ 1270. 2867 2868ACPI 6.0: Added support for new/renamed resource macros. One new argument 2869was added to each of these macros, and the original name has been 2870deprecated. The AML disassembler will always disassemble to the new 2871names. Support for the new macros was added to iASL, disassembler, 2872resource manager, and the acpihelp utility. ACPICA BZ 1274. 2873 2874 I2cSerialBus -> I2cSerialBusV2 2875 SpiSerialBus -> SpiSerialBusV2 2876 UartSerialBus -> UartSerialBusV2 2877 2878ACPI 6.0: Added support for a new integer field that was appended to the 2879package object returned by the _BIX method. This adds iASL compile-time 2880and AML runtime error checking. ACPICA BZ 1273. 2881 2882ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 2883Subspace Type2" (Headers, Disassembler, and data table compiler). 2884 2885Example Code and Data Size: These are the sizes for the OS-independent 2886acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2887debug version of the code includes the debug output trace mechanism and 2888has a much larger code and data size. 2889 2890 Current Release: 2891 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2892 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2893 Previous Release: 2894 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2895 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2896 2897 28982) iASL Compiler/Disassembler and Tools: 2899 2900iASL: Implemented an ASL grammar extension to allow/enable executable 2901"module-level code" to be created and executed under the various 2902operators that create new scopes. This type of AML code is already 2903supported in all known AML interpreters, and the grammar change will 2904appear in the next version of the ACPI specification. Simplifies the 2905conditional runtime creation of named objects under these object types: 2906 2907 Device 2908 PowerResource 2909 Processor 2910 Scope 2911 ThermalZone 2912 2913iASL: Implemented a new ASL extension, a "For" loop macro to add greater 2914ease-of-use to the ASL language. The syntax is similar to the 2915corresponding C operator, and is implemented with the existing AML While 2916opcode -- thus requiring no changes to existing AML interpreters. 2917 2918 For (Initialize, Predicate, Update) {TermList} 2919 2920Grammar: 2921 ForTerm := 2922 For ( 2923 Initializer // Nothing | TermArg => ComputationalData 2924 Predicate // Nothing | TermArg => ComputationalData 2925 Update // Nothing | TermArg => ComputationalData 2926 ) {TermList} 2927 2928 2929iASL: The _HID/_ADR detection and validation has been enhanced to search 2930under conditionals in order to allow these objects to be conditionally 2931created at runtime. 2932 2933iASL: Fixed several issues with the constant folding feature. The 2934improvement allows better detection and resolution of statements that can 2935be folded at compile time. ACPICA BZ 1266. 2936 2937iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 2938conversion to the ASL ElseIf operator where incorrect ASL code could be 2939generated. 2940 2941iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 2942sometimes an extra (and extraneous) set of parentheses were emitted for 2943some combinations of operators. Although this did not cause any problems 2944with recompilation of the disassembled code, it made the code more 2945difficult to read. David Box. ACPICA BZ 1231. 2946 2947iASL: Changed to ignore the unreferenced detection for predefined names 2948of resource descriptor elements, when the resource descriptor is 2949created/defined within a control method. 2950 2951iASL: Disassembler: Fix a possible fault with externally declared Buffer 2952objects. 2953 2954---------------------------------------- 295518 March 2016. Summary of changes for version 20160318: 2956 29571) ACPICA kernel-resident subsystem: 2958 2959Added support for arbitrary bit lengths and bit offsets for registers 2960defined by the Generic Address Structure. Previously, only aligned bit 2961lengths of 8/16/32/64 were supported. This was sufficient for many years, 2962but recently some machines have been seen that require arbitrary bit- 2963level support. ACPICA BZ 1240. Lv Zheng. 2964 2965Fixed an issue where the \_SB._INI method sometimes must be evaluated 2966before any _REG methods are evaluated. Lv Zheng. 2967 2968Implemented several changes related to ACPI table support 2969(Headers/Disassembler/TableCompiler): 2970NFIT: For ACPI 6.1, updated to add some additional new fields and 2971constants. 2972FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 29736). 2974DMAR: Added new constants per the 10/2014 DMAR spec. 2975IORT: Added new subtable per the 10/2015 IORT spec. 2976HEST: For ACPI 6.1, added new constants and new subtable. 2977DBG2: Added new constants per the 12/2015 DBG2 spec. 2978FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 2979ACPICA BZ 1249. 2980ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 2981 2982Updated header support for the DMAR table to match the current version of 2983the related spec. 2984 2985Added extensions to the ASL Concatenate operator to allow any ACPI object 2986to be passed as an operand. Any object other than Integer/String/Buffer 2987simply returns a string containing the object type. This extends the 2988usefulness of the Printf macros. Previously, Concatenate would abort the 2989control method if a non-data object was encountered. 2990 2991ACPICA source code: Deployed the C "const" keyword across the source code 2992where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 2993 2994Example Code and Data Size: These are the sizes for the OS-independent 2995acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2996debug version of the code includes the debug output trace mechanism and 2997has a much larger code and data size. 2998 2999 Current Release: 3000 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3001 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3002 Previous Release: 3003 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3004 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3005 3006 30072) iASL Compiler/Disassembler and Tools: 3008 3009iASL/Disassembler: Improved the heuristic used to determine the number of 3010arguments for an externally defined control method (a method in another 3011table). Although this is an improvement, there is no deterministic way to 3012"guess" the number of method arguments. Only the ACPI 6.0 External opcode 3013will completely solve this problem as it is deployed (automatically) in 3014newer BIOS code. 3015 3016iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 3017statements that could cause errors when the disassembled file is 3018compiled. ACPICA BZ 1243. David Box. 3019 3020iASL: Fixed a regression caused by the merger of the two versions of the 3021local strtoul64. Because of a dependency on a global variable, strtoul64 3022could return an error for integers greater than a 32-bit value. ACPICA BZ 30231260. 3024 3025iASL: Fixed a regression where a fault could occur for an ASL Return 3026statement if it invokes a control method that is not resolved. ACPICA BZ 30271264. 3028 3029AcpiXtract: Improved input file validation: detection of binary files and 3030non-acpidump text files. 3031 3032---------------------------------------- 303312 February 2016. Summary of changes for version 20160212: 3034 30351) ACPICA kernel-resident subsystem: 3036 3037Implemented full support for the ACPI 6.1 specification (released in 3038January). This version of the specification is available at: 3039http://www.uefi.org/specifications 3040 3041Only a relatively small number of changes were required in ACPICA to 3042support ACPI 6.1, in these areas: 3043- New predefined names 3044- New _HID values 3045- A new subtable for HEST 3046- A few other header changes for new values 3047 3048Ensure \_SB_._INI is executed before any _REG methods are executed. There 3049appears to be existing BIOS code that relies on this behavior. Lv Zheng. 3050 3051Reverted a change made in version 20151218 which enabled method 3052invocations to be targets of various ASL operators (SuperName and Target 3053grammar elements). While the new behavior is supported by the ACPI 3054specification, other AML interpreters do not support this behavior and 3055never will. The ACPI specification will be updated for ACPI 6.2 to remove 3056this support. Therefore, the change was reverted to the original ACPICA 3057behavior. 3058 3059ACPICA now supports the GCC 6 compiler. 3060 3061Current Release: (Note: build changes increased sizes) 3062 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3063 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3064Previous Release: 3065 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3066 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 3067 3068 30692) iASL Compiler/Disassembler and Tools: 3070 3071Completed full support for the ACPI 6.0 External() AML opcode. The 3072compiler emits an external AML opcode for each ASL External statement. 3073This opcode is used by the disassembler to assist with the disassembly of 3074external control methods by specifying the required number of arguments 3075for the method. AML interpreters do not use this opcode. To ensure that 3076interpreters do not even see the opcode, a block of one or more external 3077opcodes is surrounded by an "If(0)" construct. As this feature becomes 3078commonly deployed in BIOS code, the ability of disassemblers to correctly 3079disassemble AML code will be greatly improved. David Box. 3080 3081iASL: Implemented support for an optional cross-reference output file. 3082The -lx option will create a the cross-reference file with the suffix 3083"xrf". Three different types of cross-reference are created in this file: 3084- List of object references made from within each control method 3085- Invocation (caller) list for each user-defined control method 3086- List of references to each non-method object in the namespace 3087 3088iASL: Method invocations as ASL Target operands are now disallowed and 3089flagged as errors in preparation for ACPI 6.2 (see the description of the 3090problem above). 3091 3092---------------------------------------- 30938 January 2016. Summary of changes for version 20160108: 3094 30951) ACPICA kernel-resident subsystem: 3096 3097Updated all ACPICA copyrights and signons to 2016: Added the 2016 3098copyright to all source code module headers and utility/tool signons. 3099This includes the standard Linux dual-license header. This affects 3100virtually every file in the ACPICA core subsystem, iASL compiler, all 3101ACPICA utilities, and the ACPICA test suite. 3102 3103Fixed a regression introduced in version 20151218 concerning the 3104execution of so-called module-level ASL/AML code. Namespace objects 3105created under a module-level If() construct were not properly/fully 3106entered into the namespace and could cause an interpreter fault when 3107accessed. 3108 3109Example Code and Data Size: These are the sizes for the OS-independent 3110acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3111debug version of the code includes the debug output trace mechanism and 3112has a much larger code and data size. 3113 3114Current Release: 3115 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3116 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 3117 Previous Release: 3118 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3119 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3120 3121 31222) iASL Compiler/Disassembler and Tools: 3123 3124Fixed a problem with the compilation of the GpioIo and GpioInt resource 3125descriptors. The _PIN field name was incorrectly defined to be an array 3126of 32-bit values, but the _PIN values are in fact 16 bits each. This 3127would cause incorrect bit width warnings when using Word (16-bit) fields 3128to access the descriptors. 3129 3130 3131---------------------------------------- 313218 December 2015. Summary of changes for version 20151218: 3133 31341) ACPICA kernel-resident subsystem: 3135 3136Implemented per-AML-table execution of "module-level code" as individual 3137ACPI tables are loaded into the namespace during ACPICA initialization. 3138In other words, any module-level code within an AML table is executed 3139immediately after the table is loaded, instead of batched and executed 3140after all of the tables have been loaded. This provides compatibility 3141with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 3142David Box. 3143 3144To fully support the feature above, the default operation region handlers 3145for the SystemMemory, SystemIO, and PCI_Config address spaces are now 3146installed before any ACPI tables are loaded. This enables module-level 3147code to access these address spaces during the table load and module- 3148level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 3149Box. 3150 3151Implemented several changes to the internal _REG support in conjunction 3152with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 3153utilities for the changes above. Although these tools were changed, host 3154operating systems that simply use the default handlers for SystemMemory, 3155SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 3156 3157For example, in the code below, DEV1 is conditionally added to the 3158namespace by the DSDT via module-level code that accesses an operation 3159region. The SSDT references DEV1 via the Scope operator. DEV1 must be 3160created immediately after the DSDT is loaded in order for the SSDT to 3161successfully reference DEV1. Previously, this code would cause an 3162AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 3163fully supported by ACPICA. 3164 3165 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 3166 { 3167 OperationRegion (OPR1, SystemMemory, 0x400, 32) 3168 Field (OPR1, AnyAcc, NoLock, Preserve) 3169 { 3170 FLD1, 1 3171 } 3172 If (FLD1) 3173 { 3174 Device (\DEV1) 3175 { 3176 } 3177 } 3178 } 3179 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 3180 { 3181 External (\DEV1, DeviceObj) 3182 Scope (\DEV1) 3183 { 3184 } 3185 } 3186 3187Fixed an AML interpreter problem where control method invocations were 3188not handled correctly when the invocation was itself a SuperName argument 3189to another ASL operator. In these cases, the method was not invoked. 3190ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 3191argument: 3192 Store 3193 Acquire, Wait 3194 CondRefOf, RefOf 3195 Decrement, Increment 3196 Load, Unload 3197 Notify 3198 Signal, Release, Reset 3199 SizeOf 3200 3201Implemented automatic String-to-ObjectReference conversion support for 3202packages returned by predefined names (such as _DEP). A common BIOS error 3203is to add double quotes around an ObjectReference namepath, which turns 3204the reference into an unexpected string object. This support detects the 3205problem and corrects it before the package is returned to the caller that 3206invoked the method. Lv Zheng. 3207 3208Implemented extensions to the Concatenate operator. Concatenate now 3209accepts any type of object, it is not restricted to simply 3210Integer/String/Buffer. For objects other than these 3 basic data types, 3211the argument is treated as a string containing the name of the object 3212type. This expands the utility of Concatenate and the Printf/Fprintf 3213macros. ACPICA BZ 1222. 3214 3215Cleaned up the output of the ASL Debug object. The timer() value is now 3216optional and no longer emitted by default. Also, the basic data types of 3217Integer/String/Buffer are simply emitted as their values, without a data 3218type string -- since the data type is obvious from the output. ACPICA BZ 32191221. 3220 3221Example Code and Data Size: These are the sizes for the OS-independent 3222acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3223debug version of the code includes the debug output trace mechanism and 3224has a much larger code and data size. 3225 3226 Current Release: 3227 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3228 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3229 Previous Release: 3230 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3231 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3232 3233 32342) iASL Compiler/Disassembler and Tools: 3235 3236iASL: Fixed some issues with the ASL Include() operator. This operator 3237was incorrectly defined in the iASL parser rules, causing a new scope to 3238be opened for the code within the include file. This could lead to 3239several issues, including allowing ASL code that is technically illegal 3240and not supported by AML interpreters. Note, this does not affect the 3241related #include preprocessor operator. ACPICA BZ 1212. 3242 3243iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 3244operator is essentially an ASL macro since there is no AML opcode 3245associated with it. The code emitted by the iASL compiler for ElseIf is 3246an Else opcode followed immediately by an If opcode. The disassembler 3247will now emit an ElseIf if it finds an Else immediately followed by an 3248If. This simplifies the decoded ASL, especially for deeply nested 3249If..Else and large Switch constructs. Thus, the disassembled code more 3250closely follows the original source ASL. ACPICA BZ 1211. Example: 3251 3252 Old disassembly: 3253 Else 3254 { 3255 If (Arg0 == 0x02) 3256 { 3257 Local0 = 0x05 3258 } 3259 } 3260 3261 New disassembly: 3262 ElseIf (Arg0 == 0x02) 3263 { 3264 Local0 = 0x05 3265 } 3266 3267AcpiExec: Added support for the new module level code behavior and the 3268early region installation. This required a small change to the 3269initialization, since AcpiExec must install its own operation region 3270handlers. 3271 3272AcpiExec: Added support to make the debug object timer optional. Default 3273is timer disabled. This cleans up the debug object output -- the timer 3274data is rarely used. 3275 3276AcpiExec: Multiple ACPI tables are now loaded in the order that they 3277appear on the command line. This can be important when there are 3278interdependencies/references between the tables. 3279 3280iASL/Templates. Add support to generate template files with multiple 3281SSDTs within a single output file. Also added ommand line support to 3282specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 32831223, 1225. 3284 3285 3286---------------------------------------- 328724 November 2015. Summary of changes for version 20151124: 3288 32891) ACPICA kernel-resident subsystem: 3290 3291Fixed a possible regression for a previous update to FADT handling. The 3292FADT no longer has a fixed table ID, causing some issues with code that 3293was hardwired to a specific ID. Lv Zheng. 3294 3295Fixed a problem where the method auto-serialization could interfere with 3296the current SyncLevel. This change makes the auto-serialization support 3297transparent to the SyncLevel support and management. 3298 3299Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3300interface is intended for early access to the namespace during the 3301initial namespace device discovery walk. The _SUB method has been seen to 3302access operation regions in some cases, causing errors because the 3303operation regions are not fully initialized. 3304 3305AML Debugger: Fixed some issues with the terminate/quit/exit commands 3306that can cause faults. Lv Zheng. 3307 3308AML Debugger: Add thread ID support so that single-step mode only applies 3309to the AML Debugger thread. This prevents runtime errors within some 3310kernels. Lv Zheng. 3311 3312Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3313methods that are invoked by this interface are optional, removed warnings 3314emitted for the case where one or more of these methods do not exist. 3315ACPICA BZ 1208, original change by Prarit Bhargava. 3316 3317Made a major pass through the entire ACPICA source code base to 3318standardize formatting that has diverged a bit over time. There are no 3319functional changes, but this will of course cause quite a few code 3320differences from the previous ACPICA release. 3321 3322Example Code and Data Size: These are the sizes for the OS-independent 3323acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3324debug version of the code includes the debug output trace mechanism and 3325has a much larger code and data size. 3326 3327 Current Release: 3328 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3329 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3330 Previous Release: 3331 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3332 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3333 3334 33352) iASL Compiler/Disassembler and Tools: 3336 3337iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3338definition blocks within a single ASL file and the resulting AML file. 3339Support for this type of file was also added to the various tools that 3340use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3341example code below shows two definition blocks within the same file: 3342 3343 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 33440x12345678) 3345 { 3346 } 3347 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3348 { 3349 } 3350 3351iASL: Enhanced typechecking for the Name() operator. All expressions for 3352the value of the named object must be reduced/folded to a single constant 3353at compile time, as per the ACPI specification (the AML definition of 3354Name()). 3355 3356iASL: Fixed some code indentation issues for the -ic and -ia options (C 3357and assembly headers). Now all emitted code correctly begins in column 1. 3358 3359iASL: Added an error message for an attempt to open a Scope() on an 3360object defined in an SSDT. The DSDT is always loaded into the namespace 3361first, so any attempt to open a Scope on an SSDT object will fail at 3362runtime. 3363 3364 3365---------------------------------------- 336630 September 2015. Summary of changes for version 20150930: 3367 33681) ACPICA kernel-resident subsystem: 3369 3370Debugger: Implemented several changes and bug fixes to assist support for 3371the in-kernel version of the AML debugger. Lv Zheng. 3372- Fix the "predefined" command for in-kernel debugger. 3373- Do not enter debug command loop for the help and version commands. 3374- Disallow "execute" command during execution/single-step of a method. 3375 3376Interpreter: Updated runtime typechecking for all operators that have 3377target operands. The operand is resolved and validated that it is legal. 3378For example, the target cannot be a non-data object such as a Device, 3379Mutex, ThermalZone, etc., as per the ACPI specification. 3380 3381Debugger: Fixed the double-mutex user I/O handshake to work when local 3382deadlock detection is enabled. 3383 3384Debugger: limited display of method locals and arguments (LocalX and 3385ArgX) to only those that have actually been initialized. This prevents 3386lines of extraneous output. 3387 3388Updated the definition of the NFIT table to correct the bit polarity of 3389one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3390 3391Example Code and Data Size: These are the sizes for the OS-independent 3392acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3393debug version of the code includes the debug output trace mechanism and 3394has a much larger code and data size. 3395 3396 Current Release: 3397 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3398 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3399 Previous Release: 3400 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3401 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3402 3403 34042) iASL Compiler/Disassembler and Tools: 3405 3406iASL: Improved the compile-time typechecking for operands of many of the 3407ASL operators: 3408 3409-- Added an option to disable compiler operand/operator typechecking (- 3410ot). 3411 3412-- For the following operators, the TermArg operands are now validated 3413when possible to be Integer data objects: BankField, OperationRegion, 3414DataTableRegion, Buffer, and Package. 3415 3416-- Store (Source, Target): Both the source and target operands are 3417resolved and checked that the operands are both legal. For example, 3418neither operand can be a non-data object such as a Device, Mutex, 3419ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 3420operator can be used to store an object to any type of target object. 3421 3422-- Store (Source, Target): If the source is a Package object, the target 3423must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 3424is a Package, the source must also be a Package. 3425 3426-- Store (Source, Target): A warning is issued if the source and target 3427resolve to the identical named object. 3428 3429-- Store (Source, <method invocation>): An error is generated for the 3430target method invocation, as this construct is not supported by the AML 3431interpreter. 3432 3433-- For all ASL math and logic operators, the target operand must be a 3434data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 3435includes the function return value also. 3436 3437-- External declarations are also included in the typechecking where 3438possible. External objects defined using the UnknownObj keyword cannot be 3439typechecked, however. 3440 3441iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 3442operator: 3443- Legacy code: Index(PKG1, 3) 3444- New ASL+ code: PKG1[3] 3445This completes the ACPI 6.0 ASL+ support as it was the only operator not 3446supported. 3447 3448iASL: Fixed the file suffix for the preprocessor output file (.i). Two 3449spaces were inadvertently appended to the filename, causing file access 3450and deletion problems on some systems. 3451 3452ASL Test Suite (ASLTS): Updated the master makefile to generate all 3453possible compiler output files when building the test suite -- thus 3454exercising these features of the compiler. These files are automatically 3455deleted when the test suite exits. 3456 3457 3458---------------------------------------- 345918 August 2015. Summary of changes for version 20150818: 3460 34611) ACPICA kernel-resident subsystem: 3462 3463Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 3464Zheng. ACPICA BZ 1186. 3465 3466Completed development to ensure that the ACPICA Disassembler and Debugger 3467are fully standalone components of ACPICA. Removed cross-component 3468dependences. Lv Zheng. 3469 3470The max-number-of-AML-loops is now runtime configurable (previously was 3471compile-time only). This is essentially a loop timeout to force-abort 3472infinite AML loops. ACPCIA BZ 1192. 3473 3474Debugger: Cleanup output to dump ACPI names and namepaths without any 3475trailing underscores. Lv Zheng. ACPICA BZ 1135. 3476 3477Removed unnecessary conditional compilations across the Debugger and 3478Disassembler components where entire modules could be left uncompiled. 3479 3480The aapits test is deprecated and has been removed from the ACPICA git 3481tree. The test has never been completed and has not been maintained, thus 3482becoming rather useless. ACPICA BZ 1015, 794. 3483 3484A batch of small changes to close bugzilla and other reports: 3485- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 3486- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 3487- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 3488- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 3489Moore. 3490- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 3491ACPICA BZ 1184. 3492- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 3493operators. 3494- Debugger: Split debugger initialization/termination interfaces. Lv 3495Zheng. 3496- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 3497identification. 3498- AcpiExec: Add debug message during _REG method phase during table 3499load/init. 3500- AcpiNames: Fix a regression where some output was missing and no longer 3501emitted. 3502- Debugger: General cleanup and simplification. Lv Zheng. 3503- Disassembler: Cleanup use of several global option variables. Lv Zheng. 3504 3505Example Code and Data Size: These are the sizes for the OS-independent 3506acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3507debug version of the code includes the debug output trace mechanism and 3508has a much larger code and data size. 3509 3510 Current Release: 3511 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3512 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3513 Previous Release: 3514 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3515 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3516 3517 35182) iASL Compiler/Disassembler and Tools: 3519 3520AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 3521were not handled properly and caused load errors. Now, properly invoke 3522and use the ACPICA auto-reallocate mechanism for ACPI table data 3523structures. ACPICA BZ 1188 3524 3525AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 3526BZ 1190. 3527 3528AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 3529AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 3530executed during initialization. ACPICA BZ 1187, 1189. 3531 3532iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 3533that corresponds to each disassembled ASL statement, to simplify 3534debugging. ACPICA BZ 1191. 3535 3536Debugger: Add option to the "objects" command to display a summary of the 3537current namespace objects (Object type and count). This is displayed if 3538the command is entered with no arguments. 3539 3540AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 3541 3542 3543---------------------------------------- 354417 July 2015. Summary of changes for version 20150717: 3545 35461) ACPICA kernel-resident subsystem: 3547 3548Improved the partitioning between the Debugger and Disassembler 3549components. This allows the Debugger to be used standalone within kernel 3550code without the Disassembler (which is used for single stepping also). 3551This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 3552 3553Debugger: Implemented a new command to trace the execution of control 3554methods (Trace). This is especially useful for the in-kernel version of 3555the debugger when file I/O may not be available for method trace output. 3556See the ACPICA reference for more information. Lv Zheng. 3557 3558Moved all C library prototypes (used for the local versions of these 3559functions when requested) to a new header, acclib.h 3560Cleaned up the use of non-ANSI C library functions. These functions are 3561implemented locally in ACPICA. Moved all such functions to a common 3562source file, utnonansi.c 3563 3564Debugger: Fixed a problem with the "!!" command (get last command 3565executed) where the debugger could enter an infinite loop and eventually 3566crash. 3567 3568Removed the use of local macros that were used for some of the standard C 3569library functions to automatically cast input parameters. This mostly 3570affected the is* functions where the input parameter is defined to be an 3571int. This required a few modifications to the main ACPICA source code to 3572provide casting for these functions and eliminate possible compiler 3573warnings for these parameters. 3574 3575Across the source code, added additional status/error checking to resolve 3576issues discovered by static source code analysis tools such as Coverity. 3577 3578Example Code and Data Size: These are the sizes for the OS-independent 3579acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3580debug version of the code includes the debug output trace mechanism and 3581has a much larger code and data size. 3582 3583 Current Release: 3584 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3585 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3586 Previous Release: 3587 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3588 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3589 3590 35912) iASL Compiler/Disassembler and Tools: 3592 3593iASL: Fixed a regression where the device map file feature no longer 3594worked properly when used in conjunction with the disassembler. It only 3595worked properly with the compiler itself. 3596 3597iASL: Implemented a new warning for method LocalX variables that are set 3598but never used (similar to a C compiler such as gcc). This also applies 3599to ArgX variables that are not defined by the parent method, and are 3600instead (legally) used as local variables. 3601 3602iASL/Preprocessor: Finished the pass-through of line numbers from the 3603preprocessor to the compiler. This ensures that compiler errors/warnings 3604have the correct original line numbers and filenames, regardless of any 3605#include files. 3606 3607iASL/Preprocessor: Fixed a couple of issues with comment handling and the 3608pass-through of comments to the preprocessor output file (which becomes 3609the compiler input file). Also fixed a problem with // comments that 3610appear after a math expression. 3611 3612iASL: Added support for the TCPA server table to the table compiler and 3613template generator. (The client table was already previously supported) 3614 3615iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 3616identify the iASL compiler. 3617 3618Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 3619multiple times. The new names are ACPI_SIGN_NEGATIVE and 3620ACPI_SIGN_POSITIVE. 3621 3622AcpiHelp: Update to expand help messages for the iASL preprocessor 3623directives. 3624 3625 3626---------------------------------------- 362719 June 2015. Summary of changes for version 20150619: 3628 3629Two regressions in version 20150616 have been addressed: 3630 3631Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 3632etc.) This update changes ACPICA to only use the standard headers for 3633functions, or the prototypes for the local versions of the C library 3634functions. Across the source code, this required some additional casts 3635for some Clib invocations for portability. Moved all local prototypes to 3636a new file, acclib.h 3637 3638Fixes several problems with recent changes to the handling of the FACS 3639table that could cause some systems not to boot. 3640 3641 3642---------------------------------------- 364316 June 2015. Summary of changes for version 20150616: 3644 3645 36461) ACPICA kernel-resident subsystem: 3647 3648Across the entire ACPICA source code base, the various macros for the C 3649library functions (such as ACPI_STRLEN, etc.) have been removed and 3650replaced by the standard C library names (strlen, etc.) The original 3651purpose for these macros is no longer applicable. This simplification 3652reduces the number of macros used in the ACPICA source code 3653significantly, improving readability and maintainability. 3654 3655Implemented support for a new ACPI table, the OSDT. This table, the 3656"override" SDT, can be loaded directly by the host OS at boot time. It 3657enables the replacement of existing namespace objects that were installed 3658via the DSDT and/or SSDTs. The primary purpose for this is to replace 3659buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 3660for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 3661Moore. 3662 3663Added support for systems with (improperly) two FACS tables -- a "32-bit" 3664table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 3665X field). This change will support both automatically. There continues to 3666be systems found with this issue. This support requires a change to the 3667AcpiSetFirmwareWakingVector interface. Also, a public global variable has 3668been added to allow the host to select which FACS is desired 3669(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 3670details Lv Zheng. 3671 3672Added a new feature to allow for systems that do not contain an FACS. 3673Although this is already supported on hardware-reduced platforms, the 3674feature has been extended for all platforms. The reasoning is that we do 3675not want to abort the entire ACPICA initialization just because the 3676system is seriously buggy and has no FACS. 3677 3678Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 3679not correctly transcribed from the ACPI specification in ACPICA version 368020150515. 3681 3682Implemented support for the _CLS object in the AcpiGetObjectInfo external 3683interface. 3684 3685Updated the definitions of the TCPA and TPM2 ACPI tables to the more 3686recent TCG ACPI Specification, December 14, 2014. Table disassembler and 3687compiler also updated. Note: The TCPA "server" table is not supported by 3688the disassembler/table-compiler at this time. 3689 3690ACPI 6.0: Added definitions for the new GIC version field in the MADT. 3691 3692Example Code and Data Size: These are the sizes for the OS-independent 3693acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3694debug version of the code includes the debug output trace mechanism and 3695has a much larger code and data size. 3696 3697 Current Release: 3698 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3699 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3700 Previous Release: 3701 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3702 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3703 3704 37052) iASL Compiler/Disassembler and Tools: 3706 3707Disassembler: Fixed a problem with the new symbolic operator disassembler 3708where incorrect ASL code could be emitted in some cases for the "non- 3709commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 3710ShiftRight. The actual problem cases seem to be rather unusual in common 3711ASL code, however. David Box. 3712 3713Modified the linux version of acpidump to obtain ACPI tables from not 3714just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 3715Zheng. 3716 3717iASL: Fixed a problem where the user preprocessor output file (.i) 3718contained extra data that was not expected. The compiler was using this 3719file as a temporary file and passed through #line directives in order to 3720keep compiler error messages in sync with the input file and line number 3721across multiple include files. The (.i) is no longer a temporary file as 3722the compiler uses a new, different file for the original purpose. 3723 3724iASL: Fixed a problem where comments within the original ASL source code 3725file were not passed through to the preprocessor output file, nor any 3726listing files. 3727 3728iASL: Fixed some issues for the handling of the "#include" preprocessor 3729directive and the similar (but not the same) "Include" ASL operator. 3730 3731iASL: Add support for the new OSDT in both the disassembler and compiler. 3732 3733iASL: Fixed a problem with the constant folding support where a Buffer 3734object could be incorrectly generated (incorrectly formed) during a 3735conversion to a Store() operator. 3736 3737AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 3738description text for the _REV predefined name. _REV now permanently 3739returns 2, as per the ACPI 6.0 specification. 3740 3741Debugger: Enhanced the output of the Debug ASL object for references 3742produced by the Index operator. For Buffers and strings, only output the 3743actual byte pointed to by the index. For packages, only print the single 3744package element decoded by the index. Previously, the entire 3745buffer/string/package was emitted. 3746 3747iASL/Table-compiler: Fixed a regression where the "generic" data types 3748were no longer recognized, causing errors. 3749 3750 3751---------------------------------------- 375215 May 2015. Summary of changes for version 20150515: 3753 3754This release implements most of ACPI 6.0 as described below. 3755 37561) ACPICA kernel-resident subsystem: 3757 3758Implemented runtime argument checking and return value checking for all 3759new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 3760_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 3761 3762Example Code and Data Size: These are the sizes for the OS-independent 3763acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3764debug version of the code includes the debug output trace mechanism and 3765has a much larger code and data size. 3766 3767 Current Release: 3768 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3769 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3770 Previous Release: 3771 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3772 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3773 3774 37752) iASL Compiler/Disassembler and Tools: 3776 3777iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 3778names (argument count validation and return value typechecking.) 3779 3780iASL disassembler and table compiler: implemented support for all new 3781ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 3782 3783iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 3784tables: FADT, MADT. 3785 3786iASL preprocessor: Added a new directive to enable inclusion of binary 3787blobs into ASL code. The new directive is #includebuffer. It takes a 3788binary file as input and emits a named ascii buffer object into the ASL 3789code. 3790 3791AcpiHelp: Added support for all new ACPI 6.0 predefined names. 3792 3793AcpiHelp: Added a new option, -d, to display all iASL preprocessor 3794directives. 3795 3796AcpiHelp: Added a new option, -t, to display all known/supported ACPI 3797tables. 3798 3799 3800---------------------------------------- 380110 April 2015. Summary of changes for version 20150410: 3802 3803Reverted a change introduced in version 20150408 that caused 3804a regression in the disassembler where incorrect operator 3805symbols could be emitted. 3806 3807 3808---------------------------------------- 380908 April 2015. Summary of changes for version 20150408: 3810 3811 38121) ACPICA kernel-resident subsystem: 3813 3814Permanently set the return value for the _REV predefined name. It now 3815returns 2 (was 5). This matches other ACPI implementations. _REV will be 3816deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 3817for ACPI 2.0 and later. It should never be used to differentiate or 3818identify operating systems. 3819 3820Added the "Windows 2015" string to the _OSI support. ACPICA will now 3821return TRUE to a query with this string. 3822 3823Fixed several issues with the local version of the printf function. 3824 3825Added the C99 compiler option (-std=c99) to the Unix makefiles. 3826 3827 Current Release: 3828 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 3829 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 3830 Previous Release: 3831 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3832 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3833 3834 38352) iASL Compiler/Disassembler and Tools: 3836 3837iASL: Implemented an enhancement to the constant folding feature to 3838transform the parse tree to a simple Store operation whenever possible: 3839 Add (2, 3, X) ==> is converted to: Store (5, X) 3840 X = 2 + 3 ==> is converted to: Store (5, X) 3841 3842Updated support for the SLIC table (Software Licensing Description Table) 3843in both the Data Table compiler and the disassembler. The SLIC table 3844support now conforms to "Microsoft Software Licensing Tables (SLIC and 3845MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 3846following the ACPI header is now defined to be "Proprietary Data", and as 3847such, can only be entered or displayed as a hex data block. 3848 3849Implemented full support for the MSDM table as described in the document 3850above. Note: The format of MSDM is similar to SLIC. Any MSDM data 3851following the ACPI header is defined to be "Proprietary Data", and can 3852only be entered or displayed as a hex data block. 3853 3854Implemented the -Pn option for the iASL Table Compiler (was only 3855implemented for the ASL compiler). This option disables the iASL 3856preprocessor. 3857 3858Disassembler: For disassembly of Data Tables, added a comment field 3859around the Ascii equivalent data that is emitted as part of the "Raw 3860Table Data" block. This prevents the iASL Preprocessor from possible 3861confusion if/when the table is compiled. 3862 3863Disassembler: Added an option (-df) to force the disassembler to assume 3864that the table being disassembled contains valid AML. This feature is 3865useful for disassembling AML files that contain ACPI signatures other 3866than DSDT or SSDT (such as OEMx or other signatures). 3867 3868Changes for the EFI version of the tools: 38691) Fixed a build error/issue 38702) Fixed a cast warning 3871 3872iASL: Fixed a path issue with the __FILE__ operator by making the 3873directory prefix optional within the internal SplitInputFilename 3874function. 3875 3876Debugger: Removed some unused global variables. 3877 3878Tests: Updated the makefile for proper generation of the AAPITS suite. 3879 3880 3881---------------------------------------- 388204 February 2015. Summary of changes for version 20150204: 3883 3884ACPICA kernel-resident subsystem: 3885 3886Updated all ACPICA copyrights and signons to 2014. Added the 2014 3887copyright to all module headers and signons, including the standard Linux 3888header. This affects virtually every file in the ACPICA core subsystem, 3889iASL compiler, all ACPICA utilities, and the test suites. 3890 3891Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 3892A raw gpe handling mechanism was created to allow better handling of GPE 3893storms that aren't easily managed by the normal handler. The raw handler 3894allows disabling/renabling of the GPE so that interrupt storms can be 3895avoided in cases where events cannot be timely serviced. In this 3896scenario, handlers should use the AcpiSetGpe() API to disable/enable the 3897GPE. This API will leave the reference counts undisturbed, thereby 3898preventing unintentional clearing of the GPE when the intent in only to 3899temporarily disable it. Raw handlers allow enabling and disabling of a 3900GPE by removing GPE register locking. As such, raw handlers much provide 3901their own locks while using GPE API's to protect access to GPE data 3902structures. 3903Lv Zheng 3904 3905Events: Always modify GPE registers under the GPE lock. 3906Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 3907values. Reported as bug by joe.liu@apple.com. 3908 3909Unix makefiles: Separate option to disable optimizations and 3910_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 3911NOOPT disable option and creates a separate flag (NOFORTIFY) for this 3912purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 3913errors when building ACPICA. This allows disabling the option without 3914also having to disable optimazations. 3915David Box 3916 3917 Current Release: 3918 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3919 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 3920 3921-- 3922-------------------------------------- 392307 November 2014. Summary of changes for version 20141107: 3924 3925This release is available at https://acpica.org/downloads 3926 3927This release introduces and implements language extensions to ASL that 3928provide support for symbolic ("C-style") operators and expressions. These 3929language extensions are known collectively as ASL+. 3930 3931 39321) iASL Compiler/Disassembler and Tools: 3933 3934Disassembler: Fixed a problem with disassembly of the UartSerialBus 3935macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 3936Box. 3937 3938Disassembler: Fixed the Unicode macro support to add escape sequences. 3939All non-printable ASCII values are emitted as escape sequences, as well 3940as the standard escapes for quote and backslash. Ensures that the 3941disassembled macro can be correctly recompiled. 3942 3943iASL: Added Printf/Fprintf macros for formatted output. These macros are 3944translated to existing AML Concatenate and Store operations. Printf 3945writes to the ASL Debug object. Fprintf allows the specification of an 3946ASL name as the target. Only a single format specifier is required, %o, 3947since the AML interpreter dynamically converts objects to the required 3948type. David E. Box. 3949 3950 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3951 (Concatenate (Concatenate (Concatenate ("", Arg0), 3952 ": Unexpected value for "), Arg1), ", "), Arg2), 3953 " at line "), Arg3), Debug) 3954 3955 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 3956 Arg0, Arg1, Arg2, Arg3) 3957 3958 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3959 ("", Arg1), ": "), Arg0), " Successful"), STR1) 3960 3961 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 3962 3963iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 3964ASL parse tree before the AML code is generated. This allows blocks of 3965ASL code to be removed in order to help locate and identify problem 3966devices and/or code. David E. Box. 3967 3968AcpiExec: Added support (-fi) for an optional namespace object 3969initialization file. This file specifies initial values for namespace 3970objects as necessary for debugging and testing different ASL code paths 3971that may be taken as a result of BIOS options. 3972 3973 39742) Overview of symbolic operator support for ASL (ASL+) 3975------------------------------------------------------- 3976 3977As an extension to the ASL language, iASL implements support for symbolic 3978(C-style) operators for math and logical expressions. This can greatly 3979simplify ASL code as well as improve both readability and 3980maintainability. These language extensions can exist concurrently with 3981all legacy ASL code and expressions. 3982 3983The symbolic extensions are 100% compatible with existing AML 3984interpreters, since no new AML opcodes are created. To implement the 3985extensions, the iASL compiler transforms the symbolic expressions into 3986the legacy ASL/AML equivalents at compile time. 3987 3988Full symbolic expressions are supported, along with the standard C 3989precedence and associativity rules. 3990 3991Full disassembler support for the symbolic expressions is provided, and 3992creates an automatic migration path for existing ASL code to ASL+ code 3993via the disassembly process. By default, the disassembler now emits ASL+ 3994code with symbolic expressions. An option (-dl) is provided to force the 3995disassembler to emit legacy ASL code if desired. 3996 3997Below is the complete list of the currently supported symbolic operators 3998with examples. See the iASL User Guide for additional information. 3999 4000 4001ASL+ Syntax Legacy ASL Equivalent 4002----------- --------------------- 4003 4004 // Math operators 4005 4006Z = X + Y Add (X, Y, Z) 4007Z = X - Y Subtract (X, Y, Z) 4008Z = X * Y Multiply (X, Y, Z) 4009Z = X / Y Divide (X, Y, , Z) 4010Z = X % Y Mod (X, Y, Z) 4011Z = X << Y ShiftLeft (X, Y, Z) 4012Z = X >> Y ShiftRight (X, Y, Z) 4013Z = X & Y And (X, Y, Z) 4014Z = X | Y Or (X, Y, Z) 4015Z = X ^ Y Xor (X, Y, Z) 4016Z = ~X Not (X, Z) 4017X++ Increment (X) 4018X-- Decrement (X) 4019 4020 // Logical operators 4021 4022(X == Y) LEqual (X, Y) 4023(X != Y) LNotEqual (X, Y) 4024(X < Y) LLess (X, Y) 4025(X > Y) LGreater (X, Y) 4026(X <= Y) LLessEqual (X, Y) 4027(X >= Y) LGreaterEqual (X, Y) 4028(X && Y) LAnd (X, Y) 4029(X || Y) LOr (X, Y) 4030(!X) LNot (X) 4031 4032 // Assignment and compound assignment operations 4033 4034X = Y Store (Y, X) 4035X += Y Add (X, Y, X) 4036X -= Y Subtract (X, Y, X) 4037X *= Y Multiply (X, Y, X) 4038X /= Y Divide (X, Y, , X) 4039X %= Y Mod (X, Y, X) 4040X <<= Y ShiftLeft (X, Y, X) 4041X >>= Y ShiftRight (X, Y, X) 4042X &= Y And (X, Y, X) 4043X |= Y Or (X, Y, X) 4044X ^= Y Xor (X, Y, X) 4045 4046 40473) ASL+ Examples: 4048----------------- 4049 4050Legacy ASL: 4051 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 4052 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 40530x03FB), 4054 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 4055 { 4056 And (MEMB, 0xFFFFFFF0, SRMB) 4057 Store (MEMB, Local2) 4058 Store (PDBM, Local1) 4059 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 4060 Store (SRMB, MEMB) 4061 Or (PDBM, 0x02, PDBM) 4062 } 4063 4064ASL+ version: 4065 If (((R510 & 0x03FB) == 0x02E0) || 4066 ((R520 & 0x03FB) == 0x02E0) || 4067 ((R530 & 0x03FB) == 0x02E0) || 4068 ((R540 & 0x03FB) == 0x02E0)) 4069 { 4070 SRMB = (MEMB & 0xFFFFFFF0) 4071 Local2 = MEMB 4072 Local1 = PDBM 4073 PDBM &= 0xFFFFFFFFFFFFFFF9 4074 MEMB = SRMB 4075 PDBM |= 0x02 4076 } 4077 4078Legacy ASL: 4079 Store (0x1234, Local1) 4080 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 4081 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 4082 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 4083 Store (Index (PKG1, 0x03), Local6) 4084 Store (Add (Local3, Local2), Debug) 4085 Add (Local1, 0x0F, Local2) 4086 Add (Local1, Multiply (Local2, Local3), Local2) 4087 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 4088 4089ASL+ version: 4090 Local1 = 0x1234 4091 Local3 = (((Local1 + TEST) + 0x20) * Local2) 4092 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 4093 Local3 = (Local1 + (TEST + (0x20 * Local2))) 4094 Local6 = Index (PKG1, 0x03) 4095 Debug = (Local3 + Local2) 4096 Local2 = (Local1 + 0x0F) 4097 Local2 = (Local1 + (Local2 * Local3)) 4098 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 4099 4100 4101---------------------------------------- 410226 September 2014. Summary of changes for version 20140926: 4103 41041) ACPICA kernel-resident subsystem: 4105 4106Updated the GPIO operation region handler interface (GeneralPurposeIo). 4107In order to support GPIO Connection objects with multiple pins, along 4108with the related Field objects, the following changes to the interface 4109have been made: The Address is now defined to be the offset in bits of 4110the field unit from the previous invocation of a Connection. It can be 4111viewed as a "Pin Number Index" into the connection resource descriptor. 4112The BitWidth is the exact bit width of the field. It is usually one bit, 4113but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 4114additional information and examples. 4115 4116GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 4117corresponding _Lxx/_Exx methods are disabled (they may have been enabled 4118by the firmware), so that they cannot fire until they are enabled via 4119AcpiUpdateAllGpes. Rafael J. Wysocki. 4120 4121Added a new return flag for the Event/GPE status interfaces -- 4122AcpiGetEventStatus and AcpiGetGpeStatus. The new 4123ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 4124GPE currently has a handler associated with it, and can thus actually 4125affect the system. Lv Zheng. 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: 99.1K Code, 27.3K Data, 126.4K Total 4134 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4135 Previous Release: 4136 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4137 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4138 41392) iASL Compiler/Disassembler and Tools: 4140 4141iASL: Fixed a memory allocation/free regression introduced in 20140828 4142that could cause the compiler to crash. This was introduced inadvertently 4143during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 41441113. 4145 4146iASL: Removed two error messages that have been found to create false 4147positives, until they can be fixed and fully validated (ACPICA BZ 1112): 41481) Illegal forward reference within a method 41492) Illegal reference across two methods 4150 4151iASL: Implemented a new option (-lm) to create a hardware mapping file 4152that summarizes all GPIO, I2C, SPI, and UART connections. This option 4153works for both the compiler and disassembler. See the iASL compiler user 4154guide for additional information and examples (section 6.4.6). 4155 4156AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 4157version 2. This corrects the AE_BAD_HEADER exception seen on systems with 4158a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 4159 4160AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 4161unless STDIN is actually a terminal. Assists with batch-mode processing. 4162ACPICA BZ 1114. 4163 4164Disassembler/AcpiHelp: Added another large group of recognized _HID 4165values. 4166 4167 4168---------------------------------------- 416928 August 2014. Summary of changes for version 20140828: 4170 41711) ACPICA kernel-resident subsystem: 4172 4173Fixed a problem related to the internal use of the Timer() operator where 4174a 64-bit divide could cause an attempted link to a double-precision math 4175library. This divide is not actually necessary, so the code was 4176restructured to eliminate it. Lv Zheng. 4177 4178ACPI 5.1: Added support for the runtime validation of the _DSD package 4179(similar to the iASL support). 4180 4181ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 4182SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 4183 4184Example Code and Data Size: These are the sizes for the OS-independent 4185acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4186debug version of the code includes the debug output trace mechanism and 4187has a much larger code and data size. 4188 4189 Current Release: 4190 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4191 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4192 Previous Release: 4193 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 4194 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4195 41962) iASL Compiler/Disassembler and Tools: 4197 4198AcpiExec: Fixed a problem on unix systems where the original terminal 4199state was not always properly restored upon exit. Seen when using the -v 4200option. ACPICA BZ 1104. 4201 4202iASL: Fixed a problem with the validation of the ranges/length within the 4203Memory24 resource descriptor. There was a boundary condition when the 4204range was equal to the (length -1) caused by the fact that these values 4205are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 4206 4207Disassembler: Fixed a problem with the GpioInt descriptor interrupt 4208polarity 4209flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 4210is 4211now supported properly. 4212 4213ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 4214in the disassembler, data table compiler, and table template generator. 4215 4216iASL: Added a requirement for Device() objects that one of either a _HID 4217or _ADR must exist within the scope of a Device, as per the ACPI 4218specification. Remove a similar requirement that was incorrectly in place 4219for the _DSD object. 4220 4221iASL: Added error detection for illegal named references within control 4222methods that would cause runtime failures. Now trapped as errors are: 1) 4223References to objects within a non-parent control method. 2) Forward 4224references (within a method) -- for control methods, AML interpreters use 4225a one-pass parse of control methods. ACPICA BZ 1008. 4226 4227iASL: Added error checking for dependencies related to the _PSx power 4228methods. ACPICA BZ 1029. 42291) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 4230_PS3. 42312) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 4232scope. 4233 4234iASL and table compiler: Cleanup miscellaneous memory leaks by fully 4235deploying the existing object and string caches and adding new caches for 4236the table compiler. 4237 4238iASL: Split the huge parser source file into multiple subfiles to improve 4239manageability. Generation now requires the M4 macro preprocessor, which 4240is part of the Bison distribution on both unix and windows platforms. 4241 4242AcpiSrc: Fixed and removed all extraneous warnings generated during 4243entire ACPICA source code scan and/or conversion. 4244 4245 4246---------------------------------------- 4247 424824 July 2014. Summary of changes for version 20140724: 4249 4250The ACPI 5.1 specification has been released and is available at: 4251http://uefi.org/specs/access 4252 4253 42540) ACPI 5.1 support in ACPICA: 4255 4256ACPI 5.1 is fully supported in ACPICA as of this release. 4257 4258New predefined names. Support includes iASL and runtime ACPICA 4259validation. 4260 _CCA (Cache Coherency Attribute). 4261 _DSD (Device-Specific Data). David Box. 4262 4263Modifications to existing ACPI tables. Support includes headers, iASL 4264Data Table compiler, disassembler, and the template generator. 4265 FADT - New fields and flags. Graeme Gregory. 4266 GTDT - One new subtable and new fields. Tomasz Nowicki. 4267 MADT - Two new subtables. Tomasz Nowicki. 4268 PCCT - One new subtable. 4269 4270Miscellaneous. 4271 New notification type for System Resource Affinity change events. 4272 4273 42741) ACPICA kernel-resident subsystem: 4275 4276Fixed a regression introduced in 20140627 where a fault can happen during 4277the deletion of Alias AML namespace objects. The problem affected both 4278the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4279 4280Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4281simple mechanism to enable wake GPEs that have no associated handler or 4282control method. Rafael Wysocki. 4283 4284Updated the AcpiEnableGpe interface to disallow the enable if there is no 4285handler or control method associated with the particular GPE. This will 4286help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4287 4288Updated GPE handling and dispatch by disabling the GPE before clearing 4289the status bit for edge-triggered GPEs. Lv Zheng. 4290 4291Added Timer() support to the AML Debug object. The current timer value is 4292now displayed with each invocation of (Store to) the debug object to 4293enable simple generation of execution times for AML code (method 4294execution for example.) ACPICA BZ 1093. 4295 4296Example Code and Data Size: These are the sizes for the OS-independent 4297acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4298debug version of the code includes the debug output trace mechanism and 4299has a much larger code and data size. 4300 4301 Current Release: 4302 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4303 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4304 Previous Release: 4305 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4306 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4307 4308 43092) iASL Compiler/Disassembler and Tools: 4310 4311Fixed an issue with the recently added local printf implementation, 4312concerning width/precision specifiers that could cause incorrect output. 4313Lv Zheng. ACPICA BZ 1094. 4314 4315Disassembler: Added support to detect buffers that contain UUIDs and 4316disassemble them to an invocation of the ToUUID operator. Also emit 4317commented descriptions of known ACPI-related UUIDs. 4318 4319AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4320-u. Adds three new files. 4321 4322iASL: Update table compiler and disassembler for DMAR table changes that 4323were introduced in September 2013. With assistance by David Woodhouse. 4324 4325---------------------------------------- 432627 June 2014. Summary of changes for version 20140627: 4327 43281) ACPICA kernel-resident subsystem: 4329 4330Formatted Output: Implemented local versions of standard formatted output 4331utilities such as printf, etc. Over time, it has been discovered that 4332there are in fact many portability issues with printf, and the addition 4333of this feature will fix/prevent these issues once and for all. Some 4334known issues are summarized below: 4335 43361) Output of 64-bit values is not portable. For example, UINT64 is %ull 4337for the Linux kernel and is %uI64 for some MSVC versions. 43382) Invoking printf consistently in a manner that is portable across both 433932-bit and 64-bit platforms is difficult at best in many situations. 43403) The output format for pointers varies from system to system (leading 4341zeros especially), and leads to inconsistent output from ACPICA across 4342platforms. 43434) Certain platform-specific printf formats may conflict with ACPICA use. 43445) If there is no local C library available, ACPICA now has local support 4345for printf. 4346 4347-- To address these printf issues in a complete manner, ACPICA now 4348directly implements a small subset of printf format specifiers, only 4349those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4350 4351Implemented support for ACPICA generation within the EFI environment. 4352Initially, the AcpiDump utility is supported in the UEFI shell 4353environment. Lv Zheng. 4354 4355Added a new external interface, AcpiLogError, to improve ACPICA 4356portability. This allows the host to redirect error messages from the 4357ACPICA utilities. Lv Zheng. 4358 4359Added and deployed new OSL file I/O interfaces to improve ACPICA 4360portability: 4361 AcpiOsOpenFile 4362 AcpiOsCloseFile 4363 AcpiOsReadFile 4364 AcpiOsWriteFile 4365 AcpiOsGetFileOffset 4366 AcpiOsSetFileOffset 4367There are C library implementations of these functions in the new file 4368service_layers/oslibcfs.c -- however, the functions can be implemented by 4369the local host in any way necessary. Lv Zheng. 4370 4371Implemented a mechanism to disable/enable ACPI table checksum validation 4372at runtime. This can be useful when loading tables very early during OS 4373initialization when it may not be possible to map the entire table in 4374order to compute the checksum. Lv Zheng. 4375 4376Fixed a buffer allocation issue for the Generic Serial Bus support. 4377Originally, a fixed buffer length was used. This change allows for 4378variable-length buffers based upon the protocol indicated by the field 4379access attributes. Reported by Lan Tianyu. Lv Zheng. 4380 4381Fixed a problem where an object detached from a namespace node was not 4382properly terminated/cleared and could cause a circular list problem if 4383reattached. ACPICA BZ 1063. David Box. 4384 4385Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4386 4387Fixed a possible memory leak in an error return path within the function 4388AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 4389 4390Example Code and Data Size: These are the sizes for the OS-independent 4391acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4392debug version of the code includes the debug output trace mechanism and 4393has a much larger code and data size. 4394 4395 Current Release: 4396 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4397 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4398 Previous Release: 4399 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4400 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4401 4402 44032) iASL Compiler/Disassembler and Tools: 4404 4405Disassembler: Add dump of ASCII equivalent text within a comment at the 4406end of each line of the output for the Buffer() ASL operator. 4407 4408AcpiDump: Miscellaneous changes: 4409 Fixed repetitive table dump in -n mode. 4410 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 4411the ACPI 2.0 GUID fails. 4412 4413iASL: Fixed a problem where the compiler could fault if incorrectly given 4414an acpidump output file as input. ACPICA BZ 1088. David Box. 4415 4416AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 4417they are invoked without any arguments. 4418 4419Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 44201086. Colin Ian King. 4421 4422Disassembler: Cleaned up a block of code that extracts a parent Op 4423object. Added a comment that explains that the parent is guaranteed to be 4424valid in this case. ACPICA BZ 1069. 4425 4426 4427---------------------------------------- 442824 April 2014. Summary of changes for version 20140424: 4429 44301) ACPICA kernel-resident subsystem: 4431 4432Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 4433Some of these tables are known to contain a trailing NULL entry. Lv 4434Zheng. 4435 4436Removed an extraneous error message for the case where there are a large 4437number of system GPEs (> 124). This was the "32-bit FADT register is too 4438long to convert to GAS struct" message, which is irrelevant for GPEs 4439since the GPEx_BLK_LEN fields of the FADT are always used instead of the 4440(limited capacity) GAS bit length. Also, several changes to ensure proper 4441support for GPE numbers > 255, where some "GPE number" fields were 8-bits 4442internally. 4443 4444Implemented and deployed additional configuration support for the public 4445ACPICA external interfaces. Entire classes of interfaces can now be 4446easily modified or configured out, replaced by stubbed inline functions 4447by default. Lv Zheng. 4448 4449Moved all public ACPICA runtime configuration globals to the public 4450ACPICA external interface file for convenience. Also, removed some 4451obsolete/unused globals. See the file acpixf.h. Lv Zheng. 4452 4453Documentation: Added a new section to the ACPICA reference describing the 4454maximum number of GPEs that can be supported by the FADT-defined GPEs in 4455block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 4456reference. 4457 4458Example Code and Data Size: These are the sizes for the OS-independent 4459acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4460debug version of the code includes the debug output trace mechanism and 4461has a much larger code and data size. 4462 4463 Current Release: 4464 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4465 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4466 Previous Release: 4467 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4468 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4469 4470 44712) iASL Compiler/Disassembler and Tools: 4472 4473iASL and disassembler: Add full support for the LPIT table (Low Power 4474Idle Table). Includes support in the disassembler, data table compiler, 4475and template generator. 4476 4477AcpiDump utility: 44781) Add option to force the use of the RSDT (over the XSDT). 44792) Improve validation of the RSDP signature (use 8 chars instead of 4). 4480 4481iASL: Add check for predefined packages that are too large. For 4482predefined names that contain subpackages, check if each subpackage is 4483too large. (Check for too small already exists.) 4484 4485Debugger: Updated the GPE command (which simulates a GPE by executing the 4486GPE code paths in ACPICA). The GPE device is now optional, and defaults 4487to the GPE 0/1 FADT-defined blocks. 4488 4489Unix application OSL: Update line-editing support. Add additional error 4490checking and take care not to reset terminal attributes on exit if they 4491were never set. This should help guarantee that the terminal is always 4492left in the previous state on program exit. 4493 4494 4495---------------------------------------- 449625 March 2014. Summary of changes for version 20140325: 4497 44981) ACPICA kernel-resident subsystem: 4499 4500Updated the auto-serialize feature for control methods. This feature 4501automatically serializes all methods that create named objects in order 4502to prevent runtime errors. The update adds support to ignore the 4503currently executing AML SyncLevel when invoking such a method, in order 4504to prevent disruption of any existing SyncLevel priorities that may exist 4505in the AML code. Although the use of SyncLevels is relatively rare, this 4506change fixes a regression where an AE_AML_MUTEX_ORDER exception can 4507appear on some machines starting with the 20140214 release. 4508 4509Added a new external interface to allow the host to install ACPI tables 4510very early, before the namespace is even created. AcpiInstallTable gives 4511the host additional flexibility for ACPI table management. Tables can be 4512installed directly by the host as if they had originally appeared in the 4513XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 4514(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 4515with additional internal restructuring and cleanup. See the ACPICA 4516Reference for interface details. Lv Zheng. 4517 4518Added validation of the checksum for all incoming dynamically loaded 4519tables (via external interfaces or via AML Load/LoadTable operators). Lv 4520Zheng. 4521 4522Updated the use of the AcpiOsWaitEventsComplete interface during Notify 4523and GPE handler removal. Restructured calls to eliminate possible race 4524conditions. Lv Zheng. 4525 4526Added a warning for the use/execution of the ASL/AML Unload (table) 4527operator. This will help detect and identify machines that use this 4528operator if and when it is ever used. This operator has never been seen 4529in the field and the usage model and possible side-effects of the drastic 4530runtime action of a full table removal are unknown. 4531 4532Reverted the use of #pragma push/pop which was introduced in the 20140214 4533release. It appears that push and pop are not implemented by enough 4534compilers to make the use of this feature feasible for ACPICA at this 4535time. However, these operators may be deployed in a future ACPICA 4536release. 4537 4538Added the missing EXPORT_SYMBOL macros for the install and remove SCI 4539handler interfaces. 4540 4541Source code generation: 45421) Disabled the use of the "strchr" macro for the gcc-specific 4543generation. For some versions of gcc, this macro can periodically expose 4544a compiler bug which in turn causes compile-time error(s). 45452) Added support for PPC64 compilation. Colin Ian King. 4546 4547Example Code and Data Size: These are the sizes for the OS-independent 4548acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4549debug version of the code includes the debug output trace mechanism and 4550has a much larger code and data size. 4551 4552 Current Release: 4553 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4554 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4555 Previous Release: 4556 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4557 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4558 4559 45602) iASL Compiler/Disassembler and Tools: 4561 4562Disassembler: Added several new features to improve the readability of 4563the resulting ASL code. Extra information is emitted within comment 4564fields in the ASL code: 45651) Known _HID/_CID values are decoded to descriptive text. 45662) Standard values for the Notify() operator are decoded to descriptive 4567text. 45683) Target operands are expanded to full pathnames (in a comment) when 4569possible. 4570 4571Disassembler: Miscellaneous updates for extern() handling: 45721) Abort compiler if file specified by -fe option does not exist. 45732) Silence unnecessary warnings about argument count mismatches. 45743) Update warning messages concerning unresolved method externals. 45754) Emit "UnknownObj" keyword for externals whose type cannot be 4576determined. 4577 4578AcpiHelp utility: 45791) Added the -a option to display both the ASL syntax and the AML 4580encoding for an input ASL operator. This effectively displays all known 4581information about an ASL operator with one AcpiHelp invocation. 45822) Added substring match support (similar to a wildcard) for the -i 4583(_HID/PNP IDs) option. 4584 4585iASL/Disassembler: Since this tool does not yet support execution on big- 4586endian machines, added detection of endianness and an error message if 4587execution is attempted on big-endian. Support for big-endian within iASL 4588is a feature that is on the ACPICA to-be-done list. 4589 4590AcpiBin utility: 45911) Remove option to extract binary files from an acpidump; this function 4592is made obsolete by the AcpiXtract utility. 45932) General cleanup of open files and allocated buffers. 4594 4595 4596---------------------------------------- 459714 February 2014. Summary of changes for version 20140214: 4598 45991) ACPICA kernel-resident subsystem: 4600 4601Implemented a new mechanism to proactively prevent problems with ill- 4602behaved reentrant control methods that create named ACPI objects. This 4603behavior is illegal as per the ACPI specification, but is nonetheless 4604frequently seen in the field. Previously, this could lead to an 4605AE_ALREADY_EXISTS exception if the method was actually entered by more 4606than one thread. This new mechanism detects such methods at table load 4607time and marks them "serialized" to prevent reentrancy. A new global 4608option, AcpiGbl_AutoSerializeMethods, has been added to disable this 4609feature if desired. This mechanism and global option obsoletes and 4610supersedes the previous AcpiGbl_SerializeAllMethods option. 4611 4612Added the "Windows 2013" string to the _OSI support. ACPICA will now 4613respond TRUE to _OSI queries with this string. It is the stated policy of 4614ACPICA to add new strings to the _OSI support as soon as possible after 4615they are defined. See the full ACPICA _OSI policy which has been added to 4616the utilities/utosi.c file. 4617 4618Hardened/updated the _PRT return value auto-repair code: 46191) Do not abort the repair on a single subpackage failure, continue to 4620check all subpackages. 46212) Add check for the minimum subpackage length (4). 46223) Properly handle extraneous NULL package elements. 4623 4624Added support to avoid the possibility of infinite loops when traversing 4625object linked lists. Never allow an infinite loop, even in the face of 4626corrupted object lists. 4627 4628ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 4629pack(pop) directives to ensure that the ACPICA headers are independent of 4630compiler settings or other host headers. 4631 4632Example Code and Data Size: These are the sizes for the OS-independent 4633acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4634debug version of the code includes the debug output trace mechanism and 4635has a much larger code and data size. 4636 4637 Current Release: 4638 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4639 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4640 Previous Release: 4641 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4642 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4643 4644 46452) iASL Compiler/Disassembler and Tools: 4646 4647iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 4648first reserved field was incorrectly forced to have a value of zero. This 4649change correctly forces the field to have a value of one. ACPICA BZ 1081. 4650 4651Debugger: Added missing support for the "Extra" and "Data" subobjects 4652when displaying object data. 4653 4654Debugger: Added support to display entire object linked lists when 4655displaying object data. 4656 4657iASL: Removed the obsolete -g option to obtain ACPI tables from the 4658Windows registry. This feature has been superseded by the acpidump 4659utility. 4660 4661 4662---------------------------------------- 466314 January 2014. Summary of changes for version 20140114: 4664 46651) ACPICA kernel-resident subsystem: 4666 4667Updated all ACPICA copyrights and signons to 2014. Added the 2014 4668copyright to all module headers and signons, including the standard Linux 4669header. This affects virtually every file in the ACPICA core subsystem, 4670iASL compiler, all ACPICA utilities, and the test suites. 4671 4672Improved parameter validation for AcpiInstallGpeBlock. Added the 4673following checks: 46741) The incoming device handle refers to type ACPI_TYPE_DEVICE. 46752) There is not already a GPE block attached to the device. 4676Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 4677device. 4678 4679Correctly support "references" in the ACPI_OBJECT. This change fixes the 4680support to allow references (namespace nodes) to be passed as arguments 4681to control methods via the evaluate object interface. This is probably 4682most useful for testing purposes, however. 4683 4684Improved support for 32/64 bit physical addresses in printf()-like 4685output. This change improves the support for physical addresses in printf 4686debug statements and other output on both 32-bit and 64-bit hosts. It 4687consistently outputs the appropriate number of bytes for each host. The 4688%p specifier is unsatisfactory since it does not emit uniform output on 4689all hosts/clib implementations (on some, leading zeros are not supported, 4690leading to difficult-to-read output). 4691 4692Example Code and Data Size: These are the sizes for the OS-independent 4693acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4694debug version of the code includes the debug output trace mechanism and 4695has a much larger code and data size. 4696 4697 Current Release: 4698 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4699 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4700 Previous Release: 4701 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4702 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4703 4704 47052) iASL Compiler/Disassembler and Tools: 4706 4707iASL: Fix a possible fault when using the Connection() operator. Fixes a 4708problem if the parent Field definition for the Connection operator refers 4709to an operation region that does not exist. ACPICA BZ 1064. 4710 4711AcpiExec: Load of local test tables is now optional. The utility has the 4712capability to load some various tables to test features of ACPICA. 4713However, there are enough of them that the output of the utility became 4714confusing. With this change, only the required local tables are displayed 4715(RSDP, XSDT, etc.) along with the actual tables loaded via the command 4716line specification. This makes the default output simler and easier to 4717understand. The -el command line option restores the original behavior 4718for testing purposes. 4719 4720AcpiExec: Added support for overlapping operation regions. This change 4721expands the simulation of operation regions by supporting regions that 4722overlap within the given address space. Supports SystemMemory and 4723SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 4724 4725AcpiExec: Added region handler support for PCI_Config and EC spaces. This 4726allows AcpiExec to simulate these address spaces, similar to the current 4727support for SystemMemory and SystemIO. 4728 4729Debugger: Added new command to read/write/compare all namespace objects. 4730The command "test objects" will exercise the entire namespace by writing 4731new values to each data object, and ensuring that the write was 4732successful. The original value is then restored and verified. 4733 4734Debugger: Added the "test predefined" command. This change makes this 4735test public and puts it under the new "test" command. The test executes 4736each and every predefined name within the current namespace. 4737 4738 4739---------------------------------------- 474018 December 2013. Summary of changes for version 20131218: 4741 4742Global note: The ACPI 5.0A specification was released this month. There 4743are no changes needed for ACPICA since this release of ACPI is an 4744errata/clarification release. The specification is available at 4745acpi.info. 4746 4747 47481) ACPICA kernel-resident subsystem: 4749 4750Added validation of the XSDT root table if it is present. Some older 4751platforms contain an XSDT that is ill-formed or otherwise invalid (such 4752as containing some or all entries that are NULL pointers). This change 4753adds a new function to validate the XSDT before actually using it. If the 4754XSDT is found to be invalid, ACPICA will now automatically fall back to 4755using the RSDT instead. Original implementation by Zhao Yakui. Ported to 4756ACPICA and enhanced by Lv Zheng and Bob Moore. 4757 4758Added a runtime option to ignore the XSDT and force the use of the RSDT. 4759This change adds a runtime option that will force ACPICA to use the RSDT 4760instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 4761requires that an XSDT be used instead of the RSDT, the XSDT has been 4762found to be corrupt or ill-formed on some machines. Lv Zheng. 4763 4764Added a runtime option to favor 32-bit FADT register addresses over the 476564-bit addresses. This change adds an option to favor 32-bit FADT 4766addresses when there is a conflict between the 32-bit and 64-bit versions 4767of the same register. The default behavior is to use the 64-bit version 4768in accordance with the ACPI specification. This can now be overridden via 4769the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 4770 4771During the change above, the internal "Convert FADT" and "Verify FADT" 4772functions have been merged to simplify the code, making it easier to 4773understand and maintain. ACPICA BZ 933. 4774 4775Improve exception reporting and handling for GPE block installation. 4776Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 4777status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 4778 4779Added helper macros to extract bus/segment numbers from the HEST table. 4780This change adds two macros to extract the encoded bus and segment 4781numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 4782Betty Dall <betty.dall@hp.com> 4783 4784Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 4785by ACPICA. It is not a public macro, so it should have no effect on 4786existing OSV code. Lv Zheng. 4787 4788Example Code and Data Size: These are the sizes for the OS-independent 4789acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4790debug version of the code includes the debug output trace mechanism and 4791has a much larger code and data size. 4792 4793 Current Release: 4794 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4795 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4796 Previous Release: 4797 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4798 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4799 4800 48012) iASL Compiler/Disassembler and Tools: 4802 4803Disassembler: Improved pathname support for emitted External() 4804statements. This change adds full pathname support for external names 4805that have been resolved internally by the inclusion of additional ACPI 4806tables (via the iASL -e option). Without this change, the disassembler 4807can emit multiple externals for the same object, or it become confused 4808when the Scope() operator is used on an external object. Overall, greatly 4809improves the ability to actually recompile the emitted ASL code when 4810objects a referenced across multiple ACPI tables. Reported by Michael 4811Tsirkin (mst@redhat.com). 4812 4813Tests/ASLTS: Updated functional control suite to execute with no errors. 4814David Box. Fixed several errors related to the testing of the interpreter 4815slack mode. Lv Zheng. 4816 4817iASL: Added support to detect names that are declared within a control 4818method, but are unused (these are temporary names that are only valid 4819during the time the method is executing). A remark is issued for these 4820cases. ACPICA BZ 1022. 4821 4822iASL: Added full support for the DBG2 table. Adds full disassembler, 4823table compiler, and template generator support for the DBG2 table (Debug 4824Port 2 table). 4825 4826iASL: Added full support for the PCCT table, update the table definition. 4827Updates the PCCT table definition in the actbl3.h header and adds table 4828compiler and template generator support. 4829 4830iASL: Added an option to emit only error messages (no warnings/remarks). 4831The -ve option will enable only error messages, warnings and remarks are 4832suppressed. This can simplify debugging when only the errors are 4833important, such as when an ACPI table is disassembled and there are many 4834warnings and remarks -- but only the actual errors are of real interest. 4835 4836Example ACPICA code (source/tools/examples): Updated the example code so 4837that it builds to an actual working program, not just example code. Added 4838ACPI tables and execution of an example control method in the DSDT. Added 4839makefile support for Unix generation. 4840 4841 4842---------------------------------------- 484315 November 2013. Summary of changes for version 20131115: 4844 4845This release is available at https://acpica.org/downloads 4846 4847 48481) ACPICA kernel-resident subsystem: 4849 4850Resource Manager: Fixed loop termination for the "get AML length" 4851function. The loop previously had an error termination on a NULL resource 4852pointer, which can never happen since the loop simply increments a valid 4853resource pointer. This fix changes the loop to terminate with an error on 4854an invalid end-of-buffer condition. The problem can be seen as an 4855infinite loop by callers to AcpiSetCurrentResources with an invalid or 4856corrupted resource descriptor, or a resource descriptor that is missing 4857an END_TAG descriptor. Reported by Dan Carpenter 4858<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 4859 4860Table unload and ACPICA termination: Delete all attached data objects 4861during namespace node deletion. This fix updates namespace node deletion 4862to delete the entire list of attached objects (attached via 4863AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 48641024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 4865 4866ACPICA termination: Added support to delete all objects attached to the 4867root namespace node. This fix deletes any and all objects that have been 4868attached to the root node via AcpiAttachData. Previously, none of these 4869objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 4870 4871Debug output: Do not emit the function nesting level for the in-kernel 4872build. The nesting level is really only useful during a single-thread 4873execution. Therefore, only enable this output for the AcpiExec utility. 4874Also, only emit the thread ID when executing under AcpiExec (Context 4875switches are still always detected and a message is emitted). ACPICA BZ 4876972. 4877 4878Example Code and Data Size: These are the sizes for the OS-independent 4879acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4880debug version of the code includes the debug output trace mechanism and 4881has a much larger code and data size. 4882 4883 Current Release: 4884 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4885 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4886 Previous Release: 4887 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4888 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4889 4890 48912) iASL Compiler/Disassembler and Tools: 4892 4893AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 4894correct portable POSIX header for terminal control functions. 4895 4896Disassembler: Fixed control method invocation issues related to the use 4897of the CondRefOf() operator. The problem is seen in the disassembly where 4898control method invocations may not be disassembled properly if the 4899control method name has been used previously as an argument to CondRefOf. 4900The solution is to not attempt to emit an external declaration for the 4901CondRefOf target (it is not necessary in the first place). This prevents 4902disassembler object type confusion. ACPICA BZ 988. 4903 4904Unix Makefiles: Added an option to disable compiler optimizations and the 4905_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 4906with optimizations (reportedly, gcc 4.4 for example). This change adds a 4907command line option for make (NOOPT) that disables all compiler 4908optimizations and the _FORTIFY_SOURCE compiler flag. The default 4909optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 49101034. Lv Zheng, Bob Moore. 4911 4912Tests/ASLTS: Added options to specify individual test cases and modes. 4913This allows testers running aslts.sh to optionally specify individual 4914test modes and test cases. Also added an option to disable the forced 4915generation of the ACPICA tools from source if desired. Lv Zheng. 4916 4917---------------------------------------- 491827 September 2013. Summary of changes for version 20130927: 4919 4920This release is available at https://acpica.org/downloads 4921 4922 49231) ACPICA kernel-resident subsystem: 4924 4925Fixed a problem with store operations to reference objects. This change 4926fixes a problem where a Store operation to an ArgX object that contained 4927a 4928reference to a field object did not complete the automatic dereference 4929and 4930then write to the actual field object. Instead, the object type of the 4931field object was inadvertently changed to match the type of the source 4932operand. The new behavior will actually write to the field object (buffer 4933field or field unit), thus matching the correct ACPI-defined behavior. 4934 4935Implemented support to allow the host to redefine individual OSL 4936prototypes. This change enables the host to redefine OSL prototypes found 4937in the acpiosxf.h file. This allows the host to implement OSL interfaces 4938with a macro or inlined function. Further, it allows the host to add any 4939additional required modifiers such as __iomem, __init, __exit, etc., as 4940necessary on a per-interface basis. Enables maximum flexibility for the 4941OSL interfaces. Lv Zheng. 4942 4943Hardcoded the access width for the FADT-defined reset register. The ACPI 4944specification requires the reset register width to be 8 bits. ACPICA now 4945hardcodes the width to 8 and ignores the FADT width value. This provides 4946compatibility with other ACPI implementations that have allowed BIOS code 4947with bad register width values to go unnoticed. Matthew Garett, Bob 4948Moore, 4949Lv Zheng. 4950 4951Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 4952used 4953in the OSL header (acpiosxf). The change modifies the position of this 4954macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 4955build issues if the OSL defines the implementation of the interface to be 4956an inline stub function. Lv Zheng. 4957 4958Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 4959initialization interfaces. This change adds a new macro for the main init 4960and terminate external interfaces in order to support hosts that require 4961additional or different processing for these functions. Changed from 4962ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 4963Zheng, Bob Moore. 4964 4965Cleaned up the memory allocation macros for configurability. In the 4966common 4967case, the ACPI_ALLOCATE and related macros now resolve directly to their 4968respective AcpiOs* OSL interfaces. Two options: 49691) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 4970default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 49712) For AcpiExec (and for debugging), the macros can optionally be 4972resolved 4973to the local ACPICA interfaces that track each allocation (local tracking 4974is used to immediately detect memory leaks). 4975Lv Zheng. 4976 4977Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 4978to predefine this macro to either TRUE or FALSE during the system build. 4979 4980Replaced __FUNCTION_ with __func__ in the gcc-specific header. 4981 4982Example Code and Data Size: These are the sizes for the OS-independent 4983acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4984debug version of the code includes the debug output trace mechanism and 4985has a much larger code and data size. 4986 4987 Current Release: 4988 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4989 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4990 Previous Release: 4991 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4992 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4993 4994 49952) iASL Compiler/Disassembler and Tools: 4996 4997iASL: Implemented wildcard support for the -e option. This simplifies use 4998when there are many SSDTs that must be included to resolve external 4999method 5000declarations. ACPICA BZ 1041. Example: 5001 iasl -e ssdt*.dat -d dsdt.dat 5002 5003AcpiExec: Add history/line-editing for Unix/Linux systems. This change 5004adds a portable module that implements full history and limited line 5005editing for Unix and Linux systems. It does not use readline() due to 5006portability issues. Instead it uses the POSIX termio interface to put the 5007terminal in raw input mode so that the various special keys can be 5008trapped 5009(such as up/down-arrow for history support and left/right-arrow for line 5010editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 5011 5012AcpiXtract: Add support to handle (ignore) "empty" lines containing only 5013one or more spaces. This provides compatible with early or different 5014versions of the AcpiDump utility. ACPICA BZ 1044. 5015 5016AcpiDump: Do not ignore tables that contain only an ACPI table header. 5017Apparently, some BIOSs create SSDTs that contain an ACPI table header but 5018no other data. This change adds support to dump these tables. Any tables 5019shorter than the length of an ACPI table header remain in error (an error 5020message is emitted). Reported by Yi Li. 5021 5022Debugger: Echo actual command along with the "unknown command" message. 5023 5024---------------------------------------- 502523 August 2013. Summary of changes for version 20130823: 5026 50271) ACPICA kernel-resident subsystem: 5028 5029Implemented support for host-installed System Control Interrupt (SCI) 5030handlers. Certain ACPI functionality requires the host to handle raw 5031SCIs. For example, the "SCI Doorbell" that is defined for memory power 5032state support requires the host device driver to handle SCIs to examine 5033if the doorbell has been activated. Multiple SCI handlers can be 5034installed to allow for future expansion. New external interfaces are 5035AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 5036details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 5037 5038Operation region support: Never locally free the handler "context" 5039pointer. This change removes some dangerous code that attempts to free 5040the handler context pointer in some (rare) circumstances. The owner of 5041the handler owns this pointer and the ACPICA code should never touch it. 5042Although not seen to be an issue in any kernel, it did show up as a 5043problem (fault) under AcpiExec. Also, set the internal storage field for 5044the context pointer to zero when the region is deactivated, simply for 5045sanity. David Box. ACPICA BZ 1039. 5046 5047AcpiRead: On error, do not modify the return value target location. If an 5048error happens in the middle of a split 32/32 64-bit I/O operation, do not 5049modify the target of the return value pointer. Makes the code consistent 5050with the rest of ACPICA. Bjorn Helgaas. 5051 5052Example Code and Data Size: These are the sizes for the OS-independent 5053acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5054debug version of the code includes the debug output trace mechanism and 5055has a much larger code and data size. 5056 5057 Current Release: 5058 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5059 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5060 Previous Release: 5061 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5062 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 5063 5064 50652) iASL Compiler/Disassembler and Tools: 5066 5067AcpiDump: Implemented several new features and fixed some problems: 50681) Added support to dump the RSDP, RSDT, and XSDT tables. 50692) Added support for multiple table instances (SSDT, UEFI). 50703) Added option to dump "customized" (overridden) tables (-c). 50714) Fixed a problem where some table filenames were improperly 5072constructed. 50735) Improved some error messages, removed some unnecessary messages. 5074 5075iASL: Implemented additional support for disassembly of ACPI tables that 5076contain invocations of external control methods. The -fe<file> option 5077allows the import of a file that specifies the external methods along 5078with the required number of arguments for each -- allowing for the 5079correct disassembly of the table. This is a workaround for a limitation 5080of AML code where the disassembler often cannot determine the number of 5081arguments required for an external control method and generates incorrect 5082ASL code. See the iASL reference for details. ACPICA BZ 1030. 5083 5084Debugger: Implemented a new command (paths) that displays the full 5085pathnames (namepaths) and object types of all objects in the namespace. 5086This is an alternative to the namespace command. 5087 5088Debugger: Implemented a new command (sci) that invokes the SCI dispatch 5089mechanism and any installed handlers. 5090 5091iASL: Fixed a possible segfault for "too many parent prefixes" condition. 5092This can occur if there are too many parent prefixes in a namepath (for 5093example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 5094 5095Application OSLs: Set the return value for the PCI read functions. These 5096functions simply return AE_OK, but should set the return value to zero 5097also. This change implements this. ACPICA BZ 1038. 5098 5099Debugger: Prevent possible command line buffer overflow. Increase the 5100size of a couple of the debugger line buffers, and ensure that overflow 5101cannot happen. ACPICA BZ 1037. 5102 5103iASL: Changed to abort immediately on serious errors during the parsing 5104phase. Due to the nature of ASL, there is no point in attempting to 5105compile these types of errors, and they typically end up causing a 5106cascade of hundreds of errors which obscure the original problem. 5107 5108---------------------------------------- 510925 July 2013. Summary of changes for version 20130725: 5110 51111) ACPICA kernel-resident subsystem: 5112 5113Fixed a problem with the DerefOf operator where references to FieldUnits 5114and BufferFields incorrectly returned the parent object, not the actual 5115value of the object. After this change, a dereference of a FieldUnit 5116reference results in a read operation on the field to get the value, and 5117likewise, the appropriate BufferField value is extracted from the target 5118buffer. 5119 5120Fixed a problem where the _WAK method could cause a fault under these 5121circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 5122method returned no value. The problem is rarely seen because most kernels 5123run ACPICA in slack mode. 5124 5125For the DerefOf operator, a fatal error now results if an attempt is made 5126to dereference a reference (created by the Index operator) to a NULL 5127package element. Provides compatibility with other ACPI implementations, 5128and this behavior will be added to a future version of the ACPI 5129specification. 5130 5131The ACPI Power Management Timer (defined in the FADT) is now optional. 5132This provides compatibility with other ACPI implementations and will 5133appear in the next version of the ACPI specification. If there is no PM 5134Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 5135zero in the FADT indicates no PM timer. 5136 5137Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 5138allows the host to globally enable/disable all vendor strings, all 5139feature strings, or both. Intended to be primarily used for debugging 5140purposes only. Lv Zheng. 5141 5142Expose the collected _OSI data to the host via a global variable. This 5143data tracks the highest level vendor ID that has been invoked by the BIOS 5144so that the host (and potentially ACPICA itself) can change behaviors 5145based upon the age of the BIOS. 5146 5147Example Code and Data Size: These are the sizes for the OS-independent 5148acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5149debug version of the code includes the debug output trace mechanism and 5150has a much larger code and data size. 5151 5152 Current Release: 5153 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5154 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5155 Previous Release: 5156 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5157 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5158 5159 51602) iASL Compiler/Disassembler and Tools: 5161 5162iASL: Created the following enhancements for the -so option (create 5163offset table): 51641)Add offsets for the last nameseg in each namepath for every supported 5165object type 51662)Add support for Processor, Device, Thermal Zone, and Scope objects 51673)Add the actual AML opcode for the parent object of every supported 5168object type 51694)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 5170 5171Disassembler: Emit all unresolved external symbols in a single block. 5172These are external references to control methods that could not be 5173resolved, and thus, the disassembler had to make a guess at the number of 5174arguments to parse. 5175 5176iASL: The argument to the -T option (create table template) is now 5177optional. If not specified, the default table is a DSDT, typically the 5178most common case. 5179 5180---------------------------------------- 518126 June 2013. Summary of changes for version 20130626: 5182 51831) ACPICA kernel-resident subsystem: 5184 5185Fixed an issue with runtime repair of the _CST object. Null or invalid 5186elements were not always removed properly. Lv Zheng. 5187 5188Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 5189FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 5190the maximum number of GPEs is 1016. Use of multiple GPE block devices 5191makes the system-wide number of GPEs essentially unlimited. 5192 5193Example Code and Data Size: These are the sizes for the OS-independent 5194acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5195debug version of the code includes the debug output trace mechanism and 5196has a much larger code and data size. 5197 5198 Current Release: 5199 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5200 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5201 Previous Release: 5202 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5203 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5204 5205 52062) iASL Compiler/Disassembler and Tools: 5207 5208Portable AcpiDump: Implemented full support for the Linux and FreeBSD 5209hosts. Now supports Linux, FreeBSD, and Windows. 5210 5211Disassembler: Added some missing types for the HEST and EINJ tables: "Set 5212Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 5213 5214iASL/Preprocessor: Implemented full support for nested 5215#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 5216 5217Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 5218max. The original purpose of this constraint was to limit the amount of 5219debug output. However, the string function in question (UtPrintString) is 5220now used for the disassembler also, where 256 bytes is insufficient. 5221Reported by RehabMan@GitHub. 5222 5223iASL/DataTables: Fixed some problems and issues with compilation of DMAR 5224tables. ACPICA BZ 999. Lv Zheng. 5225 5226iASL: Fixed a couple of error exit issues that could result in a "Could 5227not delete <file>" message during ASL compilation. 5228 5229AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 5230the actual signatures for these tables are "FACP" and "APIC", 5231respectively. 5232 5233AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 5234tables are allowed to have multiple instances. 5235 5236---------------------------------------- 523717 May 2013. Summary of changes for version 20130517: 5238 52391) ACPICA kernel-resident subsystem: 5240 5241Fixed a regression introduced in version 20130328 for _INI methods. This 5242change fixes a problem introduced in 20130328 where _INI methods are no 5243longer executed properly because of a memory block that was not 5244initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 5245<tomasz.nowicki@linaro.org>. 5246 5247Fixed a possible problem with the new extended sleep registers in the 5248ACPI 52495.0 FADT. Do not use these registers (even if populated) unless the HW- 5250reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 52511020. Lv Zheng. 5252 5253Implemented return value repair code for _CST predefined objects: Sort 5254the 5255list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 5256 5257Implemented a debug-only option to disable loading of SSDTs from the 5258RSDT/XSDT during ACPICA initialization. This can be useful for debugging 5259ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 5260acglobal.h - ACPICA BZ 1005. Lv Zheng. 5261 5262Fixed some issues in the ACPICA initialization and termination code: 5263Tomasz Nowicki <tomasz.nowicki@linaro.org> 52641) Clear events initialized flag upon event component termination. ACPICA 5265BZ 1013. 52662) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 52673) Delete global lock pending lock during termination. ACPICA BZ 1012. 52684) Clear debug buffer global on termination to prevent possible multiple 5269delete. ACPICA BZ 1010. 5270 5271Standardized all switch() blocks across the entire source base. After 5272many 5273years, different formatting for switch() had crept in. This change makes 5274the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5275 5276Split some files to enhance ACPICA modularity and configurability: 52771) Split buffer dump routines into utilities/utbuffer.c 52782) Split internal error message routines into utilities/uterror.c 52793) Split table print utilities into tables/tbprint.c 52804) Split iASL command-line option processing into asloptions.c 5281 5282Makefile enhancements: 52831) Support for all new files above. 52842) Abort make on errors from any subcomponent. Chao Guan. 52853) Add build support for Apple Mac OS X. Liang Qi. 5286 5287Example Code and Data Size: These are the sizes for the OS-independent 5288acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5289debug version of the code includes the debug output trace mechanism and 5290has a much larger code and data size. 5291 5292 Current Release: 5293 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5294 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5295 Previous Release: 5296 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5297 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5298 5299 53002) iASL Compiler/Disassembler and Tools: 5301 5302New utility: Implemented an easily portable version of the acpidump 5303utility to extract ACPI tables from the system (or a file) in an ASCII 5304hex 5305dump format. The top-level code implements the various command line 5306options, file I/O, and table dump routines. To port to a new host, only 5307three functions need to be implemented to get tables -- since this 5308functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5309the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 53101) The Windows version obtains the ACPI tables from the Registry. 53112) The Linux version is under development. 53123) Other hosts - If an OS-dependent module is submitted, it will be 5313distributed with ACPICA. 5314 5315iASL: Fixed a regression for -D preprocessor option (define symbol). A 5316restructuring/change to the initialization sequence caused this option to 5317no longer work properly. 5318 5319iASL: Implemented a mechanism to disable specific warnings and remarks. 5320Adds a new command line option, "-vw <messageid> as well as "#pragma 5321disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5322 5323iASL: Fix for too-strict package object validation. The package object 5324validation for return values from the predefined names is a bit too 5325strict, it does not allow names references within the package (which will 5326be resolved at runtime.) These types of references cannot be validated at 5327compile time. This change ignores named references within package objects 5328for names that return or define static packages. 5329 5330Debugger: Fixed the 80-character command line limitation for the History 5331command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5332 5333iASL: Added control method and package support for the -so option 5334(generates AML offset table for BIOS support.) 5335 5336iASL: issue a remark if a non-serialized method creates named objects. If 5337a thread blocks within the method for any reason, and another thread 5338enters the method, the method will fail because an attempt will be made 5339to 5340create the same (named) object twice. In this case, issue a remark that 5341the method should be marked serialized. NOTE: may become a warning later. 5342ACPICA BZ 909. 5343 5344---------------------------------------- 534518 April 2013. Summary of changes for version 20130418: 5346 53471) ACPICA kernel-resident subsystem: 5348 5349Fixed a possible buffer overrun during some rare but specific field unit 5350read operations. This overrun can only happen if the DSDT version is 1 -- 5351meaning that all AML integers are 32 bits -- and the field length is 5352between 33 and 55 bits long. During the read, an internal buffer object 5353is 5354created for the field unit because the field is larger than an integer 5355(32 5356bits). However, in this case, the buffer will be incorrectly written 5357beyond the end because the buffer length is less than the internal 5358minimum 5359of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5360long, but a full 8 bytes will be written. 5361 5362Updated the Embedded Controller "orphan" _REG method support. This refers 5363to _REG methods under the EC device that have no corresponding operation 5364region. This is allowed by the ACPI specification. This update removes a 5365dependency on the existence an ECDT table. It will execute an orphan _REG 5366method as long as the operation region handler for the EC is installed at 5367the EC device node and not the namespace root. Rui Zhang (original 5368update), Bob Moore (update/integrate). 5369 5370Implemented run-time argument typechecking for all predefined ACPI names 5371(_STA, _BIF, etc.) This change performs object typechecking on all 5372incoming arguments for all predefined names executed via 5373AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5374passing correct object types as well as the correct number of arguments 5375(therefore identifying any issues immediately). Also, the ASL/namespace 5376definition of the predefined name is checked against the ACPI 5377specification for the proper argument count. Adds one new file, 5378nsarguments.c 5379 5380Changed an exception code for the ASL UnLoad() operator. Changed the 5381exception code for the case where the input DdbHandle is invalid, from 5382AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5383 5384Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5385global makefile. The use of this flag causes compiler errors on earlier 5386versions of GCC, so it has been removed for compatibility. 5387 5388Miscellaneous cleanup: 53891) Removed some unused/obsolete macros 53902) Fixed a possible memory leak in the _OSI support 53913) Removed an unused variable in the predefined name support 53924) Windows OSL: remove obsolete reference to a memory list field 5393 5394Example Code and Data Size: These are the sizes for the OS-independent 5395acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5396debug version of the code includes the debug output trace mechanism and 5397has a much larger code and data size. 5398 5399 Current Release: 5400 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5401 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5402 Previous Release: 5403 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5404 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5405 5406 54072) iASL Compiler/Disassembler and Tools: 5408 5409AcpiExec: Added installation of a handler for the SystemCMOS address 5410space. This prevents control method abort if a method accesses this 5411space. 5412 5413AcpiExec: Added support for multiple EC devices, and now install EC 5414operation region handler(s) at the actual EC device instead of the 5415namespace root. This reflects the typical behavior of host operating 5416systems. 5417 5418AcpiExec: Updated to ensure that all operation region handlers are 5419installed before the _REG methods are executed. This prevents a _REG 5420method from aborting if it accesses an address space has no handler. 5421AcpiExec installs a handler for every possible address space. 5422 5423Debugger: Enhanced the "handlers" command to display non-root handlers. 5424This change enhances the handlers command to display handlers associated 5425with individual devices throughout the namespace, in addition to the 5426currently supported display of handlers associated with the root 5427namespace 5428node. 5429 5430ASL Test Suite: Several test suite errors have been identified and 5431resolved, reducing the total error count during execution. Chao Guan. 5432 5433---------------------------------------- 543428 March 2013. Summary of changes for version 20130328: 5435 54361) ACPICA kernel-resident subsystem: 5437 5438Fixed several possible race conditions with the internal object reference 5439counting mechanism. Some of the external ACPICA interfaces update object 5440reference counts without holding the interpreter or namespace lock. This 5441change adds a spinlock to protect reference count updates on the internal 5442ACPICA objects. Reported by and with assistance from Andriy Gapon 5443(avg@FreeBSD.org). 5444 5445FADT support: Removed an extraneous warning for very large GPE register 5446sets. This change removes a size mismatch warning if the legacy length 5447field for a GPE register set is larger than the 64-bit GAS structure can 5448accommodate. GPE register sets can be larger than the 255-bit width 5449limitation of the GAS structure. Linn Crosetto (linn@hp.com). 5450 5451_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 5452return from this interface. Handles a possible timeout case if 5453ACPI_WAIT_FOREVER is modified by the host to be a value less than 5454"forever". Jung-uk Kim. 5455 5456Predefined name support: Add allowed/required argument type information 5457to 5458the master predefined info table. This change adds the infrastructure to 5459enable typechecking on incoming arguments for all predefined 5460methods/objects. It does not actually contain the code that will fully 5461utilize this information, this is still under development. Also condenses 5462some duplicate code for the predefined names into a new module, 5463utilities/utpredef.c 5464 5465Example Code and Data Size: These are the sizes for the OS-independent 5466acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5467debug version of the code includes the debug output trace mechanism and 5468has a much larger code and data size. 5469 5470 Previous Release: 5471 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5472 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5473 Current Release: 5474 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5475 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5476 5477 54782) iASL Compiler/Disassembler and Tools: 5479 5480iASL: Implemented a new option to simplify the development of ACPI- 5481related 5482BIOS code. Adds support for a new "offset table" output file. The -so 5483option will create a C table containing the AML table offsets of various 5484named objects in the namespace so that BIOS code can modify them easily 5485at 5486boot time. This can simplify BIOS runtime code by eliminating expensive 5487searches for "magic values", enhancing boot times and adding greater 5488reliability. With assistance from Lee Hamel. 5489 5490iASL: Allow additional predefined names to return zero-length packages. 5491Now, all predefined names that are defined by the ACPI specification to 5492return a "variable-length package of packages" are allowed to return a 5493zero length top-level package. This allows the BIOS to tell the host that 5494the requested feature is not supported, and supports existing BIOS/ASL 5495code and practices. 5496 5497iASL: Changed the "result not used" warning to an error. This is the case 5498where an ASL operator is effectively a NOOP because the result of the 5499operation is not stored anywhere. For example: 5500 Add (4, Local0) 5501There is no target (missing 3rd argument), nor is the function return 5502value used. This is potentially a very serious problem -- since the code 5503was probably intended to do something, but for whatever reason, the value 5504was not stored. Therefore, this issue has been upgraded from a warning to 5505an error. 5506 5507AcpiHelp: Added allowable/required argument types to the predefined names 5508info display. This feature utilizes the recent update to the predefined 5509names table (above). 5510 5511---------------------------------------- 551214 February 2013. Summary of changes for version 20130214: 5513 55141) ACPICA Kernel-resident Subsystem: 5515 5516Fixed a possible regression on some hosts: Reinstated the safe return 5517macros (return_ACPI_STATUS, etc.) that ensure that the argument is 5518evaluated only once. Although these macros are not needed for the ACPICA 5519code itself, they are often used by ACPI-related host device drivers 5520where 5521the safe feature may be necessary. 5522 5523Fixed several issues related to the ACPI 5.0 reduced hardware support 5524(SOC): Now ensure that if the platform declares itself as hardware- 5525reduced 5526via the FADT, the following functions become NOOPs (and always return 5527AE_OK) because ACPI is always enabled by definition on these machines: 5528 AcpiEnable 5529 AcpiDisable 5530 AcpiHwGetMode 5531 AcpiHwSetMode 5532 5533Dynamic Object Repair: Implemented additional runtime repairs for 5534predefined name return values. Both of these repairs can simplify code in 5535the related device drivers that invoke these methods: 55361) For the _STR and _MLS names, automatically repair/convert an ASCII 5537string to a Unicode buffer. 55382) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 5539a 5540lone end tag descriptor in the following cases: A Return(0) was executed, 5541a null buffer was returned, or no object at all was returned (non-slack 5542mode only). Adds a new file, nsconvert.c 5543ACPICA BZ 998. Bob Moore, Lv Zheng. 5544 5545Resource Manager: Added additional code to prevent possible infinite 5546loops 5547while traversing corrupted or ill-formed resource template buffers. Check 5548for zero-length resource descriptors in all code that loops through 5549resource templates (the length field is used to index through the 5550template). This change also hardens the external AcpiWalkResources and 5551AcpiWalkResourceBuffer interfaces. 5552 5553Local Cache Manager: Enhanced the main data structure to eliminate an 5554unnecessary mechanism to access the next object in the list. Actually 5555provides a small performance enhancement for hosts that use the local 5556ACPICA cache manager. Jung-uk Kim. 5557 5558Example Code and Data Size: These are the sizes for the OS-independent 5559acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5560debug version of the code includes the debug output trace mechanism and 5561has a much larger code and data size. 5562 5563 Previous Release: 5564 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5565 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5566 Current Release: 5567 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5568 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5569 5570 55712) iASL Compiler/Disassembler and Tools: 5572 5573iASL/Disassembler: Fixed several issues with the definition of the ACPI 55745.0 RASF table (RAS Feature Table). This change incorporates late changes 5575that were made to the ACPI 5.0 specification. 5576 5577iASL/Disassembler: Added full support for the following new ACPI tables: 5578 1) The MTMR table (MID Timer Table) 5579 2) The VRTC table (Virtual Real Time Clock Table). 5580Includes header file, disassembler, table compiler, and template support 5581for both tables. 5582 5583iASL: Implemented compile-time validation of package objects returned by 5584predefined names. This new feature validates static package objects 5585returned by the various predefined names defined to return packages. Both 5586object types and package lengths are validated, for both parent packages 5587and sub-packages, if any. The code is similar in structure and behavior 5588to 5589the runtime repair mechanism within the AML interpreter and uses the 5590existing predefined name information table. Adds a new file, aslprepkg.c. 5591ACPICA BZ 938. 5592 5593iASL: Implemented auto-detection of binary ACPI tables for disassembly. 5594This feature detects a binary file with a valid ACPI table header and 5595invokes the disassembler automatically. Eliminates the need to 5596specifically invoke the disassembler with the -d option. ACPICA BZ 862. 5597 5598iASL/Disassembler: Added several warnings for the case where there are 5599unresolved control methods during the disassembly. This can potentially 5600cause errors when the output file is compiled, because the disassembler 5601assumes zero method arguments in these cases (it cannot determine the 5602actual number of arguments without resolution/definition of the method). 5603 5604Debugger: Added support to display all resources with a single command. 5605Invocation of the resources command with no arguments will now display 5606all 5607resources within the current namespace. 5608 5609AcpiHelp: Added descriptive text for each ACPICA exception code displayed 5610via the -e option. 5611 5612---------------------------------------- 561317 January 2013. Summary of changes for version 20130117: 5614 56151) ACPICA Kernel-resident Subsystem: 5616 5617Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 5618return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 5619objects to return a package containing one integer, most BIOS code 5620returns 5621two integers and the previous code reflects that. However, we also need 5622to 5623support BIOS code that actually implements to the ACPI spec, and this 5624change reflects this. 5625 5626Fixed two issues with the ACPI_DEBUG_PRINT macros: 56271) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 5628C compilers that require this support. 56292) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 5630ACPI_DEBUG is already used by many of the various hosts. 5631 5632Updated all ACPICA copyrights and signons to 2013. Added the 2013 5633copyright to all module headers and signons, including the standard Linux 5634header. This affects virtually every file in the ACPICA core subsystem, 5635iASL compiler, all ACPICA utilities, and the test suites. 5636 5637Example Code and Data Size: These are the sizes for the OS-independent 5638acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5639debug version of the code includes the debug output trace mechanism and 5640has a much larger code and data size. 5641 5642 Previous Release: 5643 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5644 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5645 Current Release: 5646 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5647 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5648 5649 56502) iASL Compiler/Disassembler and Tools: 5651 5652Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 5653prevent a possible fault on some hosts. Some C libraries modify the arg 5654pointer parameter to vfprintf making it difficult to call it twice in the 5655AcpiOsVprintf function. Use a local buffer to workaround this issue. This 5656does not affect the Windows OSL since the Win C library does not modify 5657the arg pointer. Chao Guan, Bob Moore. 5658 5659iASL: Fixed a possible infinite loop when the maximum error count is 5660reached. If an output file other than the .AML file is specified (such as 5661a listing file), and the maximum number of errors is reached, do not 5662attempt to flush data to the output file(s) as the compiler is aborting. 5663This can cause an infinite loop as the max error count code essentially 5664keeps calling itself. 5665 5666iASL/Disassembler: Added an option (-in) to ignore NOOP 5667opcodes/operators. 5668Implemented for both the compiler and the disassembler. Often, the NOOP 5669opcode is used as padding for packages that are changed dynamically by 5670the 5671BIOS. When disassembled and recompiled, these NOOPs will cause syntax 5672errors. This option causes the disassembler to ignore all NOOP opcodes 5673(0xA3), and it also causes the compiler to ignore all ASL source code 5674NOOP 5675statements as well. 5676 5677Debugger: Enhanced the Sleep command to execute all sleep states. This 5678change allows Sleep to be invoked with no arguments and causes the 5679debugger to execute all of the sleep states, 0-5, automatically. 5680 5681---------------------------------------- 568220 December 2012. Summary of changes for version 20121220: 5683 56841) ACPICA Kernel-resident Subsystem: 5685 5686Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 5687alternate entry point for AcpiWalkResources and improves the usability of 5688the resource manager by accepting as input a buffer containing the output 5689of either a _CRS, _PRS, or _AEI method. The key functionality is that the 5690input buffer is not deleted by this interface so that it can be used by 5691the host later. See the ACPICA reference for details. 5692 5693Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 5694(DSDT version < 2). The constant will be truncated and this warning 5695reflects that behavior. 5696 5697Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 5698ExtendedInterrupt, and GpioInt descriptors. This change adds support to 5699both get and set the new wake bit in these descriptors, separately from 5700the existing share bit. Reported by Aaron Lu. 5701 5702Interpreter: Fix Store() when an implicit conversion is not possible. For 5703example, in the cases such as a store of a string to an existing package 5704object, implement the store as a CopyObject(). This is a small departure 5705from the ACPI specification which states that the control method should 5706be 5707aborted in this case. However, the ASLTS suite depends on this behavior. 5708 5709Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 5710macros: check if debug output is currently enabled as soon as possible to 5711minimize performance impact if debug is in fact not enabled. 5712 5713Source code restructuring: Cleanup to improve modularity. The following 5714new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 5715psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 5716Associated makefiles and project files have been updated. 5717 5718Changed an exception code for LoadTable operator. For the case where one 5719of the input strings is too long, change the returned exception code from 5720AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 5721 5722Fixed a possible memory leak in dispatcher error path. On error, delete 5723the mutex object created during method mutex creation. Reported by 5724tim.gardner@canonical.com. 5725 5726Example Code and Data Size: These are the sizes for the OS-independent 5727acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5728debug version of the code includes the debug output trace mechanism and 5729has a much larger code and data size. 5730 5731 Previous Release: 5732 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5733 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5734 Current Release: 5735 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5736 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5737 5738 57392) iASL Compiler/Disassembler and Tools: 5740 5741iASL: Disallow a method call as argument to the ObjectType ASL operator. 5742This change tracks an errata to the ACPI 5.0 document. The AML grammar 5743will not allow the interpreter to differentiate between a method and a 5744method invocation when these are used as an argument to the ObjectType 5745operator. The ACPI specification change is to disallow a method 5746invocation 5747(UserTerm) for the ObjectType operator. 5748 5749Finish support for the TPM2 and CSRT tables in the headers, table 5750compiler, and disassembler. 5751 5752Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 5753always expires immediately if the semaphore is not available. The 5754original 5755code was using a relative-time timeout, but sem_timedwait requires the 5756use 5757of an absolute time. 5758 5759iASL: Added a remark if the Timer() operator is used within a 32-bit 5760table. This operator returns a 64-bit time value that will be truncated 5761within a 32-bit table. 5762 5763iASL Source code restructuring: Cleanup to improve modularity. The 5764following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 5765aslmethod.c, and aslfileio.c. Associated makefiles and project files have 5766been updated. 5767 5768 5769---------------------------------------- 577014 November 2012. Summary of changes for version 20121114: 5771 57721) ACPICA Kernel-resident Subsystem: 5773 5774Implemented a performance enhancement for ACPI/AML Package objects. This 5775change greatly increases the performance of Package objects within the 5776interpreter. It changes the processing of reference counts for packages 5777by 5778optimizing for the most common case where the package sub-objects are 5779either Integers, Strings, or Buffers. Increases the overall performance 5780of 5781the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 57822X.) 5783Chao Guan. ACPICA BZ 943. 5784 5785Implemented and deployed common macros to extract flag bits from resource 5786descriptors. Improves readability and maintainability of the code. Fixes 5787a 5788problem with the UART serial bus descriptor for the number of data bits 5789flags (was incorrectly 2 bits, should be 3). 5790 5791Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 5792of the macros and changed the SETx macros to the style of (destination, 5793source). Also added ACPI_CASTx companion macros. Lv Zheng. 5794 5795Example Code and Data Size: These are the sizes for the OS-independent 5796acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5797debug version of the code includes the debug output trace mechanism and 5798has a much larger code and data size. 5799 5800 Previous Release: 5801 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5802 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5803 Current Release: 5804 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5805 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5806 5807 58082) iASL Compiler/Disassembler and Tools: 5809 5810Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 5811adds the ShareAndWake and ExclusiveAndWake flags which were added to the 5812Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 5813 5814Disassembler: Fixed a problem with external declaration generation. Fixes 5815a problem where an incorrect pathname could be generated for an external 5816declaration if the original reference to the object includes leading 5817carats (^). ACPICA BZ 984. 5818 5819Debugger: Completed a major update for the Disassemble<method> command. 5820This command was out-of-date and did not properly disassemble control 5821methods that had any reasonable complexity. This fix brings the command 5822up 5823to the same level as the rest of the disassembler. Adds one new file, 5824dmdeferred.c, which is existing code that is now common with the main 5825disassembler and the debugger disassemble command. ACPICA MZ 978. 5826 5827iASL: Moved the parser entry prototype to avoid a duplicate declaration. 5828Newer versions of Bison emit this prototype, so moved the prototype out 5829of 5830the iASL header to where it is actually used in order to avoid a 5831duplicate 5832declaration. 5833 5834iASL/Tools: Standardized use of the stream I/O functions: 5835 1) Ensure check for I/O error after every fopen/fread/fwrite 5836 2) Ensure proper order of size/count arguments for fread/fwrite 5837 3) Use test of (Actual != Requested) after all fwrite, and most fread 5838 4) Standardize I/O error messages 5839Improves reliability and maintainability of the code. Bob Moore, Lv 5840Zheng. 5841ACPICA BZ 981. 5842 5843Disassembler: Prevent duplicate External() statements. During generation 5844of external statements, detect similar pathnames that are actually 5845duplicates such as these: 5846 External (\ABCD) 5847 External (ABCD) 5848Remove all leading '\' characters from pathnames during the external 5849statement generation so that duplicates will be detected and tossed. 5850ACPICA BZ 985. 5851 5852Tools: Replace low-level I/O with stream I/O functions. Replace 5853open/read/write/close with the stream I/O equivalents 5854fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 5855Moore. 5856 5857AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 5858name header so that AcpiXtract recognizes the output file/table. 5859 5860iASL: Remove obsolete -2 option flag. Originally intended to force the 5861compiler/disassembler into an ACPI 2.0 mode, this was never implemented 5862and the entire concept is now obsolete. 5863 5864---------------------------------------- 586518 October 2012. Summary of changes for version 20121018: 5866 5867 58681) ACPICA Kernel-resident Subsystem: 5869 5870Updated support for the ACPI 5.0 MPST table. Fixes some problems 5871introduced by late changes to the table as it was added to the ACPI 5.0 5872specification. Includes header, disassembler, and data table compiler 5873support as well as a new version of the MPST template. 5874 5875AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 58765.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 5877methods: _HID, _CID, and _UID. 5878 5879Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 5880ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 5881name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 5882names for their various drivers. Affects the AcpiGetObjectInfo external 5883interface, and other internal interfaces as well. 5884 5885Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 5886This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 5887on machines that support non-aligned transfers. Optimizes for this case 5888rather than using a strncpy. With assistance from Zheng Lv. 5889 5890Resource Manager: Small fix for buffer size calculation. Fixed a one byte 5891error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 5892 5893Added a new debug print message for AML mutex objects that are force- 5894released. At control method termination, any currently acquired mutex 5895objects are force-released. Adds a new debug-only message for each one 5896that is released. 5897 5898Audited/updated all ACPICA return macros and the function debug depth 5899counter: 1) Ensure that all functions that use the various TRACE macros 5900also use the appropriate ACPICA return macros. 2) Ensure that all normal 5901return statements surround the return expression (value) with parens to 5902ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 5903Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 5904 5905Global source code changes/maintenance: All extra lines at the start and 5906end of each source file have been removed for consistency. Also, within 5907comments, all new sentences start with a single space instead of a double 5908space, again for consistency across the code base. 5909 5910Example Code and Data Size: These are the sizes for the OS-independent 5911acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5912debug version of the code includes the debug output trace mechanism and 5913has a much larger code and data size. 5914 5915 Previous Release: 5916 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5917 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5918 Current Release: 5919 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5920 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5921 5922 59232) iASL Compiler/Disassembler and Tools: 5924 5925AcpiExec: Improved the algorithm used for memory leak/corruption 5926detection. Added some intelligence to the code that maintains the global 5927list of allocated memory. The list is now ordered by allocated memory 5928address, significantly improving performance. When running AcpiExec on 5929the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 5930on the platform and/or the environment. Note, this performance 5931enhancement affects the AcpiExec utility only, not the kernel-resident 5932ACPICA code. 5933 5934Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 5935the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 5936incorrect table offset reported for invalid opcodes. Report the original 593732-bit value for bad ACPI_NAMEs (as well as the repaired name.) 5938 5939Disassembler: Enhanced the -vt option to emit the binary table data in 5940hex format to assist with debugging. 5941 5942Fixed a potential filename buffer overflow in osunixdir.c. Increased the 5943size of file structure. Colin Ian King. 5944 5945---------------------------------------- 594613 September 2012. Summary of changes for version 20120913: 5947 5948 59491) ACPICA Kernel-resident Subsystem: 5950 5951ACPI 5.0: Added two new notify types for the Hardware Error Notification 5952Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 5953and 5954MCE(6). 5955 5956Table Manager: Merged/removed duplicate code in the root table resize 5957functions. One function is external, the other is internal. Lv Zheng, 5958ACPICA 5959BZ 846. 5960 5961Makefiles: Completely removed the obsolete "Linux" makefiles under 5962acpica/generate/linux. These makefiles are obsolete and have been 5963replaced 5964by 5965the generic unix makefiles under acpica/generate/unix. 5966 5967Makefiles: Ensure that binary files always copied properly. Minor rule 5968change 5969to ensure that the final binary output files are always copied up to the 5970appropriate binary directory (bin32 or bin64.) 5971 5972Example Code and Data Size: These are the sizes for the OS-independent 5973acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5974debug 5975version of the code includes the debug output trace mechanism and has a 5976much 5977larger code and data size. 5978 5979 Previous Release: 5980 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5981 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5982 Current Release: 5983 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5984 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5985 5986 59872) iASL Compiler/Disassembler and Tools: 5988 5989Disassembler: Fixed a possible fault during the disassembly of resource 5990descriptors when a second parse is required because of the invocation of 5991external control methods within the table. With assistance from 5992adq@lidskialf.net. ACPICA BZ 976. 5993 5994iASL: Fixed a namepath optimization problem. An error can occur if the 5995parse 5996node that contains the namepath to be optimized does not have a parent 5997node 5998that is a named object. This change fixes the problem. 5999 6000iASL: Fixed a regression where the AML file is not deleted on errors. The 6001AML 6002output file should be deleted if there are any errors during the 6003compiler. 6004The 6005only exception is if the -f (force output) option is used. ACPICA BZ 974. 6006 6007iASL: Added a feature to automatically increase internal line buffer 6008sizes. 6009Via realloc(), automatically increase the internal line buffer sizes as 6010necessary to support very long source code lines. The current version of 6011the 6012preprocessor requires a buffer long enough to contain full source code 6013lines. 6014This change increases the line buffer(s) if the input lines go beyond the 6015current buffer size. This eliminates errors that occurred when a source 6016code 6017line was longer than the buffer. 6018 6019iASL: Fixed a problem with constant folding in method declarations. The 6020SyncLevel term is a ByteConstExpr, and incorrect code would be generated 6021if a 6022Type3 opcode was used. 6023 6024Debugger: Improved command help support. For incorrect argument count, 6025display 6026full help for the command. For help command itself, allow an argument to 6027specify a command. 6028 6029Test Suites: Several bug fixes for the ASLTS suite reduces the number of 6030errors during execution of the suite. Guan Chao. 6031 6032---------------------------------------- 603316 August 2012. Summary of changes for version 20120816: 6034 6035 60361) ACPICA Kernel-resident Subsystem: 6037 6038Removed all use of the deprecated _GTS and _BFS predefined methods. The 6039_GTS 6040(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 6041deprecated and will probably be removed from the ACPI specification. 6042Windows 6043does not invoke them, and reportedly never will. The final nail in the 6044coffin 6045is that the ACPI specification states that these methods must be run with 6046interrupts off, which is not going to happen in a kernel interpreter. 6047Note: 6048Linux has removed all use of the methods also. It was discovered that 6049invoking these functions caused failures on some machines, probably 6050because 6051they were never tested since Windows does not call them. Affects two 6052external 6053interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 6054ACPICA BZ 969. 6055 6056Implemented support for complex bit-packed buffers returned from the _PLD 6057(Physical Location of Device) predefined method. Adds a new external 6058interface, AcpiDecodePldBuffer that parses the buffer into a more usable 6059C 6060structure. Note: C Bitfields cannot be used for this type of predefined 6061structure since the memory layout of individual bitfields is not defined 6062by 6063the C language. In addition, there are endian concerns where a compiler 6064will 6065change the bitfield ordering based on the machine type. The new ACPICA 6066interface eliminates these issues, and should be called after _PLD is 6067executed. ACPICA BZ 954. 6068 6069Implemented a change to allow a scope change to root (via "Scope (\)") 6070during 6071execution of module-level ASL code (code that is executed at table load 6072time.) Lin Ming. 6073 6074Added the Windows8/Server2012 string for the _OSI method. This change 6075adds 6076a 6077new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 60782012. 6079 6080Added header support for the new ACPI tables DBG2 (Debug Port Table Type 60812) 6082and CSRT (Core System Resource Table). 6083 6084Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 6085names. This simplifies access to the buffers returned by these predefined 6086names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 6087 6088GPE support: Removed an extraneous parameter from the various low-level 6089internal GPE functions. Tang Feng. 6090 6091Removed the linux makefiles from the unix packages. The generate/linux 6092makefiles are obsolete and have been removed from the unix tarball 6093release 6094packages. The replacement makefiles are under generate/unix, and there is 6095a 6096top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 6097 6098Updates for Unix makefiles: 60991) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 61002) Update linker flags (move to end of command line) for AcpiExec 6101utility. 6102Guan Chao. 6103 6104Split ACPICA initialization functions to new file, utxfinit.c. Split from 6105utxface.c to improve modularity and reduce file size. 6106 6107Example Code and Data Size: These are the sizes for the OS-independent 6108acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6109debug version of the code includes the debug output trace mechanism and 6110has a 6111much larger code and data size. 6112 6113 Previous Release: 6114 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6115 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6116 Current Release: 6117 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6118 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6119 6120 61212) iASL Compiler/Disassembler and Tools: 6122 6123iASL: Fixed a problem with constant folding for fixed-length constant 6124expressions. The constant-folding code was not being invoked for constant 6125expressions that allow the use of type 3/4/5 opcodes to generate 6126constants 6127for expressions such as ByteConstExpr, WordConstExpr, etc. This could 6128result 6129in the generation of invalid AML bytecode. ACPICA BZ 970. 6130 6131iASL: Fixed a generation issue on newer versions of Bison. Newer versions 6132apparently automatically emit some of the necessary externals. This 6133change 6134handles these versions in order to eliminate generation warnings. 6135 6136Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 6137 6138Disassembler: Add support to decode _PLD buffers. The decoded buffer 6139appears 6140within comments in the output file. 6141 6142Debugger: Fixed a regression with the "Threads" command where 6143AE_BAD_PARAMETER was always returned. 6144 6145---------------------------------------- 614611 July 2012. Summary of changes for version 20120711: 6147 61481) ACPICA Kernel-resident Subsystem: 6149 6150Fixed a possible fault in the return package object repair code. Fixes a 6151problem that can occur when a lone package object is wrapped with an 6152outer 6153package object in order to force conformance to the ACPI specification. 6154Can 6155affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 6156_DLM, 6157_CSD, _PSD, _TSD. 6158 6159Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 6160PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 6161ARB_DIS bit must be implemented in the host-dependent C3 processor power 6162state 6163support. Note, ARB_DIS is obsolete and only applies to older chipsets, 6164both 6165Intel and other vendors. (for Intel: ICH4-M and earlier) 6166 6167This change removes the code to disable/enable bus master arbitration 6168during 6169suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 6170causes 6171resume problems on some machines. The change has been in use for over 6172seven 6173years within Linux. 6174 6175Implemented two new external interfaces to support host-directed dynamic 6176ACPI 6177table load and unload. They are intended to simplify the host 6178implementation 6179of hot-plug support: 6180 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 6181 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 6182table. 6183See the ACPICA reference for additional details. Adds one new file, 6184components/tables/tbxfload.c 6185 6186Implemented and deployed two new interfaces for errors and warnings that 6187are 6188known to be caused by BIOS/firmware issues: 6189 AcpiBiosError: Prints "ACPI Firmware Error" message. 6190 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 6191Deployed these new interfaces in the ACPICA Table Manager code for ACPI 6192table 6193and FADT errors. Additional deployment to be completed as appropriate in 6194the 6195future. The associated conditional macros are ACPI_BIOS_ERROR and 6196ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 6197ACPICA 6198BZ 6199843. 6200 6201Implicit notify support: ensure that no memory allocation occurs within a 6202critical region. This fix moves a memory allocation outside of the time 6203that a 6204spinlock is held. Fixes issues on systems that do not allow this 6205behavior. 6206Jung-uk Kim. 6207 6208Split exception code utilities and tables into a new file, 6209utilities/utexcep.c 6210 6211Example Code and Data Size: These are the sizes for the OS-independent 6212acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6213debug 6214version of the code includes the debug output trace mechanism and has a 6215much 6216larger code and data size. 6217 6218 Previous Release: 6219 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6220 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6221 Current Release: 6222 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6223 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6224 6225 62262) iASL Compiler/Disassembler and Tools: 6227 6228iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 6229of 62300. Jung-uk Kim. 6231 6232Debugger: Enhanced the "tables" command to emit additional information 6233about 6234the current set of ACPI tables, including the owner ID and flags decode. 6235 6236Debugger: Reimplemented the "unload" command to use the new 6237AcpiUnloadParentTable external interface. This command was disable 6238previously 6239due to need for an unload interface. 6240 6241AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 6242option 6243will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 6244 6245---------------------------------------- 624620 June 2012. Summary of changes for version 20120620: 6247 6248 62491) ACPICA Kernel-resident Subsystem: 6250 6251Implemented support to expand the "implicit notify" feature to allow 6252multiple 6253devices to be notified by a single GPE. This feature automatically 6254generates a 6255runtime device notification in the absence of a BIOS-provided GPE control 6256method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 6257notify is 6258provided by ACPICA for Windows compatibility, and is a workaround for 6259BIOS 6260AML 6261code errors. See the description of the AcpiSetupGpeForWake interface in 6262the 6263APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6264 6265Changed some comments and internal function names to simplify and ensure 6266correctness of the Linux code translation. No functional changes. 6267 6268Example Code and Data Size: These are the sizes for the OS-independent 6269acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6270debug 6271version of the code includes the debug output trace mechanism and has a 6272much 6273larger code and data size. 6274 6275 Previous Release: 6276 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6277 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6278 Current Release: 6279 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6280 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6281 6282 62832) iASL Compiler/Disassembler and Tools: 6284 6285Disassembler: Added support to emit short, commented descriptions for the 6286ACPI 6287predefined names in order to improve the readability of the disassembled 6288output. ACPICA BZ 959. Changes include: 6289 1) Emit descriptions for all standard predefined names (_INI, _STA, 6290_PRW, 6291etc.) 6292 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6293 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6294etc.) 6295 6296AcpiSrc: Fixed several long-standing Linux code translation issues. 6297Argument 6298descriptions in function headers are now translated properly to lower 6299case 6300and 6301underscores. ACPICA BZ 961. Also fixes translation problems such as 6302these: 6303(old -> new) 6304 i_aSL -> iASL 6305 00-7_f -> 00-7F 6306 16_k -> 16K 6307 local_fADT -> local_FADT 6308 execute_oSI -> execute_OSI 6309 6310iASL: Fixed a problem where null bytes were inadvertently emitted into 6311some 6312listing files. 6313 6314iASL: Added the existing debug options to the standard help screen. There 6315are 6316no longer two different help screens. ACPICA BZ 957. 6317 6318AcpiHelp: Fixed some typos in the various predefined name descriptions. 6319Also 6320expand some of the descriptions where appropriate. 6321 6322iASL: Fixed the -ot option (display compile times/statistics). Was not 6323working 6324properly for standard output; only worked for the debug file case. 6325 6326---------------------------------------- 632718 May 2012. Summary of changes for version 20120518: 6328 6329 63301) ACPICA Core Subsystem: 6331 6332Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6333defined 6334to block until asynchronous events such as notifies and GPEs have 6335completed. 6336Within ACPICA, it is only called before a notify or GPE handler is 6337removed/uninstalled. It also may be useful for the host OS within related 6338drivers such as the Embedded Controller driver. See the ACPICA reference 6339for 6340additional information. ACPICA BZ 868. 6341 6342ACPI Tables: Added a new error message for a possible overflow failure 6343during 6344the conversion of FADT 32-bit legacy register addresses to internal 6345common 634664- 6347bit GAS structure representation. The GAS has a one-byte "bit length" 6348field, 6349thus limiting the register length to 255 bits. ACPICA BZ 953. 6350 6351Example Code and Data Size: These are the sizes for the OS-independent 6352acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6353debug 6354version of the code includes the debug output trace mechanism and has a 6355much 6356larger code and data size. 6357 6358 Previous Release: 6359 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6360 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6361 Current Release: 6362 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6363 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6364 6365 63662) iASL Compiler/Disassembler and Tools: 6367 6368iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6369macro. 6370This keyword was added late in the ACPI 5.0 release cycle and was not 6371implemented until now. 6372 6373Disassembler: Added support for Operation Region externals. Adds missing 6374support for operation regions that are defined in another table, and 6375referenced locally via a Field or BankField ASL operator. Now generates 6376the 6377correct External statement. 6378 6379Disassembler: Several additional fixes for the External() statement 6380generation 6381related to some ASL operators. Also, order the External() statements 6382alphabetically in the disassembler output. Fixes the External() 6383generation 6384for 6385the Create* field, Alias, and Scope operators: 6386 1) Create* buffer field operators - fix type mismatch warning on 6387disassembly 6388 2) Alias - implement missing External support 6389 3) Scope - fix to make sure all necessary externals are emitted. 6390 6391iASL: Improved pathname support. For include files, merge the prefix 6392pathname 6393with the file pathname and eliminate unnecessary components. Convert 6394backslashes in all pathnames to forward slashes, for readability. Include 6395file 6396pathname changes affect both #include and Include() type operators. 6397 6398iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 6399end 6400of a valid line by inserting a newline and then returning the EOF during 6401the 6402next call to GetNextLine. Prevents the line from being ignored due to EOF 6403condition. 6404 6405iASL: Implemented some changes to enhance the IDE support (-vi option.) 6406Error 6407and Warning messages are now correctly recognized for both the source 6408code 6409browser and the global error and warning counts. 6410 6411---------------------------------------- 641220 April 2012. Summary of changes for version 20120420: 6413 6414 64151) ACPICA Core Subsystem: 6416 6417Implemented support for multiple notify handlers. This change adds 6418support 6419to 6420allow multiple system and device notify handlers on Device, Thermal Zone, 6421and 6422Processor objects. This can simplify the host OS notification 6423implementation. 6424Also re-worked and restructured the entire notify support code to 6425simplify 6426handler installation, handler removal, notify event queuing, and notify 6427dispatch to handler(s). Note: there can still only be two global notify 6428handlers - one for system notifies and one for device notifies. There are 6429no 6430changes to the existing handler install/remove interfaces. Lin Ming, Bob 6431Moore, Rafael Wysocki. 6432 6433Fixed a regression in the package repair code where the object reference 6434count was calculated incorrectly. Regression was introduced in the commit 6435"Support to add Package wrappers". 6436 6437Fixed a couple possible memory leaks in the AML parser, in the error 6438recovery 6439path. Jesper Juhl, Lin Ming. 6440 6441Example Code and Data Size: These are the sizes for the OS-independent 6442acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6443debug version of the code includes the debug output trace mechanism and 6444has a 6445much larger code and data size. 6446 6447 Previous Release: 6448 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6449 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6450 Current Release: 6451 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6452 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6453 6454 64552) iASL Compiler/Disassembler and Tools: 6456 6457iASL: Fixed a problem with the resource descriptor support where the 6458length 6459of the StartDependentFn and StartDependentFnNoPrio descriptors were not 6460included in cumulative descriptor offset, resulting in incorrect values 6461for 6462resource tags within resource descriptors appearing after a 6463StartDependent* 6464descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 6465 6466iASL and Preprocessor: Implemented full support for the #line directive 6467to 6468correctly track original source file line numbers through the .i 6469preprocessor 6470output file - for error and warning messages. 6471 6472iASL: Expand the allowable byte constants for address space IDs. 6473Previously, 6474the allowable range was 0x80-0xFF (user-defined spaces), now the range is 64750x0A-0xFF to allow for custom and new IDs without changing the compiler. 6476 6477iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 6478 6479iASL: Add option to completely disable the preprocessor (-Pn). 6480 6481iASL: Now emit all error/warning messages to standard error (stderr) by 6482default (instead of the previous stdout). 6483 6484ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 6485Update 6486for resource descriptor offset fix above. Update/cleanup error output 6487routines. Enable and send iASL errors/warnings to an error logfile 6488(error.txt). Send all other iASL output to a logfile (compiler.txt). 6489Fixed 6490several extraneous "unrecognized operator" messages. 6491 6492---------------------------------------- 649320 March 2012. Summary of changes for version 20120320: 6494 6495 64961) ACPICA Core Subsystem: 6497 6498Enhanced the sleep/wake interfaces to optionally execute the _GTS method 6499(Going To Sleep) and the _BFS method (Back From Sleep). Windows 6500apparently 6501does not execute these methods, and therefore these methods are often 6502untested. It has been seen on some systems where the execution of these 6503methods causes errors and also prevents the machine from entering S5. It 6504is 6505therefore suggested that host operating systems do not execute these 6506methods 6507by default. In the future, perhaps these methods can be optionally 6508executed 6509based on the age of the system and/or what is the newest version of 6510Windows 6511that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 6512and 6513AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 6514Ming. 6515 6516Fixed a problem where the length of the local/common FADT was set too 6517early. 6518The local FADT table length cannot be set to the common length until the 6519original length has been examined. There is code that checks the table 6520length 6521and sets various fields appropriately. This can affect older machines 6522with 6523early FADT versions. For example, this can cause inadvertent writes to 6524the 6525CST_CNT register. Julian Anastasov. 6526 6527Fixed a mapping issue related to a physical table override. Use the 6528deferred 6529mapping mechanism for tables loaded via the physical override OSL 6530interface. 6531This allows for early mapping before the virtual memory manager is 6532available. 6533Thomas Renninger, Bob Moore. 6534 6535Enhanced the automatic return-object repair code: Repair a common problem 6536with 6537predefined methods that are defined to return a variable-length Package 6538of 6539sub-objects. If there is only one sub-object, some BIOS ASL code 6540mistakenly 6541simply returns the single object instead of a Package with one sub- 6542object. 6543This new support will repair this error by wrapping a Package object 6544around 6545the original object, creating the correct and expected Package with one 6546sub- 6547object. Names that can be repaired in this manner include: _ALR, _CSD, 6548_HPX, 6549_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 6550939. 6551 6552Changed the exception code returned for invalid ACPI paths passed as 6553parameters to external interfaces such as AcpiEvaluateObject. Was 6554AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 6555 6556Example Code and Data Size: These are the sizes for the OS-independent 6557acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6558debug 6559version of the code includes the debug output trace mechanism and has a 6560much 6561larger code and data size. 6562 6563 Previous Release: 6564 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6565 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6566 Current Release: 6567 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6568 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6569 6570 65712) iASL Compiler/Disassembler and Tools: 6572 6573iASL: Added the infrastructure and initial implementation of a integrated 6574C- 6575like preprocessor. This will simplify BIOS development process by 6576eliminating 6577the need for a separate preprocessing step during builds. On Windows, it 6578also 6579eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 6580features including full #define() macro support are still under 6581development. 6582These preprocessor directives are supported: 6583 #define 6584 #elif 6585 #else 6586 #endif 6587 #error 6588 #if 6589 #ifdef 6590 #ifndef 6591 #include 6592 #pragma message 6593 #undef 6594 #warning 6595In addition, these new command line options are supported: 6596 -D <symbol> Define symbol for preprocessor use 6597 -li Create preprocessed output file (*.i) 6598 -P Preprocess only and create preprocessor output file (*.i) 6599 6600Table Compiler: Fixed a problem where the equals operator within an 6601expression 6602did not work properly. 6603 6604Updated iASL to use the current versions of Bison/Flex. Updated the 6605Windows 6606project file to invoke these tools from the standard location. ACPICA BZ 6607904. 6608Versions supported: 6609 Flex for Windows: V2.5.4 6610 Bison for Windows: V2.4.1 6611 6612---------------------------------------- 661315 February 2012. Summary of changes for version 20120215: 6614 6615 66161) ACPICA Core Subsystem: 6617 6618There have been some major changes to the sleep/wake support code, as 6619described below (a - e). 6620 6621a) The AcpiLeaveSleepState has been split into two interfaces, similar to 6622AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 6623AcpiLeaveSleepStatePrep. This allows the host to perform actions between 6624the 6625time the _BFS method is called and the _WAK method is called. NOTE: all 6626hosts 6627must update their wake/resume code or else sleep/wake will not work 6628properly. 6629Rafael Wysocki. 6630 6631b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 6632_WAK 6633method. Some machines require that the GPEs are enabled before the _WAK 6634method 6635is executed. Thomas Renninger. 6636 6637c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 6638bit. 6639Some BIOS code assumes that WAK_STS will be cleared on resume and use it 6640to 6641determine whether the system is rebooting or resuming. Matthew Garrett. 6642 6643d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 6644Sleep) to 6645match the ACPI specification requirement. Rafael Wysocki. 6646 6647e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 6648registers within the V5 FADT. This support adds two new files: 6649hardware/hwesleep.c implements the support for the new registers. Moved 6650all 6651sleep/wake external interfaces to hardware/hwxfsleep.c. 6652 6653 6654Added a new OSL interface for ACPI table overrides, 6655AcpiOsPhysicalTableOverride. This interface allows the host to override a 6656table via a physical address, instead of the logical address required by 6657AcpiOsTableOverride. This simplifies the host implementation. Initial 6658implementation by Thomas Renninger. The ACPICA implementation creates a 6659single 6660shared function for table overrides that attempts both a logical and a 6661physical override. 6662 6663Expanded the OSL memory read/write interfaces to 64-bit data 6664(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 6665transfer support for GAS register structures passed to AcpiRead and 6666AcpiWrite. 6667 6668Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 6669custom 6670build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 6671model. 6672See the ACPICA reference for details. ACPICA BZ 942. This option removes 6673about 667410% of the code and 5% of the static data, and the following hardware 6675ACPI 6676features become unavailable: 6677 PM Event and Control registers 6678 SCI interrupt (and handler) 6679 Fixed Events 6680 General Purpose Events (GPEs) 6681 Global Lock 6682 ACPI PM timer 6683 FACS table (Waking vectors and Global Lock) 6684 6685Updated the unix tarball directory structure to match the ACPICA git 6686source 6687tree. This ensures that the generic unix makefiles work properly (in 6688generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 6689867. 6690 6691Updated the return value of the _REV predefined method to integer value 5 6692to 6693reflect ACPI 5.0 support. 6694 6695Moved the external ACPI PM timer interface prototypes to the public 6696acpixf.h 6697file where they belong. 6698 6699Example Code and Data Size: These are the sizes for the OS-independent 6700acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6701debug 6702version of the code includes the debug output trace mechanism and has a 6703much 6704larger code and data size. 6705 6706 Previous Release: 6707 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6708 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6709 Current Release: 6710 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6711 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6712 6713 67142) iASL Compiler/Disassembler and Tools: 6715 6716Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 6717descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 6718incorrectly displayed. 6719 6720AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 6721specification. 6722 6723---------------------------------------- 672411 January 2012. Summary of changes for version 20120111: 6725 6726 67271) ACPICA Core Subsystem: 6728 6729Implemented a new mechanism to allow host device drivers to check for 6730address 6731range conflicts with ACPI Operation Regions. Both SystemMemory and 6732SystemIO 6733address spaces are supported. A new external interface, 6734AcpiCheckAddressRange, 6735allows drivers to check an address range against the ACPI namespace. See 6736the 6737ACPICA reference for additional details. Adds one new file, 6738utilities/utaddress.c. Lin Ming, Bob Moore. 6739 6740Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 6741Control 6742and 6743Status registers, update the ACPI 5.0 flags, and update internal data 6744structures to handle an FADT larger than 256 bytes. The size of the ACPI 67455.0 6746FADT is 268 bytes. 6747 6748Updated all ACPICA copyrights and signons to 2012. Added the 2012 6749copyright to 6750all module headers and signons, including the standard Linux header. This 6751affects virtually every file in the ACPICA core subsystem, iASL compiler, 6752and 6753all ACPICA utilities. 6754 6755Example Code and Data Size: These are the sizes for the OS-independent 6756acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6757debug 6758version of the code includes the debug output trace mechanism and has a 6759much 6760larger code and data size. 6761 6762 Previous Release: 6763 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6764 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6765 Current Release: 6766 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6767 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6768 6769 67702) iASL Compiler/Disassembler and Tools: 6771 6772Disassembler: fixed a problem with the automatic resource tag generation 6773support. Fixes a problem where the resource tags are inadvertently not 6774constructed if the table being disassembled contains external references 6775to 6776control methods. Moved the actual construction of the tags to after the 6777final 6778namespace is constructed (after 2nd parse is invoked due to external 6779control 6780method references.) ACPICA BZ 941. 6781 6782Table Compiler: Make all "generic" operators caseless. These are the 6783operators 6784like UINT8, String, etc. Making these caseless improves ease-of-use. 6785ACPICA BZ 6786934. 6787 6788---------------------------------------- 678923 November 2011. Summary of changes for version 20111123: 6790 67910) ACPI 5.0 Support: 6792 6793This release contains full support for the ACPI 5.0 specification, as 6794summarized below. 6795 6796Reduced Hardware Support: 6797------------------------- 6798 6799This support allows for ACPI systems without the usual ACPI hardware. 6800This 6801support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 6802will 6803not attempt to initialize or use any of the usual ACPI hardware. Note, 6804when 6805this flag is set, all of the following ACPI hardware is assumed to be not 6806present and is not initialized or accessed: 6807 6808 General Purpose Events (GPEs) 6809 Fixed Events (PM1a/PM1b and PM Control) 6810 Power Management Timer and Console Buttons (power/sleep) 6811 Real-time Clock Alarm 6812 Global Lock 6813 System Control Interrupt (SCI) 6814 The FACS is assumed to be non-existent 6815 6816ACPI Tables: 6817------------ 6818 6819All new tables and updates to existing tables are fully supported in the 6820ACPICA headers (for use by device drivers), the disassembler, and the 6821iASL 6822Data Table Compiler. ACPI 5.0 defines these new tables: 6823 6824 BGRT /* Boot Graphics Resource Table */ 6825 DRTM /* Dynamic Root of Trust for Measurement table */ 6826 FPDT /* Firmware Performance Data Table */ 6827 GTDT /* Generic Timer Description Table */ 6828 MPST /* Memory Power State Table */ 6829 PCCT /* Platform Communications Channel Table */ 6830 PMTT /* Platform Memory Topology Table */ 6831 RASF /* RAS Feature table */ 6832 6833Operation Regions/SpaceIDs: 6834--------------------------- 6835 6836All new operation regions are fully supported by the iASL compiler, the 6837disassembler, and the ACPICA runtime code (for dispatch to region 6838handlers.) 6839The new operation region Space IDs are: 6840 6841 GeneralPurposeIo 6842 GenericSerialBus 6843 6844Resource Descriptors: 6845--------------------- 6846 6847All new ASL resource descriptors are fully supported by the iASL 6848compiler, 6849the 6850ASL/AML disassembler, and the ACPICA runtime Resource Manager code 6851(including 6852all new predefined resource tags). New descriptors are: 6853 6854 FixedDma 6855 GpioIo 6856 GpioInt 6857 I2cSerialBus 6858 SpiSerialBus 6859 UartSerialBus 6860 6861ASL/AML Operators, New and Modified: 6862------------------------------------ 6863 6864One new operator is added, the Connection operator, which is used to 6865associate 6866a GeneralPurposeIo or GenericSerialBus resource descriptor with 6867individual 6868field objects within an operation region. Several new protocols are 6869associated 6870with the AccessAs operator. All are fully supported by the iASL compiler, 6871disassembler, and runtime ACPICA AML interpreter: 6872 6873 Connection // Declare Field Connection 6874attributes 6875 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 6876 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 6877Protocol 6878 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 6879 RawDataBuffer // Data type for Vendor Data 6880fields 6881 6882Predefined ASL/AML Objects: 6883--------------------------- 6884 6885All new predefined objects/control-methods are supported by the iASL 6886compiler 6887and the ACPICA runtime validation/repair (arguments and return values.) 6888New 6889predefined names include the following: 6890 6891Standard Predefined Names (Objects or Control Methods): 6892 _AEI, _CLS, _CPC, _CWS, _DEP, 6893 _DLM, _EVT, _GCP, _CRT, _GWS, 6894 _HRV, _PRE, _PSE, _SRT, _SUB. 6895 6896Resource Tags (Names used to access individual fields within resource 6897descriptors): 6898 _DBT, _DPL, _DRS, _END, _FLC, 6899 _IOR, _LIN, _MOD, _PAR, _PHA, 6900 _PIN, _PPI, _POL, _RXL, _SLV, 6901 _SPE, _STB, _TXL, _VEN. 6902 6903ACPICA External Interfaces: 6904--------------------------- 6905 6906Several new interfaces have been defined for use by ACPI-related device 6907drivers and other host OS services: 6908 6909AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 6910to 6911acquire and release AML mutexes that are defined in the DSDT/SSDT tables 6912provided by the BIOS. They are intended to be used in conjunction with 6913the 6914ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 6915mutual exclusion with the AML code/interpreter. 6916 6917AcpiGetEventResources: Returns the (formatted) resource descriptors as 6918defined 6919by the ACPI 5.0 _AEI object (ACPI Event Information). This object 6920provides 6921resource descriptors associated with hardware-reduced platform events, 6922similar 6923to the AcpiGetCurrentResources interface. 6924 6925Operation Region Handlers: For General Purpose IO and Generic Serial Bus 6926operation regions, information about the Connection() object and any 6927optional 6928length information is passed to the region handler within the Context 6929parameter. 6930 6931AcpiBufferToResource: This interface converts a raw AML buffer containing 6932a 6933resource template or resource descriptor to the ACPI_RESOURCE internal 6934format 6935suitable for use by device drivers. Can be used by an operation region 6936handler 6937to convert the Connection() buffer object into a ACPI_RESOURCE. 6938 6939Miscellaneous/Tools/TestSuites: 6940------------------------------- 6941 6942Support for extended _HID names (Four alpha characters instead of three). 6943Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 6944Support for ACPI 5.0 features in the ASLTS test suite. 6945Fully updated documentation (ACPICA and iASL reference documents.) 6946 6947ACPI Table Definition Language: 6948------------------------------- 6949 6950Support for this language was implemented and released as a subsystem of 6951the 6952iASL compiler in 2010. (See the iASL compiler User Guide.) 6953 6954 6955Non-ACPI 5.0 changes for this release: 6956-------------------------------------- 6957 69581) ACPICA Core Subsystem: 6959 6960Fix a problem with operation region declarations where a failure can 6961occur 6962if 6963the region name and an argument that evaluates to an object (such as the 6964region address) are in different namespace scopes. Lin Ming, ACPICA BZ 6965937. 6966 6967Do not abort an ACPI table load if an invalid space ID is found within. 6968This 6969will be caught later if the offending method is executed. ACPICA BZ 925. 6970 6971Fixed an issue with the FFixedHW space ID where the ID was not always 6972recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 6973 6974Fixed a problem with the 32-bit generation of the unix-specific OSL 6975(osunixxf.c). Lin Ming, ACPICA BZ 936. 6976 6977Several changes made to enable generation with the GCC 4.6 compiler. 6978ACPICA BZ 6979935. 6980 6981New error messages: Unsupported I/O requests (not 8/16/32 bit), and 6982Index/Bank 6983field registers out-of-range. 6984 69852) iASL Compiler/Disassembler and Tools: 6986 6987iASL: Implemented the __PATH__ operator, which returns the full pathname 6988of 6989the current source file. 6990 6991AcpiHelp: Automatically display expanded keyword information for all ASL 6992operators. 6993 6994Debugger: Add "Template" command to disassemble/dump resource template 6995buffers. 6996 6997Added a new master script to generate and execute the ASLTS test suite. 6998Automatically handles 32- and 64-bit generation. See tests/aslts.sh 6999 7000iASL: Fix problem with listing generation during processing of the 7001Switch() 7002operator where AML listing was disabled until the entire Switch block was 7003completed. 7004 7005iASL: Improve support for semicolon statement terminators. Fix "invalid 7006character" message for some cases when the semicolon is used. Semicolons 7007are 7008now allowed after every <Term> grammar element. ACPICA BZ 927. 7009 7010iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 7011923. 7012 7013Disassembler: Fix problem with disassembly of the DataTableRegion 7014operator 7015where an inadvertent "Unhandled deferred opcode" message could be 7016generated. 7017 70183) Example Code and Data Size 7019 7020These are the sizes for the OS-independent acpica.lib produced by the 7021Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7022includes the debug output trace mechanism and has a much larger code and 7023data 7024size. 7025 7026 Previous Release: 7027 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7028 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7029 Current Release: 7030 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7031 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7032 7033---------------------------------------- 703422 September 2011. Summary of changes for version 20110922: 7035 70360) ACPI 5.0 News: 7037 7038Support for ACPI 5.0 in ACPICA has been underway for several months and 7039will 7040be released at the same time that ACPI 5.0 is officially released. 7041 7042The ACPI 5.0 specification is on track for release in the next few 7043months. 7044 70451) ACPICA Core Subsystem: 7046 7047Fixed a problem where the maximum sleep time for the Sleep() operator was 7048intended to be limited to two seconds, but was inadvertently limited to 704920 7050seconds instead. 7051 7052Linux and Unix makefiles: Added header file dependencies to ensure 7053correct 7054generation of ACPICA core code and utilities. Also simplified the 7055makefiles 7056considerably through the use of the vpath variable to specify search 7057paths. 7058ACPICA BZ 924. 7059 70602) iASL Compiler/Disassembler and Tools: 7061 7062iASL: Implemented support to check the access length for all fields 7063created to 7064access named Resource Descriptor fields. For example, if a resource field 7065is 7066defined to be two bits, a warning is issued if a CreateXxxxField() is 7067used 7068with an incorrect bit length. This is implemented for all current 7069resource 7070descriptor names. ACPICA BZ 930. 7071 7072Disassembler: Fixed a byte ordering problem with the output of 24-bit and 707356- 7074bit integers. 7075 7076iASL: Fixed a couple of issues associated with variable-length package 7077objects. 1) properly handle constants like One, Ones, Zero -- do not make 7078a 7079VAR_PACKAGE when these are used as a package length. 2) Allow the 7080VAR_PACKAGE 7081opcode (in addition to PACKAGE) when validating object types for 7082predefined 7083names. 7084 7085iASL: Emit statistics for all output files (instead of just the ASL input 7086and 7087AML output). Includes listings, hex files, etc. 7088 7089iASL: Added -G option to the table compiler to allow the compilation of 7090custom 7091ACPI tables. The only part of a table that is required is the standard 709236- 7093byte 7094ACPI header. 7095 7096AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 7097headers), 7098which also adds correct 64-bit support. Also, now all output filenames 7099are 7100completely lower case. 7101 7102AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 7103loading table files. A warning is issued for any such tables. The only 7104exception is an FADT. This also fixes a possible fault when attempting to 7105load 7106non-AML tables. ACPICA BZ 932. 7107 7108AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 7109a 7110missing table terminator could cause a fault when using the -p option. 7111 7112AcpiSrc: Fixed a possible divide-by-zero fault when generating file 7113statistics. 7114 71153) Example Code and Data Size 7116 7117These are the sizes for the OS-independent acpica.lib produced by the 7118Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7119includes the debug output trace mechanism and has a much larger code and 7120data 7121size. 7122 7123 Previous Release (VC 9.0): 7124 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7125 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7126 Current Release (VC 9.0): 7127 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7128 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7129 7130 7131---------------------------------------- 713223 June 2011. Summary of changes for version 20110623: 7133 71341) ACPI CA Core Subsystem: 7135 7136Updated the predefined name repair mechanism to not attempt repair of a 7137_TSS 7138return object if a _PSS object is present. We can only sort the _TSS 7139return 7140package if there is no _PSS within the same scope. This is because if 7141_PSS 7142is 7143present, the ACPI specification dictates that the _TSS Power Dissipation 7144field 7145is to be ignored, and therefore some BIOSs leave garbage values in the 7146_TSS 7147Power field(s). In this case, it is best to just return the _TSS package 7148as- 7149is. Reported by, and fixed with assistance from Fenghua Yu. 7150 7151Added an option to globally disable the control method return value 7152validation 7153and repair. This runtime option can be used to disable return value 7154repair 7155if 7156this is causing a problem on a particular machine. Also added an option 7157to 7158AcpiExec (-dr) to set this disable flag. 7159 7160All makefiles and project files: Major changes to improve generation of 7161ACPICA 7162tools. ACPICA BZ 912: 7163 Reduce default optimization levels to improve compatibility 7164 For Linux, add strict-aliasing=0 for gcc 4 7165 Cleanup and simplify use of command line defines 7166 Cleanup multithread library support 7167 Improve usage messages 7168 7169Linux-specific header: update handling of THREAD_ID and pthread. For the 717032- 7171bit case, improve casting to eliminate possible warnings, especially with 7172the 7173acpica tools. 7174 7175Example Code and Data Size: These are the sizes for the OS-independent 7176acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7177debug 7178version of the code includes the debug output trace mechanism and has a 7179much 7180larger code and data size. 7181 7182 Previous Release (VC 9.0): 7183 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7184 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7185 Current Release (VC 9.0): 7186 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7187 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7188 71892) iASL Compiler/Disassembler and Tools: 7190 7191With this release, a new utility named "acpihelp" has been added to the 7192ACPICA 7193package. This utility summarizes the ACPI specification chapters for the 7194ASL 7195and AML languages. It generates under Linux/Unix as well as Windows, and 7196provides the following functionality: 7197 Find/display ASL operator(s) -- with description and syntax. 7198 Find/display ASL keyword(s) -- with exact spelling and descriptions. 7199 Find/display ACPI predefined name(s) -- with description, number 7200 of arguments, and the return value data type. 7201 Find/display AML opcode name(s) -- with opcode, arguments, and 7202grammar. 7203 Decode/display AML opcode -- with opcode name, arguments, and 7204grammar. 7205 7206Service Layers: Make multi-thread support configurable. Conditionally 7207compile 7208the multi-thread support so that threading libraries will not be linked 7209if 7210not 7211necessary. The only tool that requires multi-thread support is AcpiExec. 7212 7213iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 7214of 7215Bison appear to want the interface to yyerror to be a const char * (or at 7216least this is a problem when generating iASL on some systems.) ACPICA BZ 7217923 7218Pierre Lejeune. 7219 7220Tools: Fix for systems where O_BINARY is not defined. Only used for 7221Windows 7222versions of the tools. 7223 7224---------------------------------------- 722527 May 2011. Summary of changes for version 20110527: 7226 72271) ACPI CA Core Subsystem: 7228 7229ASL Load() operator: Reinstate most restrictions on the incoming ACPI 7230table 7231signature. Now, only allow SSDT, OEMx, and a null signature. History: 7232 1) Originally, we checked the table signature for "SSDT" or "PSDT". 7233 (PSDT is now obsolete.) 7234 2) We added support for OEMx tables, signature "OEM" plus a fourth 7235 "don't care" character. 7236 3) Valid tables were encountered with a null signature, so we just 7237 gave up on validating the signature, (05/2008). 7238 4) We encountered non-AML tables such as the MADT, which caused 7239 interpreter errors and kernel faults. So now, we once again allow 7240 only SSDT, OEMx, and now, also a null signature. (05/2011). 7241 7242Added the missing _TDL predefined name to the global name list in order 7243to 7244enable validation. Affects both the core ACPICA code and the iASL 7245compiler. 7246 7247Example Code and Data Size: These are the sizes for the OS-independent 7248acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7249debug 7250version of the code includes the debug output trace mechanism and has a 7251much 7252larger code and data size. 7253 7254 Previous Release (VC 9.0): 7255 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7256 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7257 Current Release (VC 9.0): 7258 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7259 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7260 72612) iASL Compiler/Disassembler and Tools: 7262 7263Debugger/AcpiExec: Implemented support for "complex" method arguments on 7264the 7265debugger command line. This adds support beyond simple integers -- 7266including 7267Strings, Buffers, and Packages. Includes support for nested packages. 7268Increased the default command line buffer size to accommodate these 7269arguments. 7270See the ACPICA reference for details and syntax. ACPICA BZ 917. 7271 7272Debugger/AcpiExec: Implemented support for "default" method arguments for 7273the 7274Execute/Debug command. Now, the debugger will always invoke a control 7275method 7276with the required number of arguments -- even if the command line 7277specifies 7278none or insufficient arguments. It uses default integer values for any 7279missing 7280arguments. Also fixes a bug where only six method arguments maximum were 7281supported instead of the required seven. 7282 7283Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7284and 7285also return status in order to prevent buffer overruns. See the ACPICA 7286reference for details and syntax. ACPICA BZ 921 7287 7288iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7289makefiles to simplify support for the two different but similar parser 7290generators, bison and yacc. 7291 7292Updated the generic unix makefile for gcc 4. The default gcc version is 7293now 7294expected to be 4 or greater, since options specific to gcc 4 are used. 7295 7296---------------------------------------- 729713 April 2011. Summary of changes for version 20110413: 7298 72991) ACPI CA Core Subsystem: 7300 7301Implemented support to execute a so-called "orphan" _REG method under the 7302EC 7303device. This change will force the execution of a _REG method underneath 7304the 7305EC 7306device even if there is no corresponding operation region of type 7307EmbeddedControl. Fixes a problem seen on some machines and apparently is 7308compatible with Windows behavior. ACPICA BZ 875. 7309 7310Added more predefined methods that are eligible for automatic NULL 7311package 7312element removal. This change adds another group of predefined names to 7313the 7314list 7315of names that can be repaired by having NULL package elements dynamically 7316removed. This group are those methods that return a single variable- 7317length 7318package containing simple data types such as integers, buffers, strings. 7319This 7320includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7321_PSL, 7322_Sx, 7323and _TZD. ACPICA BZ 914. 7324 7325Split and segregated all internal global lock functions to a new file, 7326evglock.c. 7327 7328Updated internal address SpaceID for DataTable regions. Moved this 7329internal 7330space 7331id in preparation for ACPI 5.0 changes that will include some new space 7332IDs. 7333This 7334change should not affect user/host code. 7335 7336Example Code and Data Size: These are the sizes for the OS-independent 7337acpica.lib 7338produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7339version of 7340the code includes the debug output trace mechanism and has a much larger 7341code 7342and 7343data size. 7344 7345 Previous Release (VC 9.0): 7346 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7347 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7348 Current Release (VC 9.0): 7349 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7350 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7351 73522) iASL Compiler/Disassembler and Tools: 7353 7354iASL/DTC: Major update for new grammar features. Allow generic data types 7355in 7356custom ACPI tables. Field names are now optional. Any line can be split 7357to 7358multiple lines using the continuation char (\). Large buffers now use 7359line- 7360continuation character(s) and no colon on the continuation lines. See the 7361grammar 7362update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7363Moore. 7364 7365iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7366statements. 7367Since the parser stuffs a "zero" as the return value for these statements 7368(due 7369to 7370the underlying AML grammar), they were seen as "return with value" by the 7371iASL 7372semantic checking. They are now seen correctly as "null" return 7373statements. 7374 7375iASL: Check if a_REG declaration has a corresponding Operation Region. 7376Adds a 7377check for each _REG to ensure that there is in fact a corresponding 7378operation 7379region declaration in the same scope. If not, the _REG method is not very 7380useful 7381since it probably won't be executed. ACPICA BZ 915. 7382 7383iASL/DTC: Finish support for expression evaluation. Added a new 7384expression 7385parser 7386that implements c-style operator precedence and parenthesization. ACPICA 7387bugzilla 7388908. 7389 7390Disassembler/DTC: Remove support for () and <> style comments in data 7391tables. 7392Now 7393that DTC has full expression support, we don't want to have comment 7394strings 7395that 7396start with a parentheses or a less-than symbol. Now, only the standard /* 7397and 7398// 7399comments are supported, as well as the bracket [] comments. 7400 7401AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 7402"unusual" 7403headers in the acpidump file. Update the header validation to support 7404these 7405tables. Problem introduced in previous AcpiXtract version in the change 7406to 7407support "wrong checksum" error messages emitted by acpidump utility. 7408 7409iASL: Add a * option to generate all template files (as a synonym for 7410ALL) 7411as 7412in 7413"iasl -T *" or "iasl -T ALL". 7414 7415iASL/DTC: Do not abort compiler on fatal errors. We do not want to 7416completely 7417abort the compiler on "fatal" errors, simply should abort the current 7418compile. 7419This allows multiple compiles with a single (possibly wildcard) compiler 7420invocation. 7421 7422---------------------------------------- 742316 March 2011. Summary of changes for version 20110316: 7424 74251) ACPI CA Core Subsystem: 7426 7427Fixed a problem caused by a _PRW method appearing at the namespace root 7428scope 7429during the setup of wake GPEs. A fault could occur if a _PRW directly 7430under 7431the 7432root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 7433 7434Implemented support for "spurious" Global Lock interrupts. On some 7435systems, a 7436global lock interrupt can occur without the pending flag being set. Upon 7437a 7438GL 7439interrupt, we now ensure that a thread is actually waiting for the lock 7440before 7441signaling GL availability. Rafael Wysocki, Bob Moore. 7442 7443Example Code and Data Size: These are the sizes for the OS-independent 7444acpica.lib 7445produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7446version of 7447the code includes the debug output trace mechanism and has a much larger 7448code 7449and 7450data size. 7451 7452 Previous Release (VC 9.0): 7453 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7454 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7455 Current Release (VC 9.0): 7456 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7457 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7458 74592) iASL Compiler/Disassembler and Tools: 7460 7461Implemented full support for the "SLIC" ACPI table. Includes support in 7462the 7463header files, disassembler, table compiler, and template generator. Bob 7464Moore, 7465Lin Ming. 7466 7467AcpiXtract: Correctly handle embedded comments and messages from 7468AcpiDump. 7469Apparently some or all versions of acpidump will occasionally emit a 7470comment 7471like 7472"Wrong checksum", etc., into the dump file. This was causing problems for 7473AcpiXtract. ACPICA BZ 905. 7474 7475iASL: Fix the Linux makefile by removing an inadvertent double file 7476inclusion. 7477ACPICA BZ 913. 7478 7479AcpiExec: Update installation of operation region handlers. Install one 7480handler 7481for a user-defined address space. This is used by the ASL test suite 7482(ASLTS). 7483 7484---------------------------------------- 748511 February 2011. Summary of changes for version 20110211: 7486 74871) ACPI CA Core Subsystem: 7488 7489Added a mechanism to defer _REG methods for some early-installed 7490handlers. 7491Most user handlers should be installed before call to 7492AcpiEnableSubsystem. 7493However, Event handlers and region handlers should be installed after 7494AcpiInitializeObjects. Override handlers for the "default" regions should 7495be 7496installed early, however. This change executes all _REG methods for the 7497default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 7498chicken/egg issues between them. ACPICA BZ 848. 7499 7500Implemented an optimization for GPE detection. This optimization will 7501simply 7502ignore GPE registers that contain no enabled GPEs -- there is no need to 7503read the register since this information is available internally. This 7504becomes more important on machines with a large GPE space. ACPICA 7505bugzilla 7506884. Lin Ming. Suggestion from Joe Liu. 7507 7508Removed all use of the highly unreliable FADT revision field. The 7509revision 7510number in the FADT has been found to be completely unreliable and cannot 7511be 7512trusted. Only the actual table length can be used to infer the version. 7513This 7514change updates the ACPICA core and the disassembler so that both no 7515longer 7516even look at the FADT version and instead depend solely upon the FADT 7517length. 7518 7519Fix an unresolved name issue for the no-debug and no-error-message source 7520generation cases. The _AcpiModuleName was left undefined in these cases, 7521but 7522it is actually needed as a parameter to some interfaces. Define 7523_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 7524 7525Split several large files (makefiles and project files updated) 7526 utglobal.c -> utdecode.c 7527 dbcomds.c -> dbmethod.c dbnames.c 7528 dsopcode.c -> dsargs.c dscontrol.c 7529 dsload.c -> dsload2.c 7530 aslanalyze.c -> aslbtypes.c aslwalks.c 7531 7532Example Code and Data Size: These are the sizes for the OS-independent 7533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7534debug version of the code includes the debug output trace mechanism and 7535has 7536a much larger code and data size. 7537 7538 Previous Release (VC 9.0): 7539 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7540 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7541 Current Release (VC 9.0): 7542 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7543 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7544 75452) iASL Compiler/Disassembler and Tools: 7546 7547iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 7548These are useful C-style macros with the standard definitions. ACPICA 7549bugzilla 898. 7550 7551iASL/DTC: Added support for integer expressions and labels. Support for 7552full 7553expressions for all integer fields in all ACPI tables. Support for labels 7554in 7555"generic" portions of tables such as UEFI. See the iASL reference manual. 7556 7557Debugger: Added a command to display the status of global handlers. The 7558"handlers" command will display op region, fixed event, and miscellaneous 7559global handlers. installation status -- and for op regions, whether 7560default 7561or user-installed handler will be used. 7562 7563iASL: Warn if reserved method incorrectly returns a value. Many 7564predefined 7565names are defined such that they do not return a value. If implemented as 7566a 7567method, issue a warning if such a name explicitly returns a value. ACPICA 7568Bugzilla 855. 7569 7570iASL: Added detection of GPE method name conflicts. Detects a conflict 7571where 7572there are two GPE methods of the form _Lxy and _Exy in the same scope. 7573(For 7574example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 7575 7576iASL/DTC: Fixed a couple input scanner issues with comments and line 7577numbers. Comment remover could get confused and miss a comment ending. 7578Fixed 7579a problem with line counter maintenance. 7580 7581iASL/DTC: Reduced the severity of some errors from fatal to error. There 7582is 7583no need to abort on simple errors within a field definition. 7584 7585Debugger: Simplified the output of the help command. All help output now 7586in 7587a single screen, instead of help subcommands. ACPICA Bugzilla 897. 7588 7589---------------------------------------- 759012 January 2011. Summary of changes for version 20110112: 7591 75921) ACPI CA Core Subsystem: 7593 7594Fixed a race condition between method execution and namespace walks that 7595can 7596possibly cause a fault. The problem was apparently introduced in version 759720100528 as a result of a performance optimization that reduces the 7598number 7599of 7600namespace walks upon method exit by using the delete_namespace_subtree 7601function instead of the delete_namespace_by_owner function used 7602previously. 7603Bug is a missing namespace lock in the delete_namespace_subtree function. 7604dana.myers@oracle.com 7605 7606Fixed several issues and a possible fault with the automatic "serialized" 7607method support. History: This support changes a method to "serialized" on 7608the 7609fly if the method generates an AE_ALREADY_EXISTS error, indicating the 7610possibility that it cannot handle reentrancy. This fix repairs a couple 7611of 7612issues seen in the field, especially on machines with many cores: 7613 7614 1) Delete method children only upon the exit of the last thread, 7615 so as to not delete objects out from under other running threads 7616 (and possibly causing a fault.) 7617 2) Set the "serialized" bit for the method only upon the exit of the 7618 Last thread, so as to not cause deadlock when running threads 7619 attempt to exit. 7620 3) Cleanup the use of the AML "MethodFlags" and internal method flags 7621 so that there is no longer any confusion between the two. 7622 7623 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 7624 7625Debugger: Now lock the namespace for duration of a namespace dump. 7626Prevents 7627issues if the namespace is changing dynamically underneath the debugger. 7628Especially affects temporary namespace nodes, since the debugger displays 7629these also. 7630 7631Updated the ordering of include files. The ACPICA headers should appear 7632before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 7633set 7634any necessary compiler-specific defines, etc. Affects the ACPI-related 7635tools 7636and utilities. 7637 7638Updated all ACPICA copyrights and signons to 2011. Added the 2011 7639copyright 7640to all module headers and signons, including the Linux header. This 7641affects 7642virtually every file in the ACPICA core subsystem, iASL compiler, and all 7643utilities. 7644 7645Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 7646project files for VC++ 6.0 are now obsolete. New project files can be 7647found 7648under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 7649details. 7650 7651Example Code and Data Size: These are the sizes for the OS-independent 7652acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7653debug version of the code includes the debug output trace mechanism and 7654has a 7655much larger code and data size. 7656 7657 Previous Release (VC 6.0): 7658 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7659 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7660 Current Release (VC 9.0): 7661 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7662 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7663 76642) iASL Compiler/Disassembler and Tools: 7665 7666iASL: Added generic data types to the Data Table compiler. Add "generic" 7667data 7668types such as UINT32, String, Unicode, etc., to simplify the generation 7669of 7670platform-defined tables such as UEFI. Lin Ming. 7671 7672iASL: Added listing support for the Data Table Compiler. Adds listing 7673support 7674(-l) to display actual binary output for each line of input code. 7675 7676---------------------------------------- 767709 December 2010. Summary of changes for version 20101209: 7678 76791) ACPI CA Core Subsystem: 7680 7681Completed the major overhaul of the GPE support code that was begun in 7682July 76832010. Major features include: removal of _PRW execution in ACPICA (host 7684executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 7685changes to existing interfaces, simplification of GPE handler operation, 7686and 7687a handful of new interfaces: 7688 7689 AcpiUpdateAllGpes 7690 AcpiFinishGpe 7691 AcpiSetupGpeForWake 7692 AcpiSetGpeWakeMask 7693 One new file, evxfgpe.c to consolidate all external GPE interfaces. 7694 7695See the ACPICA Programmer Reference for full details and programming 7696information. See the new section 4.4 "General Purpose Event (GPE) 7697Support" 7698for a full overview, and section 8.7 "ACPI General Purpose Event 7699Management" 7700for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 7701Ming, 7702Bob Moore, Rafael Wysocki. 7703 7704Implemented a new GPE feature for Windows compatibility, the "Implicit 7705Wake 7706GPE Notify". This feature will automatically issue a Notify(2) on a 7707device 7708when a Wake GPE is received if there is no corresponding GPE method or 7709handler. ACPICA BZ 870. 7710 7711Fixed a problem with the Scope() operator during table parse and load 7712phase. 7713During load phase (table load or method execution), the scope operator 7714should 7715not enter the target into the namespace. Instead, it should open a new 7716scope 7717at the target location. Linux BZ 19462, ACPICA BZ 882. 7718 7719Example Code and Data Size: These are the sizes for the OS-independent 7720acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7721debug version of the code includes the debug output trace mechanism and 7722has a 7723much larger code and data size. 7724 7725 Previous Release: 7726 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7727 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7728 Current Release: 7729 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7730 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7731 77322) iASL Compiler/Disassembler and Tools: 7733 7734iASL: Relax the alphanumeric restriction on _CID strings. These strings 7735are 7736"bus-specific" per the ACPI specification, and therefore any characters 7737are 7738acceptable. The only checks that can be performed are for a null string 7739and 7740perhaps for a leading asterisk. ACPICA BZ 886. 7741 7742iASL: Fixed a problem where a syntax error that caused a premature EOF 7743condition on the source file emitted a very confusing error message. The 7744premature EOF is now detected correctly. ACPICA BZ 891. 7745 7746Disassembler: Decode the AccessSize within a Generic Address Structure 7747(byte 7748access, word access, etc.) Note, this field does not allow arbitrary bit 7749access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 7750 7751New: AcpiNames utility - Example namespace dump utility. Shows an example 7752of 7753ACPICA configuration for a minimal namespace dump utility. Uses table and 7754namespace managers, but no AML interpreter. Does not add any 7755functionality 7756over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 7757partition and configure ACPICA. ACPICA BZ 883. 7758 7759AML Debugger: Increased the debugger buffer size for method return 7760objects. 7761Was 4K, increased to 16K. Also enhanced error messages for debugger 7762method 7763execution, including the buffer overflow case. 7764 7765---------------------------------------- 776613 October 2010. Summary of changes for version 20101013: 7767 77681) ACPI CA Core Subsystem: 7769 7770Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 7771now 7772clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 7773HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 7774 7775Changed the type of the predefined namespace object _TZ from ThermalZone 7776to 7777Device. This was found to be confusing to the host software that 7778processes 7779the various thermal zones, since _TZ is not really a ThermalZone. 7780However, 7781a 7782Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 7783Zhang. 7784 7785Added Windows Vista SP2 to the list of supported _OSI strings. The actual 7786string is "Windows 2006 SP2". 7787 7788Eliminated duplicate code in AcpiUtExecute* functions. Now that the 7789nsrepair 7790code automatically repairs _HID-related strings, this type of code is no 7791longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 7792878. 7793 7794Example Code and Data Size: These are the sizes for the OS-independent 7795acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7796debug version of the code includes the debug output trace mechanism and 7797has a 7798much larger code and data size. 7799 7800 Previous Release: 7801 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7802 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7803 Current Release: 7804 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7805 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7806 78072) iASL Compiler/Disassembler and Tools: 7808 7809iASL: Implemented additional compile-time validation for _HID strings. 7810The 7811non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 7812length 7813of 7814the string must be exactly seven or eight characters. For both _HID and 7815_CID 7816strings, all characters must be alphanumeric. ACPICA BZ 874. 7817 7818iASL: Allow certain "null" resource descriptors. Some BIOS code creates 7819descriptors that are mostly or all zeros, with the expectation that they 7820will 7821be filled in at runtime. iASL now allows this as long as there is a 7822"resource 7823tag" (name) associated with the descriptor, which gives the ASL a handle 7824needed to modify the descriptor. ACPICA BZ 873. 7825 7826Added single-thread support to the generic Unix application OSL. 7827Primarily 7828for iASL support, this change removes the use of semaphores in the 7829single- 7830threaded ACPICA tools/applications - increasing performance. The 7831_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 7832option. ACPICA BZ 879. 7833 7834AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 7835support 7836for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 7837 7838iASL: Moved all compiler messages to a new file, aslmessages.h. 7839 7840---------------------------------------- 784115 September 2010. Summary of changes for version 20100915: 7842 78431) ACPI CA Core Subsystem: 7844 7845Removed the AcpiOsDerivePciId OSL interface. The various host 7846implementations 7847of this function were not OS-dependent and are now obsolete and can be 7848removed from all host OSLs. This function has been replaced by 7849AcpiHwDerivePciId, which is now part of the ACPICA core code. 7850AcpiHwDerivePciId has been implemented without recursion. Adds one new 7851module, hwpci.c. ACPICA BZ 857. 7852 7853Implemented a dynamic repair for _HID and _CID strings. The following 7854problems are now repaired at runtime: 1) Remove a leading asterisk in the 7855string, and 2) the entire string is uppercased. Both repairs are in 7856accordance with the ACPI specification and will simplify host driver 7857code. 7858ACPICA BZ 871. 7859 7860The ACPI_THREAD_ID type is no longer configurable, internally it is now 7861always UINT64. This simplifies the ACPICA code, especially any printf 7862output. 7863UINT64 is the only common data type for all thread_id types across all 7864operating systems. It is now up to the host OSL to cast the native 7865thread_id 7866type to UINT64 before returning the value to ACPICA (via 7867AcpiOsGetThreadId). 7868Lin Ming, Bob Moore. 7869 7870Added the ACPI_INLINE type to enhance the ACPICA configuration. The 7871"inline" 7872keyword is not standard across compilers, and this type allows inline to 7873be 7874configured on a per-compiler basis. Lin Ming. 7875 7876Made the system global AcpiGbl_SystemAwakeAndRunning publicly 7877available. 7878Added an extern for this boolean in acpixf.h. Some hosts utilize this 7879value 7880during suspend/restore operations. ACPICA BZ 869. 7881 7882All code that implements error/warning messages with the "ACPI:" prefix 7883has 7884been moved to a new module, utxferror.c. 7885 7886The UINT64_OVERLAY was moved to utmath.c, which is the only module where 7887it 7888is used. ACPICA BZ 829. Lin Ming, Bob Moore. 7889 7890Example Code and Data Size: These are the sizes for the OS-independent 7891acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7892debug version of the code includes the debug output trace mechanism and 7893has a 7894much larger code and data size. 7895 7896 Previous Release: 7897 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7898 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7899 Current Release: 7900 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7901 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7902 79032) iASL Compiler/Disassembler and Tools: 7904 7905iASL/Disassembler: Write ACPI errors to stderr instead of the output 7906file. 7907This keeps the output files free of random error messages that may 7908originate 7909from within the namespace/interpreter code. Used this opportunity to 7910merge 7911all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 7912866. Lin Ming, Bob Moore. 7913 7914Tools: update some printfs for ansi warnings on size_t. Handle width 7915change 7916of size_t on 32-bit versus 64-bit generations. Lin Ming. 7917 7918---------------------------------------- 791906 August 2010. Summary of changes for version 20100806: 7920 79211) ACPI CA Core Subsystem: 7922 7923Designed and implemented a new host interface to the _OSI support code. 7924This 7925will allow the host to dynamically add or remove multiple _OSI strings, 7926as 7927well as install an optional handler that is called for each _OSI 7928invocation. 7929Also added a new AML debugger command, 'osi' to display and modify the 7930global 7931_OSI string table, and test support in the AcpiExec utility. See the 7932ACPICA 7933reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 7934New Functions: 7935 AcpiInstallInterface - Add an _OSI string. 7936 AcpiRemoveInterface - Delete an _OSI string. 7937 AcpiInstallInterfaceHandler - Install optional _OSI handler. 7938Obsolete Functions: 7939 AcpiOsValidateInterface - no longer used. 7940New Files: 7941 source/components/utilities/utosi.c 7942 7943Re-introduced the support to enable multi-byte transfers for Embedded 7944Controller (EC) operation regions. A reported problem was found to be a 7945bug 7946in the host OS, not in the multi-byte support. Previously, the maximum 7947data 7948size passed to the EC operation region handler was a single byte. There 7949are 7950often EC Fields larger than one byte that need to be transferred, and it 7951is 7952useful for the EC driver to lock these as a single transaction. This 7953change 7954enables single transfers larger than 8 bits. This effectively changes the 7955access to the EC space from ByteAcc to AnyAcc, and will probably require 7956changes to the host OS Embedded Controller driver to enable 16/32/64/256- 7957bit 7958transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 7959 7960Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 7961prototype in acpiosxf.h had the output value pointer as a (void *). 7962It should be a (UINT64 *). This may affect some host OSL code. 7963 7964Fixed a couple problems with the recently modified Linux makefiles for 7965iASL 7966and AcpiExec. These new makefiles place the generated object files in the 7967local directory so that there can be no collisions between the files that 7968are 7969shared between them that are compiled with different options. 7970 7971Example Code and Data Size: These are the sizes for the OS-independent 7972acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7973debug version of the code includes the debug output trace mechanism and 7974has a 7975much larger code and data size. 7976 7977 Previous Release: 7978 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7979 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7980 Current Release: 7981 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7982 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7983 79842) iASL Compiler/Disassembler and Tools: 7985 7986iASL/Disassembler: Added a new option (-da, "disassemble all") to load 7987the 7988namespace from and disassemble an entire group of AML files. Useful for 7989loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 7990and 7991disassembling with one simple command. ACPICA BZ 865. Lin Ming. 7992 7993iASL: Allow multiple invocations of -e option. This change allows 7994multiple 7995uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 7996834. 7997Lin Ming. 7998 7999---------------------------------------- 800002 July 2010. Summary of changes for version 20100702: 8001 80021) ACPI CA Core Subsystem: 8003 8004Implemented several updates to the recently added GPE reference count 8005support. The model for "wake" GPEs is changing to give the host OS 8006complete 8007control of these GPEs. Eventually, the ACPICA core will not execute any 8008_PRW 8009methods, since the host already must execute them. Also, additional 8010changes 8011were made to help ensure that the reference counts are kept in proper 8012synchronization with reality. Rafael J. Wysocki. 8013 80141) Ensure that GPEs are not enabled twice during initialization. 80152) Ensure that GPE enable masks stay in sync with the reference count. 80163) Do not inadvertently enable GPEs when writing GPE registers. 80174) Remove the internal wake reference counter and add new AcpiGpeWakeup 8018interface. This interface will set or clear individual GPEs for wakeup. 80195) Remove GpeType argument from AcpiEnable and AcpiDisable. These 8020interfaces 8021are now used for "runtime" GPEs only. 8022 8023Changed the behavior of the GPE install/remove handler interfaces. The 8024GPE 8025is 8026no longer disabled during this process, as it was found to cause problems 8027on 8028some machines. Rafael J. Wysocki. 8029 8030Reverted a change introduced in version 20100528 to enable Embedded 8031Controller multi-byte transfers. This change was found to cause problems 8032with 8033Index Fields and possibly Bank Fields. It will be reintroduced when these 8034problems have been resolved. 8035 8036Fixed a problem with references to Alias objects within Package Objects. 8037A 8038reference to an Alias within the definition of a Package was not always 8039resolved properly. Aliases to objects like Processors, Thermal zones, 8040etc. 8041were resolved to the actual object instead of a reference to the object 8042as 8043it 8044should be. Package objects are only allowed to contain integer, string, 8045buffer, package, and reference objects. Redhat bugzilla 608648. 8046 8047Example Code and Data Size: These are the sizes for the OS-independent 8048acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8049debug version of the code includes the debug output trace mechanism and 8050has a 8051much larger code and data size. 8052 8053 Previous Release: 8054 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8055 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8056 Current Release: 8057 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8058 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8059 80602) iASL Compiler/Disassembler and Tools: 8061 8062iASL: Implemented a new compiler subsystem to allow definition and 8063compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 8064These 8065are called "ACPI Data Tables", and the new compiler is the "Data Table 8066Compiler". This compiler is intended to simplify the existing error-prone 8067process of creating these tables for the BIOS, as well as allowing the 8068disassembly, modification, recompilation, and override of existing ACPI 8069data 8070tables. See the iASL User Guide for detailed information. 8071 8072iASL: Implemented a new Template Generator option in support of the new 8073Data 8074Table Compiler. This option will create examples of all known ACPI tables 8075that can be used as the basis for table development. See the iASL 8076documentation and the -T option. 8077 8078Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 8079Descriptor Table). 8080 8081Updated the Linux makefiles for iASL and AcpiExec to place the generated 8082object files in the local directory so that there can be no collisions 8083between the shared files between them that are generated with different 8084options. 8085 8086Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 8087Use 8088the #define __APPLE__ to enable this support. 8089 8090---------------------------------------- 809128 May 2010. Summary of changes for version 20100528: 8092 8093Note: The ACPI 4.0a specification was released on April 5, 2010 and is 8094available at www.acpi.info. This is primarily an errata release. 8095 80961) ACPI CA Core Subsystem: 8097 8098Undefined ACPI tables: We are looking for the definitions for the 8099following 8100ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 8101 8102Implemented support to enable multi-byte transfers for Embedded 8103Controller 8104(EC) operation regions. Previously, the maximum data size passed to the 8105EC 8106operation region handler was a single byte. There are often EC Fields 8107larger 8108than one byte that need to be transferred, and it is useful for the EC 8109driver 8110to lock these as a single transaction. This change enables single 8111transfers 8112larger than 8 bits. This effectively changes the access to the EC space 8113from 8114ByteAcc to AnyAcc, and will probably require changes to the host OS 8115Embedded 8116Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 8117bit 8118transfers. Alexey Starikovskiy, Lin Ming 8119 8120Implemented a performance enhancement for namespace search and access. 8121This 8122change enhances the performance of namespace searches and walks by adding 8123a 8124backpointer to the parent in each namespace node. On large namespaces, 8125this 8126change can improve overall ACPI performance by up to 9X. Adding a pointer 8127to 8128each namespace node increases the overall size of the internal namespace 8129by 8130about 5%, since each namespace entry usually consists of both a namespace 8131node and an ACPI operand object. However, this is the first growth of the 8132namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 8133 8134Implemented a performance optimization that reduces the number of 8135namespace 8136walks. On control method exit, only walk the namespace if the method is 8137known 8138to have created namespace objects outside of its local scope. Previously, 8139the 8140entire namespace was traversed on each control method exit. This change 8141can 8142improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 8143Moore. 8144 8145Added support to truncate I/O addresses to 16 bits for Windows 8146compatibility. 8147Some ASL code has been seen in the field that inadvertently has bits set 8148above bit 15. This feature is optional and is enabled if the BIOS 8149requests 8150any Windows OSI strings. It can also be enabled by the host OS. Matthew 8151Garrett, Bob Moore. 8152 8153Added support to limit the maximum time for the ASL Sleep() operator. To 8154prevent accidental deep sleeps, limit the maximum time that Sleep() will 8155actually sleep. Configurable, the default maximum is two seconds. ACPICA 8156bugzilla 854. 8157 8158Added run-time validation support for the _WDG and_WED Microsoft 8159predefined 8160methods. These objects are defined by "Windows Instrumentation", and are 8161not 8162part of the ACPI spec. ACPICA BZ 860. 8163 8164Expanded all statistic counters used during namespace and device 8165initialization from 16 to 32 bits in order to support very large 8166namespaces. 8167 8168Replaced all instances of %d in printf format specifiers with %u since 8169nearly 8170all integers in ACPICA are unsigned. 8171 8172Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 8173returned 8174as AE_NO_HANDLER. 8175 8176Example Code and Data Size: These are the sizes for the OS-independent 8177acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8178debug version of the code includes the debug output trace mechanism and 8179has a 8180much larger code and data size. 8181 8182 Previous Release: 8183 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8184 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8185 Current Release: 8186 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8187 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8188 81892) iASL Compiler/Disassembler and Tools: 8190 8191iASL: Added compiler support for the _WDG and_WED Microsoft predefined 8192methods. These objects are defined by "Windows Instrumentation", and are 8193not 8194part of the ACPI spec. ACPICA BZ 860. 8195 8196AcpiExec: added option to disable the memory tracking mechanism. The -dt 8197option will disable the tracking mechanism, which improves performance 8198considerably. 8199 8200AcpiExec: Restructured the command line options into -d (disable) and -e 8201(enable) options. 8202 8203---------------------------------------- 820428 April 2010. Summary of changes for version 20100428: 8205 82061) ACPI CA Core Subsystem: 8207 8208Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 8209including FADT-based and GPE Block Devices, execute any _PRW methods in 8210the 8211new table, and process any _Lxx/_Exx GPE methods in the new table. Any 8212runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 8213immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 8214Devices. Provides compatibility with other ACPI implementations. Two new 8215files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 8216Moore. 8217 8218Fixed a regression introduced in version 20100331 within the table 8219manager 8220where initial table loading could fail. This was introduced in the fix 8221for 8222AcpiReallocateRootTable. Also, renamed some of fields in the table 8223manager 8224data structures to clarify their meaning and use. 8225 8226Fixed a possible allocation overrun during internal object copy in 8227AcpiUtCopySimpleObject. The original code did not correctly handle the 8228case 8229where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 8230847. 8231 8232Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 8233possible access beyond end-of-allocation. Also, now fully validate 8234descriptor 8235(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 8236 8237Example Code and Data Size: These are the sizes for the OS-independent 8238acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8239debug version of the code includes the debug output trace mechanism and 8240has a 8241much larger code and data size. 8242 8243 Previous Release: 8244 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8245 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8246 Current Release: 8247 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8248 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8249 82502) iASL Compiler/Disassembler and Tools: 8251 8252iASL: Implemented Min/Max/Len/Gran validation for address resource 8253descriptors. This change implements validation for the address fields 8254that 8255are common to all address-type resource descriptors. These checks are 8256implemented: Checks for valid Min/Max, length within the Min/Max window, 8257valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 8258per 8259table 6-40 in the ACPI 4.0a specification. Also split the large 8260aslrestype1.c 8261and aslrestype2.c files into five new files. ACPICA BZ 840. 8262 8263iASL: Added support for the _Wxx predefined names. This support was 8264missing 8265and these names were not recognized by the compiler as valid predefined 8266names. ACPICA BZ 851. 8267 8268iASL: Added an error for all predefined names that are defined to return 8269no 8270value and thus must be implemented as Control Methods. These include all 8271of 8272the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8273names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8274 8275iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8276an 8277ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8278be 8279dynamically loaded via the Load() operator. Also cleaned up output for 8280the 8281- 8282ta and -tc options. ACPICA BZ 853. 8283 8284Tests: Added a new file with examples of extended iASL error checking. 8285Demonstrates the advanced error checking ability of the iASL compiler. 8286Available at tests/misc/badcode.asl. 8287 8288---------------------------------------- 828931 March 2010. Summary of changes for version 20100331: 8290 82911) ACPI CA Core Subsystem: 8292 8293Completed a major update for the GPE support in order to improve support 8294for 8295shared GPEs and to simplify both host OS and ACPICA code. Added a 8296reference 8297count mechanism to support shared GPEs that require multiple device 8298drivers. 8299Several external interfaces have changed. One external interface has been 8300removed. One new external interface was added. Most of the GPE external 8301interfaces now use the GPE spinlock instead of the events mutex (and the 8302Flags parameter for many GPE interfaces has been removed.) See the 8303updated 8304ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8305Rafael 8306Wysocki. ACPICA BZ 831. 8307 8308Changed: 8309 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8310Removed: 8311 AcpiSetGpeType 8312New: 8313 AcpiSetGpe 8314 8315Implemented write support for DataTable operation regions. These regions 8316are 8317defined via the DataTableRegion() operator. Previously, only read support 8318was 8319implemented. The ACPI specification allows DataTableRegions to be 8320read/write, 8321however. 8322 8323Implemented a new subsystem option to force a copy of the DSDT to local 8324memory. Optionally copy the entire DSDT to local memory (instead of 8325simply 8326mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8327replace 8328the original DSDT, creating the need for this option. Default is FALSE, 8329do 8330not copy the DSDT. 8331 8332Implemented detection of a corrupted or replaced DSDT. This change adds 8333support to detect a DSDT that has been corrupted and/or replaced from 8334outside 8335the OS (by firmware). This is typically catastrophic for the system, but 8336has 8337been seen on some machines. Once this problem has been detected, the DSDT 8338copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8339 8340Fixed two problems with AcpiReallocateRootTable during the root table 8341copy. 8342When copying the root table to the new allocation, the length used was 8343incorrect. The new size was used instead of the current table size, 8344meaning 8345too much data was copied. Also, the count of available slots for ACPI 8346tables 8347was not set correctly. Alexey Starikovskiy, Bob Moore. 8348 8349Example Code and Data Size: These are the sizes for the OS-independent 8350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8351debug version of the code includes the debug output trace mechanism and 8352has a 8353much larger code and data size. 8354 8355 Previous Release: 8356 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8357 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8358 Current Release: 8359 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8360 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8361 83622) iASL Compiler/Disassembler and Tools: 8363 8364iASL: Implement limited typechecking for values returned from predefined 8365control methods. The type of any returned static (unnamed) object is now 8366validated. For example, Return(1). ACPICA BZ 786. 8367 8368iASL: Fixed a predefined name object verification regression. Fixes a 8369problem 8370introduced in version 20100304. An error is incorrectly generated if a 8371predefined name is declared as a static named object with a value defined 8372using the keywords "Zero", "One", or "Ones". Lin Ming. 8373 8374iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8375by 8376reducing the requested registry access rights. ACPICA BZ 842. 8377 8378Disassembler: fixed a possible fault when generating External() 8379statements. 8380Introduced in commit ae7d6fd: Properly handle externals with parent- 8381prefix 8382(carat). Fixes a string length allocation calculation. Lin Ming. 8383 8384---------------------------------------- 838504 March 2010. Summary of changes for version 20100304: 8386 83871) ACPI CA Core Subsystem: 8388 8389Fixed a possible problem with the AML Mutex handling function 8390AcpiExReleaseMutex where the function could fault under the very rare 8391condition when the interpreter has blocked, the interpreter lock is 8392released, 8393the interpreter is then reentered via the same thread, and attempts to 8394acquire an AML mutex that was previously acquired. FreeBSD report 140979. 8395Lin 8396Ming. 8397 8398Implemented additional configuration support for the AML "Debug Object". 8399Output from the debug object can now be enabled via a global variable, 8400AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 8401debugging. 8402This debug output is now available in the release version of ACPICA 8403instead 8404of just the debug version. Also, the entire debug output module can now 8405be 8406configured out of the ACPICA build if desired. One new file added, 8407executer/exdebug.c. Lin Ming, Bob Moore. 8408 8409Added header support for the ACPI MCHI table (Management Controller Host 8410Interface Table). This table was added in ACPI 4.0, but the defining 8411document 8412has only recently become available. 8413 8414Standardized output of integer values for ACPICA warnings/errors. Always 8415use 84160x prefix for hex output, always use %u for unsigned integer decimal 8417output. 8418Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 8419400 8420invocations.) These invocations were converted from the original 8421ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 8422 8423Example Code and Data Size: These are the sizes for the OS-independent 8424acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8425debug version of the code includes the debug output trace mechanism and 8426has a 8427much larger code and data size. 8428 8429 Previous Release: 8430 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8431 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8432 Current Release: 8433 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8434 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8435 84362) iASL Compiler/Disassembler and Tools: 8437 8438iASL: Implemented typechecking support for static (non-control method) 8439predefined named objects that are declared with the Name() operator. For 8440example, the type of this object is now validated to be of type Integer: 8441Name(_BBN, 1). This change migrates the compiler to using the core 8442predefined 8443name table instead of maintaining a local version. Added a new file, 8444aslpredef.c. ACPICA BZ 832. 8445 8446Disassembler: Added support for the ACPI 4.0 MCHI table. 8447 8448---------------------------------------- 844921 January 2010. Summary of changes for version 20100121: 8450 84511) ACPI CA Core Subsystem: 8452 8453Added the 2010 copyright to all module headers and signons. This affects 8454virtually every file in the ACPICA core subsystem, the iASL compiler, the 8455tools/utilities, and the test suites. 8456 8457Implemented a change to the AcpiGetDevices interface to eliminate 8458unnecessary 8459invocations of the _STA method. In the case where a specific _HID is 8460requested, do not run _STA until a _HID match is found. This eliminates 8461potentially dozens of _STA calls during a search for a particular 8462device/HID, 8463which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 8464 8465Implemented an additional repair for predefined method return values. 8466Attempt 8467to repair unexpected NULL elements within returned Package objects. 8468Create 8469an 8470Integer of value zero, a NULL String, or a zero-length Buffer as 8471appropriate. 8472ACPICA BZ 818. Lin Ming, Bob Moore. 8473 8474Removed the obsolete ACPI_INTEGER data type. This type was introduced as 8475the 8476code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 8477(with 847864-bit AML integers). It is now obsolete and this change removes it from 8479the 8480ACPICA code base, replaced by UINT64. The original typedef has been 8481retained 8482for now for compatibility with existing device driver code. ACPICA BZ 8483824. 8484 8485Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 8486in 8487the parse tree object. 8488 8489Added additional warning options for the gcc-4 generation. Updated the 8490source 8491accordingly. This includes some code restructuring to eliminate 8492unreachable 8493code, elimination of some gotos, elimination of unused return values, 8494some 8495additional casting, and removal of redundant declarations. 8496 8497Example Code and Data Size: These are the sizes for the OS-independent 8498acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8499debug version of the code includes the debug output trace mechanism and 8500has a 8501much larger code and data size. 8502 8503 Previous Release: 8504 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8505 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8506 Current Release: 8507 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8508 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8509 85102) iASL Compiler/Disassembler and Tools: 8511 8512No functional changes for this release. 8513 8514---------------------------------------- 851514 December 2009. Summary of changes for version 20091214: 8516 85171) ACPI CA Core Subsystem: 8518 8519Enhanced automatic data type conversions for predefined name repairs. 8520This 8521change expands the automatic repairs/conversions for predefined name 8522return 8523values to make Integers, Strings, and Buffers fully interchangeable. 8524Also, 8525a 8526Buffer can be converted to a Package of Integers if necessary. The 8527nsrepair.c 8528module was completely restructured. Lin Ming, Bob Moore. 8529 8530Implemented automatic removal of null package elements during predefined 8531name 8532repairs. This change will automatically remove embedded and trailing NULL 8533package elements from returned package objects that are defined to 8534contain 8535a 8536variable number of sub-packages. The driver is then presented with a 8537package 8538with no null elements to deal with. ACPICA BZ 819. 8539 8540Implemented a repair for the predefined _FDE and _GTM names. The expected 8541return value for both names is a Buffer of 5 DWORDs. This repair fixes 8542two 8543possible problems (both seen in the field), where a package of integers 8544is 8545returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 8546Kim. 8547 8548Implemented additional module-level code support. This change will 8549properly 8550execute module-level code that is not at the root of the namespace (under 8551a 8552Device object, etc.). Now executes the code within the current scope 8553instead 8554of the root. ACPICA BZ 762. Lin Ming. 8555 8556Fixed possible mutex acquisition errors when running _REG methods. Fixes 8557a 8558problem where mutex errors can occur when running a _REG method that is 8559in 8560the same scope as a method-defined operation region or an operation 8561region 8562under a module-level IF block. This type of code is rare, so the problem 8563has 8564not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 8565 8566Fixed a possible memory leak during module-level code execution. An 8567object 8568could be leaked for each block of executed module-level code if the 8569interpreter slack mode is enabled This change deletes any implicitly 8570returned 8571object from the module-level code block. Lin Ming. 8572 8573Removed messages for successful predefined repair(s). The repair 8574mechanism 8575was considered too wordy. Now, messages are only unconditionally emitted 8576if 8577the return object cannot be repaired. Existing messages for successful 8578repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 8579827. 8580 8581Example Code and Data Size: These are the sizes for the OS-independent 8582acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8583debug version of the code includes the debug output trace mechanism and 8584has a 8585much larger code and data size. 8586 8587 Previous Release: 8588 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8589 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8590 Current Release: 8591 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8592 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8593 85942) iASL Compiler/Disassembler and Tools: 8595 8596iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 8597files 8598were no longer automatically removed at the termination of the compile. 8599 8600acpiexec: Implemented the -f option to specify default region fill value. 8601This option specifies the value used to initialize buffers that simulate 8602operation regions. Default value is zero. Useful for debugging problems 8603that 8604depend on a specific initial value for a region or field. 8605 8606---------------------------------------- 860712 November 2009. Summary of changes for version 20091112: 8608 86091) ACPI CA Core Subsystem: 8610 8611Implemented a post-order callback to AcpiWalkNamespace. The existing 8612interface only has a pre-order callback. This change adds an additional 8613parameter for a post-order callback which will be more useful for bus 8614scans. 8615ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 8616 8617Modified the behavior of the operation region memory mapping cache for 8618SystemMemory. Ensure that the memory mappings created for operation 8619regions 8620do not cross 4K page boundaries. Crossing a page boundary while mapping 8621regions can cause kernel warnings on some hosts if the pages have 8622different 8623attributes. Such regions are probably BIOS bugs, and this is the 8624workaround. 8625Linux BZ 14445. Lin Ming. 8626 8627Implemented an automatic repair for predefined methods that must return 8628sorted lists. This change will repair (by sorting) packages returned by 8629_ALR, 8630_PSS, and _TSS. Drivers can now assume that the packages are correctly 8631sorted 8632and do not contain NULL package elements. Adds one new file, 8633namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 8634 8635Fixed a possible fault during predefined name validation if a return 8636Package 8637object contains NULL elements. Also adds a warning if a NULL element is 8638followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 8639may 8640include repair or removal of all such NULL elements where possible. 8641 8642Implemented additional module-level executable AML code support. This 8643change 8644will execute module-level code that is not at the root of the namespace 8645(under a Device object, etc.) at table load time. Module-level executable 8646AML 8647code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 8648 8649Implemented a new internal function to create Integer objects. This 8650function 8651simplifies miscellaneous object creation code. ACPICA BZ 823. 8652 8653Reduced the severity of predefined repair messages, Warning to Info. 8654Since 8655the object was successfully repaired, a warning is too severe. Reduced to 8656an 8657info message for now. These messages may eventually be changed to debug- 8658only. 8659ACPICA BZ 812. 8660 8661Example Code and Data Size: These are the sizes for the OS-independent 8662acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8663debug version of the code includes the debug output trace mechanism and 8664has a 8665much larger code and data size. 8666 8667 Previous Release: 8668 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8669 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8670 Current Release: 8671 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8672 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8673 86742) iASL Compiler/Disassembler and Tools: 8675 8676iASL: Implemented Switch() with While(1) so that Break works correctly. 8677This 8678change correctly implements the Switch operator with a surrounding 8679While(1) 8680so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 8681 8682iASL: Added a message if a package initializer list is shorter than 8683package 8684length. Adds a new remark for a Package() declaration if an initializer 8685list 8686exists, but is shorter than the declared length of the package. Although 8687technically legal, this is probably a coding error and it is seen in the 8688field. ACPICA BZ 815. Lin Ming, Bob Moore. 8689 8690iASL: Fixed a problem where the compiler could fault after the maximum 8691number 8692of errors was reached (200). 8693 8694acpixtract: Fixed a possible warning for pointer cast if the compiler 8695warning 8696level set very high. 8697 8698---------------------------------------- 869913 October 2009. Summary of changes for version 20091013: 8700 87011) ACPI CA Core Subsystem: 8702 8703Fixed a problem where an Operation Region _REG method could be executed 8704more 8705than once. If a custom address space handler is installed by the host 8706before 8707the "initialize operation regions" phase of the ACPICA initialization, 8708any 8709_REG methods for that address space could be executed twice. This change 8710fixes the problem. ACPICA BZ 427. Lin Ming. 8711 8712Fixed a possible memory leak for the Scope() ASL operator. When the exact 8713invocation of "Scope(\)" is executed (change scope to root), one internal 8714operand object was leaked. Lin Ming. 8715 8716Implemented a run-time repair for the _MAT predefined method. If the _MAT 8717return value is defined as a Field object in the AML, and the field 8718size is less than or equal to the default width of an integer (32 or 871964),_MAT 8720can incorrectly return an Integer instead of a Buffer. ACPICA now 8721automatically repairs this problem. ACPICA BZ 810. 8722 8723Implemented a run-time repair for the _BIF and _BIX predefined methods. 8724The 8725"OEM Information" field is often incorrectly returned as an Integer with 8726value zero if the field is not supported by the platform. This is due to 8727an 8728ambiguity in the ACPI specification. The field should always be a string. 8729ACPICA now automatically repairs this problem by returning a NULL string 8730within the returned Package. ACPICA BZ 807. 8731 8732Example Code and Data Size: These are the sizes for the OS-independent 8733acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8734debug version of the code includes the debug output trace mechanism and 8735has a 8736much larger code and data size. 8737 8738 Previous Release: 8739 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8740 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8741 Current Release: 8742 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8743 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8744 87452) iASL Compiler/Disassembler and Tools: 8746 8747Disassembler: Fixed a problem where references to external symbols that 8748contained one or more parent-prefixes (carats) were not handled 8749correctly, 8750possibly causing a fault. ACPICA BZ 806. Lin Ming. 8751 8752Disassembler: Restructured the code so that all functions that handle 8753external symbols are in a single module. One new file is added, 8754common/dmextern.c. 8755 8756AML Debugger: Added a max count argument for the Batch command (which 8757executes multiple predefined methods within the namespace.) 8758 8759iASL: Updated the compiler documentation (User Reference.) Available at 8760http://www.acpica.org/documentation/. ACPICA BZ 750. 8761 8762AcpiXtract: Updated for Lint and other formatting changes. Close all open 8763files. 8764 8765---------------------------------------- 876603 September 2009. Summary of changes for version 20090903: 8767 87681) ACPI CA Core Subsystem: 8769 8770For Windows Vista compatibility, added the automatic execution of an _INI 8771method located at the namespace root (\_INI). This method is executed at 8772table load time. This support is in addition to the automatic execution 8773of 8774\_SB._INI. Lin Ming. 8775 8776Fixed a possible memory leak in the interpreter for AML package objects 8777if 8778the package initializer list is longer than the defined size of the 8779package. 8780This apparently can only happen if the BIOS changes the package size on 8781the 8782fly (seen in a _PSS object), as ASL compilers do not allow this. The 8783interpreter will truncate the package to the defined size (and issue an 8784error 8785message), but previously could leave the extra objects undeleted if they 8786were 8787pre-created during the argument processing (such is the case if the 8788package 8789consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 8790 8791Fixed a problem seen when a Buffer or String is stored to itself via ASL. 8792This has been reported in the field. Previously, ACPICA would zero out 8793the 8794buffer/string. Now, the operation is treated as a noop. Provides Windows 8795compatibility. ACPICA BZ 803. Lin Ming. 8796 8797Removed an extraneous error message for ASL constructs of the form 8798Store(LocalX,LocalX) when LocalX is uninitialized. These curious 8799statements 8800are seen in many BIOSs and are once again treated as NOOPs and no error 8801is 8802emitted when they are encountered. ACPICA BZ 785. 8803 8804Fixed an extraneous warning message if a _DSM reserved method returns a 8805Package object. _DSM can return any type of object, so validation on the 8806return type cannot be performed. ACPICA BZ 802. 8807 8808Example Code and Data Size: These are the sizes for the OS-independent 8809acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8810debug version of the code includes the debug output trace mechanism and 8811has a 8812much larger code and data size. 8813 8814 Previous Release: 8815 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8816 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8817 Current Release: 8818 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8819 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8820 88212) iASL Compiler/Disassembler and Tools: 8822 8823iASL: Fixed a problem with the use of the Alias operator and Resource 8824Templates. The correct alias is now constructed and no error is emitted. 8825ACPICA BZ 738. 8826 8827iASL: Implemented the -I option to specify additional search directories 8828for 8829include files. Allows multiple additional search paths for include files. 8830Directories are searched in the order specified on the command line 8831(after 8832the local directory is searched.) ACPICA BZ 800. 8833 8834iASL: Fixed a problem where the full pathname for include files was not 8835emitted for warnings/errors. This caused the IDE support to not work 8836properly. ACPICA BZ 765. 8837 8838iASL: Implemented the -@ option to specify a Windows-style response file 8839containing additional command line options. ACPICA BZ 801. 8840 8841AcpiExec: Added support to load multiple AML files simultaneously (such 8842as 8843a 8844DSDT and multiple SSDTs). Also added support for wildcards within the AML 8845pathname. These features allow all machine tables to be easily loaded and 8846debugged together. ACPICA BZ 804. 8847 8848Disassembler: Added missing support for disassembly of HEST table Error 8849Bank 8850subtables. 8851 8852---------------------------------------- 885330 July 2009. Summary of changes for version 20090730: 8854 8855The ACPI 4.0 implementation for ACPICA is complete with this release. 8856 88571) ACPI CA Core Subsystem: 8858 8859ACPI 4.0: Added header file support for all new and changed ACPI tables. 8860Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 8861new 8862for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 8863BERT, 8864EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 8865There 8866have been some ACPI 4.0 changes to other existing tables. Split the large 8867actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 8868 8869ACPI 4.0: Implemented predefined name validation for all new names. There 8870are 887131 new names in ACPI 4.0. The predefined validation module was split into 8872two 8873files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 8874 8875Implemented support for so-called "module-level executable code". This is 8876executable AML code that exists outside of any control method and is 8877intended 8878to be executed at table load time. Although illegal since ACPI 2.0, this 8879type 8880of code still exists and is apparently still being created. Blocks of 8881this 8882code are now detected and executed as intended. Currently, the code 8883blocks 8884must exist under either an If, Else, or While construct; these are the 8885typical cases seen in the field. ACPICA BZ 762. Lin Ming. 8886 8887Implemented an automatic dynamic repair for predefined names that return 8888nested Package objects. This applies to predefined names that are defined 8889to 8890return a variable-length Package of sub-packages. If the number of sub- 8891packages is one, BIOS code is occasionally seen that creates a simple 8892single 8893package with no sub-packages. This code attempts to fix the problem by 8894wrapping a new package object around the existing package. These methods 8895can 8896be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 8897BZ 8898790. 8899 8900Fixed a regression introduced in 20090625 for the AcpiGetDevices 8901interface. 8902The _HID/_CID matching was broken and no longer matched IDs correctly. 8903ACPICA 8904BZ 793. 8905 8906Fixed a problem with AcpiReset where the reset would silently fail if the 8907register was one of the protected I/O ports. AcpiReset now bypasses the 8908port 8909validation mechanism. This may eventually be driven into the 8910AcpiRead/Write 8911interfaces. 8912 8913Fixed a regression related to the recent update of the AcpiRead/Write 8914interfaces. A sleep/suspend could fail if the optional PM2 Control 8915register 8916does not exist during an attempt to write the Bus Master Arbitration bit. 8917(However, some hosts already delete the code that writes this bit, and 8918the 8919code may in fact be obsolete at this date.) ACPICA BZ 799. 8920 8921Fixed a problem where AcpiTerminate could fault if inadvertently called 8922twice 8923in succession. ACPICA BZ 795. 8924 8925Example Code and Data Size: These are the sizes for the OS-independent 8926acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8927debug version of the code includes the debug output trace mechanism and 8928has a 8929much larger code and data size. 8930 8931 Previous Release: 8932 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8933 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8934 Current Release: 8935 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8936 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8937 89382) iASL Compiler/Disassembler and Tools: 8939 8940ACPI 4.0: Implemented disassembler support for all new ACPI tables and 8941changes to existing tables. ACPICA BZ 775. 8942 8943---------------------------------------- 894425 June 2009. Summary of changes for version 20090625: 8945 8946The ACPI 4.0 Specification was released on June 16 and is available at 8947www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 8948continue for the next few releases. 8949 89501) ACPI CA Core Subsystem: 8951 8952ACPI 4.0: Implemented interpreter support for the IPMI operation region 8953address space. Includes support for bi-directional data buffers and an 8954IPMI 8955address space handler (to be installed by an IPMI device driver.) ACPICA 8956BZ 8957773. Lin Ming. 8958 8959ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 8960Includes 8961support in both the header files and the disassembler. 8962 8963Completed a major update for the AcpiGetObjectInfo external interface. 8964Changes include: 8965 - Support for variable, unlimited length HID, UID, and CID strings. 8966 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 8967etc.) 8968 - Call the _SxW power methods on behalf of a device object. 8969 - Determine if a device is a PCI root bridge. 8970 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 8971These changes will require an update to all callers of this interface. 8972See 8973the updated ACPICA Programmer Reference for details. One new source file 8974has 8975been added - utilities/utids.c. ACPICA BZ 368, 780. 8976 8977Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 8978transfers. The Value parameter has been extended from 32 bits to 64 bits 8979in 8980order to support new ACPI 4.0 tables. These changes will require an 8981update 8982to 8983all callers of these interfaces. See the ACPICA Programmer Reference for 8984details. ACPICA BZ 768. 8985 8986Fixed several problems with AcpiAttachData. The handler was not invoked 8987when 8988the host node was deleted. The data sub-object was not automatically 8989deleted 8990when the host node was deleted. The interface to the handler had an 8991unused 8992parameter, this was removed. ACPICA BZ 778. 8993 8994Enhanced the function that dumps ACPI table headers. All non-printable 8995characters in the string fields are now replaced with '?' (Signature, 8996OemId, 8997OemTableId, and CompilerId.) ACPI tables with non-printable characters in 8998these fields are occasionally seen in the field. ACPICA BZ 788. 8999 9000Fixed a problem with predefined method repair code where the code that 9001attempts to repair/convert an object of incorrect type is only executed 9002on 9003the first time the predefined method is called. The mechanism that 9004disables 9005warnings on subsequent calls was interfering with the repair mechanism. 9006ACPICA BZ 781. 9007 9008Fixed a possible memory leak in the predefined validation/repair code 9009when 9010a 9011buffer is automatically converted to an expected string object. 9012 9013Removed obsolete 16-bit files from the distribution and from the current 9014git 9015tree head. ACPICA BZ 776. 9016 9017Example Code and Data Size: These are the sizes for the OS-independent 9018acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9019debug version of the code includes the debug output trace mechanism and 9020has a 9021much larger code and data size. 9022 9023 Previous Release: 9024 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9025 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9026 Current Release: 9027 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9028 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9029 90302) iASL Compiler/Disassembler and Tools: 9031 9032ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 9033operation region keyword. ACPICA BZ 771, 772. Lin Ming. 9034 9035ACPI 4.0: iASL - implemented compile-time validation support for all new 9036predefined names and control methods (31 total). ACPICA BZ 769. 9037 9038---------------------------------------- 903921 May 2009. Summary of changes for version 20090521: 9040 90411) ACPI CA Core Subsystem: 9042 9043Disabled the preservation of the SCI enable bit in the PM1 control 9044register. 9045The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 9046to 9047be 9048a "preserved" bit - "OSPM always preserves this bit position", section 90494.7.3.2.1. However, some machines fail if this bit is in fact preserved 9050because the bit needs to be explicitly set by the OS as a workaround. No 9051machines fail if the bit is not preserved. Therefore, ACPICA no longer 9052attempts to preserve this bit. 9053 9054Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 9055incorrectly formed _PRT package could cause a fault. Added validation to 9056ensure that each package element is actually a sub-package. 9057 9058Implemented a new interface to install or override a single control 9059method, 9060AcpiInstallMethod. This interface is useful when debugging in order to 9061repair 9062an existing method or to install a missing method without having to 9063override 9064the entire ACPI table. See the ACPICA Programmer Reference for use and 9065examples. Lin Ming, Bob Moore. 9066 9067Fixed several reference count issues with the DdbHandle object that is 9068created from a Load or LoadTable operator. Prevent premature deletion of 9069the 9070object. Also, mark the object as invalid once the table has been 9071unloaded. 9072This is needed because the handle itself may not be deleted after the 9073table 9074unload, depending on whether it has been stored in a named object by the 9075caller. Lin Ming. 9076 9077Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 9078mutexes of the same sync level are acquired but then not released in 9079strict 9080opposite order, the internally maintained Current Sync Level becomes 9081confused 9082and can cause subsequent execution errors. ACPICA BZ 471. 9083 9084Changed the allowable release order for ASL mutex objects. The ACPI 4.0 9085specification has been changed to make the SyncLevel for mutex objects 9086more 9087useful. When releasing a mutex, the SyncLevel of the mutex must now be 9088the 9089same as the current sync level. This makes more sense than the previous 9090rule 9091(SyncLevel less than or equal). This change updates the code to match the 9092specification. 9093 9094Fixed a problem with the local version of the AcpiOsPurgeCache function. 9095The 9096(local) cache must be locked during all cache object deletions. Andrew 9097Baumann. 9098 9099Updated the Load operator to use operation region interfaces. This 9100replaces 9101direct memory mapping with region access calls. Now, all region accesses 9102go 9103through the installed region handler as they should. 9104 9105Simplified and optimized the NsGetNextNode function. Reduced parameter 9106count 9107and reduced code for this frequently used function. 9108 9109Example Code and Data Size: These are the sizes for the OS-independent 9110acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9111debug version of the code includes the debug output trace mechanism and 9112has a 9113much larger code and data size. 9114 9115 Previous Release: 9116 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9117 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9118 Current Release: 9119 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9120 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9121 91222) iASL Compiler/Disassembler and Tools: 9123 9124Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 9125problems 9126with sub-table disassembly and handling invalid sub-tables. Attempt 9127recovery 9128after an invalid sub-table ID. 9129 9130---------------------------------------- 913122 April 2009. Summary of changes for version 20090422: 9132 91331) ACPI CA Core Subsystem: 9134 9135Fixed a compatibility issue with the recently released I/O port 9136protection 9137mechanism. For windows compatibility, 1) On a port protection violation, 9138simply ignore the request and do not return an exception (allow the 9139control 9140method to continue execution.) 2) If only part of the request overlaps a 9141protected port, read/write the individual ports that are not protected. 9142Linux 9143BZ 13036. Lin Ming 9144 9145Enhanced the execution of the ASL/AML BreakPoint operator so that it 9146actually 9147breaks into the AML debugger if the debugger is present. This matches the 9148ACPI-defined behavior. 9149 9150Fixed several possible warnings related to the use of the configurable 9151ACPI_THREAD_ID. This type can now be configured as either an integer or a 9152pointer with no warnings. Also fixes several warnings in printf-like 9153statements for the 64-bit build when the type is configured as a pointer. 9154ACPICA BZ 766, 767. 9155 9156Fixed a number of possible warnings when compiling with gcc 4+ (depending 9157on 9158warning options.) Examples include printf formats, aliasing, unused 9159globals, 9160missing prototypes, missing switch default statements, use of non-ANSI 9161library functions, use of non-ANSI constructs. See generate/unix/Makefile 9162for 9163a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 9164 9165Example Code and Data Size: These are the sizes for the OS-independent 9166acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9167debug version of the code includes the debug output trace mechanism and 9168has a 9169much larger code and data size. 9170 9171 Previous Release: 9172 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9173 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9174 Current Release: 9175 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9176 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9177 91782) iASL Compiler/Disassembler and Tools: 9179 9180iASL: Fixed a generation warning from Bison 2.3 and fixed several 9181warnings 9182on 9183the 64-bit build. 9184 9185iASL: Fixed a problem where the Unix/Linux versions of the compiler could 9186not 9187correctly digest Windows/DOS formatted files (with CR/LF). 9188 9189iASL: Added a new option for "quiet mode" (-va) that produces only the 9190compilation summary, not individual errors and warnings. Useful for large 9191batch compilations. 9192 9193AcpiExec: Implemented a new option (-z) to enable a forced 9194semaphore/mutex 9195timeout that can be used to detect hang conditions during execution of 9196AML 9197code (includes both internal semaphores and AML-defined mutexes and 9198events.) 9199 9200Added new makefiles for the generation of acpica in a generic unix-like 9201environment. These makefiles are intended to generate the acpica tools 9202and 9203utilities from the original acpica git source tree structure. 9204 9205Test Suites: Updated and cleaned up the documentation files. Updated the 9206copyrights to 2009, affecting all source files. Use the new version of 9207iASL 9208with quiet mode. Increased the number of available semaphores in the 9209Windows 9210OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 9211added 9212an alternate implementation of the semaphore timeout to allow aslts to 9213execute fully on Cygwin. 9214 9215---------------------------------------- 921620 March 2009. Summary of changes for version 20090320: 9217 92181) ACPI CA Core Subsystem: 9219 9220Fixed a possible race condition between AcpiWalkNamespace and dynamic 9221table 9222unloads. Added a reader/writer locking mechanism to allow multiple 9223concurrent 9224namespace walks (readers), but block a dynamic table unload until it can 9225gain 9226exclusive write access to the namespace. This fixes a problem where a 9227table 9228unload could (possibly catastrophically) delete the portion of the 9229namespace 9230that is currently being examined by a walk. Adds a new file, utlock.c, 9231that 9232implements the reader/writer lock mechanism. ACPICA BZ 749. 9233 9234Fixed a regression introduced in version 20090220 where a change to the 9235FADT 9236handling could cause the ACPICA subsystem to access non-existent I/O 9237ports. 9238 9239Modified the handling of FADT register and table (FACS/DSDT) addresses. 9240The 9241FADT can contain both 32-bit and 64-bit versions of these addresses. 9242Previously, the 64-bit versions were favored, meaning that if both 32 and 924364 9244versions were valid, but not equal, the 64-bit version was used. This was 9245found to cause some machines to fail. Now, in this case, the 32-bit 9246version 9247is used instead. This now matches the Windows behavior. 9248 9249Implemented a new mechanism to protect certain I/O ports. Provides 9250Microsoft 9251compatibility and protects the standard PC I/O ports from access via AML 9252code. Adds a new file, hwvalid.c 9253 9254Fixed a possible extraneous warning message from the FADT support. The 9255message warns of a 32/64 length mismatch between the legacy and GAS 9256definitions for a register. 9257 9258Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 9259is 9260made obsolete by the port protection mechanism above. It was previously 9261used 9262to validate the entire address range of an operation region, which could 9263be 9264incorrect if the range included illegal ports, but fields within the 9265operation region did not actually access those ports. Validation is now 9266performed on a per-field basis instead of the entire region. 9267 9268Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9269Ignored bits must be "preserved" according to the ACPI spec. Usually, 9270this 9271means a read/modify/write when writing to the register. However, for 9272status 9273registers, writing a one means clear the event. Writing a zero means 9274preserve 9275the event (do not clear.) This behavior is clarified in the ACPI 4.0 9276spec, 9277and the ACPICA code now simply always writes a zero to the ignored bit. 9278 9279Modified the handling of ignored bits for the PM1 A/B Control Registers. 9280As 9281per the ACPI specification, for the control registers, preserve 9282(read/modify/write) all bits that are defined as either reserved or 9283ignored. 9284 9285Updated the handling of write-only bits in the PM1 A/B Control Registers. 9286When reading the register, zero the write-only bits as per the ACPI spec. 9287ACPICA BZ 443. Lin Ming. 9288 9289Removed "Linux" from the list of supported _OSI strings. Linux no longer 9290wants to reply true to this request. The Windows strings are the only 9291paths 9292through the AML that are tested and known to work properly. 9293 9294 Previous Release: 9295 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9296 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9297 Current Release: 9298 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9299 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9300 93012) iASL Compiler/Disassembler and Tools: 9302 9303Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9304and 9305aetables.c 9306 9307---------------------------------------- 930820 February 2009. Summary of changes for version 20090220: 9309 93101) ACPI CA Core Subsystem: 9311 9312Optimized the ACPI register locking. Removed locking for reads from the 9313ACPI 9314bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9315is 9316not required when reading the single-bit registers. The 9317AcpiGetRegisterUnlocked function is no longer needed and has been 9318removed. 9319This will improve performance for reads on these registers. ACPICA BZ 9320760. 9321 9322Fixed the parameter validation for AcpiRead/Write. Now return 9323AE_BAD_PARAMETER if the input register pointer is null, and 9324AE_BAD_ADDRESS 9325if 9326the register has an address of zero. Previously, these cases simply 9327returned 9328AE_OK. For optional registers such as PM1B status/enable/control, the 9329caller 9330should check for a valid register address before calling. ACPICA BZ 748. 9331 9332Renamed the external ACPI bit register access functions. Renamed 9333AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9334functions. The new names are AcpiReadBitRegister and 9335AcpiWriteBitRegister. 9336Also, restructured the code for these functions by simplifying the code 9337path 9338and condensing duplicate code to reduce code size. 9339 9340Added new functions to transparently handle the possibly split PM1 A/B 9341registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9342functions 9343now handle the split registers for PM1 Status, Enable, and Control. 9344ACPICA 9345BZ 9346746. 9347 9348Added a function to handle the PM1 control registers, 9349AcpiHwWritePm1Control. 9350This function writes both of the PM1 control registers (A/B). These 9351registers 9352are different than the PM1 A/B status and enable registers in that 9353different 9354values can be written to the A/B registers. Most notably, the SLP_TYP 9355bits 9356can be different, as per the values returned from the _Sx predefined 9357methods. 9358 9359Removed an extra register write within AcpiHwClearAcpiStatus. This 9360function 9361was writing an optional PM1B status register twice. The existing call to 9362the 9363low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9364A/B 9365register. ACPICA BZ 751. 9366 9367Split out the PM1 Status registers from the FADT. Added new globals for 9368these 9369registers (A/B), similar to the way the PM1 Enable registers are handled. 9370Instead of overloading the FADT Event Register blocks. This makes the 9371code 9372clearer and less prone to error. 9373 9374Fixed the warning message for when the platform contains too many ACPI 9375tables 9376for the default size of the global root table data structure. The 9377calculation 9378for the truncation value was incorrect. 9379 9380Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9381obsolete macro, since it is now a simple reference to ->common.type. 9382There 9383were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9384 9385Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9386TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9387simply SLEEP_TYPE. ACPICA BZ 754. 9388 9389Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9390function is only needed on 64-bit host operating systems and is thus not 9391included for 32-bit hosts. 9392 9393Debug output: print the input and result for invocations of the _OSI 9394reserved 9395control method via the ACPI_LV_INFO debug level. Also, reduced some of 9396the 9397verbosity of this debug level. Len Brown. 9398 9399Example Code and Data Size: These are the sizes for the OS-independent 9400acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9401debug version of the code includes the debug output trace mechanism and 9402has a 9403much larger code and data size. 9404 9405 Previous Release: 9406 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9407 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9408 Current Release: 9409 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9410 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9411 94122) iASL Compiler/Disassembler and Tools: 9413 9414Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 9415various legal performance profiles. 9416 9417---------------------------------------- 941823 January 2009. Summary of changes for version 20090123: 9419 94201) ACPI CA Core Subsystem: 9421 9422Added the 2009 copyright to all module headers and signons. This affects 9423virtually every file in the ACPICA core subsystem, the iASL compiler, and 9424the tools/utilities. 9425 9426Implemented a change to allow the host to override any ACPI table, 9427including 9428dynamically loaded tables. Previously, only the DSDT could be replaced by 9429the 9430host. With this change, the AcpiOsTableOverride interface is called for 9431each 9432table found in the RSDT/XSDT during ACPICA initialization, and also 9433whenever 9434a table is dynamically loaded via the AML Load operator. 9435 9436Updated FADT flag definitions, especially the Boot Architecture flags. 9437 9438Debugger: For the Find command, automatically pad the input ACPI name 9439with 9440underscores if the name is shorter than 4 characters. This enables a 9441match 9442with the actual namespace entry which is itself padded with underscores. 9443 9444Example Code and Data Size: These are the sizes for the OS-independent 9445acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9446debug version of the code includes the debug output trace mechanism and 9447has a 9448much larger code and data size. 9449 9450 Previous Release: 9451 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9452 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9453 Current Release: 9454 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9455 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9456 94572) iASL Compiler/Disassembler and Tools: 9458 9459Fix build error under Bison-2.4. 9460 9461Disassembler: Enhanced FADT support. Added decoding of the Boot 9462Architecture 9463flags. Now decode all flags, regardless of the FADT version. Flag output 9464includes the FADT version which first defined each flag. 9465 9466The iASL -g option now dumps the RSDT to a file (in addition to the FADT 9467and 9468DSDT). Windows only. 9469 9470---------------------------------------- 947104 December 2008. Summary of changes for version 20081204: 9472 94731) ACPI CA Core Subsystem: 9474 9475The ACPICA Programmer Reference has been completely updated and revamped 9476for 9477this release. This includes updates to the external interfaces, OSL 9478interfaces, the overview sections, and the debugger reference. 9479 9480Several new ACPICA interfaces have been implemented and documented in the 9481programmer reference: 9482AcpiReset - Writes the reset value to the FADT-defined reset register. 9483AcpiDisableAllGpes - Disable all available GPEs. 9484AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 9485AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 9486AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 9487AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 9488AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 9489 9490Most of the public ACPI hardware-related interfaces have been moved to a 9491new 9492file, components/hardware/hwxface.c 9493 9494Enhanced the FADT parsing and low-level ACPI register access: The ACPI 9495register lengths within the FADT are now used, and the low level ACPI 9496register access no longer hardcodes the ACPI register lengths. Given that 9497there may be some risk in actually trusting the FADT register lengths, a 9498run- 9499time option was added to fall back to the default hardcoded lengths if 9500the 9501FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 9502option is set to true for now, and a warning is issued if a suspicious 9503FADT 9504register length is overridden with the default value. 9505 9506Fixed a reference count issue in NsRepairObject. This problem was 9507introduced 9508in version 20081031 as part of a fix to repair Buffer objects within 9509Packages. Lin Ming. 9510 9511Added semaphore support to the Linux/Unix application OS-services layer 9512(OSL). ACPICA BZ 448. Lin Ming. 9513 9514Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 9515will 9516be implemented in the OSL, or will binary semaphores be used instead. 9517 9518Example Code and Data Size: These are the sizes for the OS-independent 9519acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9520debug version of the code includes the debug output trace mechanism and 9521has a 9522much larger code and data size. 9523 9524 Previous Release: 9525 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9526 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9527 Current Release: 9528 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9529 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9530 95312) iASL Compiler/Disassembler and Tools: 9532 9533iASL: Completed the '-e' option to include additional ACPI tables in 9534order 9535to 9536aid with disassembly and External statement generation. ACPICA BZ 742. 9537Lin 9538Ming. 9539 9540iASL: Removed the "named object in while loop" error. The compiler cannot 9541determine how many times a loop will execute. ACPICA BZ 730. 9542 9543Disassembler: Implemented support for FADT revision 2 (MS extension). 9544ACPICA 9545BZ 743. 9546 9547Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 9548MCFG). 9549 9550---------------------------------------- 955131 October 2008. Summary of changes for version 20081031: 9552 95531) ACPI CA Core Subsystem: 9554 9555Restructured the ACPICA header files into public/private. acpi.h now 9556includes 9557only the "public" acpica headers. All other acpica headers are "private" 9558and 9559should not be included by acpica users. One new file, accommon.h is used 9560to 9561include the commonly used private headers for acpica code generation. 9562Future 9563plans include moving all private headers to a new subdirectory. 9564 9565Implemented an automatic Buffer->String return value conversion for 9566predefined ACPI methods. For these methods (such as _BIF), added 9567automatic 9568conversion for return objects that are required to be a String, but a 9569Buffer 9570was found instead. This can happen when reading string battery data from 9571an 9572operation region, because it used to be difficult to convert the data 9573from 9574buffer to string from within the ASL. Ensures that the host OS is 9575provided 9576with a valid null-terminated string. Linux BZ 11822. 9577 9578Updated the FACS waking vector interfaces. Split 9579AcpiSetFirmwareWakingVector 9580into two: one for the 32-bit vector, another for the 64-bit vector. This 9581is 9582required because the host OS must setup the wake much differently for 9583each 9584vector (real vs. protected mode, etc.) and the interface itself should 9585not 9586be 9587deciding which vector to use. Also, eliminated the 9588GetFirmwareWakingVector 9589interface, as it served no purpose (only the firmware reads the vector, 9590OS 9591only writes the vector.) ACPICA BZ 731. 9592 9593Implemented a mechanism to escape infinite AML While() loops. Added a 9594loop 9595counter to force exit from AML While loops if the count becomes too 9596large. 9597This can occur in poorly written AML when the hardware does not respond 9598within a while loop and the loop does not implement a timeout. The 9599maximum 9600loop count is configurable. A new exception code is returned when a loop 9601is 9602broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 9603 9604Optimized the execution of AML While loops. Previously, a control state 9605object was allocated and freed for each execution of the loop. The 9606optimization is to simply reuse the control state for each iteration. 9607This 9608speeds up the raw loop execution time by about 5%. 9609 9610Enhanced the implicit return mechanism. For Windows compatibility, return 9611an 9612implicit integer of value zero for methods that contain no executable 9613code. 9614Such methods are seen in the field as stubs (presumably), and can cause 9615drivers to fail if they expect a return value. Lin Ming. 9616 9617Allow multiple backslashes as root prefixes in namepaths. In a fully 9618qualified namepath, allow multiple backslash prefixes. This can happen 9619(and 9620is seen in the field) because of the use of a double-backslash in strings 9621(since backslash is the escape character) causing confusion. ACPICA BZ 9622739 9623Lin Ming. 9624 9625Emit a warning if two different FACS or DSDT tables are discovered in the 9626FADT. Checks if there are two valid but different addresses for the FACS 9627and 9628DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 9629 9630Consolidated the method argument count validation code. Merged the code 9631that 9632validates control method argument counts into the predefined validation 9633module. Eliminates possible multiple warnings for incorrect argument 9634counts. 9635 9636Implemented ACPICA example code. Includes code for ACPICA initialization, 9637handler installation, and calling a control method. Available at 9638source/tools/examples. 9639 9640Added a global pointer for FACS table to simplify internal FACS access. 9641Use 9642the global pointer instead of using AcpiGetTableByIndex for each FACS 9643access. 9644This simplifies the code for the Global Lock and the Firmware Waking 9645Vector(s). 9646 9647Example Code and Data Size: These are the sizes for the OS-independent 9648acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9649debug version of the code includes the debug output trace mechanism and 9650has a 9651much larger code and data size. 9652 9653 Previous Release: 9654 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9655 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9656 Current Release: 9657 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9658 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9659 96602) iASL Compiler/Disassembler and Tools: 9661 9662iASL: Improved disassembly of external method calls. Added the -e option 9663to 9664allow the inclusion of additional ACPI tables to help with the 9665disassembly 9666of 9667method invocations and the generation of external declarations during the 9668disassembly. Certain external method invocations cannot be disassembled 9669properly without the actual declaration of the method. Use the -e option 9670to 9671include the table where the external method(s) are actually declared. 9672Most 9673useful for disassembling SSDTs that make method calls back to the master 9674DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 9675-d 9676-e dsdt.aml ssdt1.aml 9677 9678iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 9679problem where the use of an alias within a namepath would result in a not 9680found error or cause the compiler to fault. Also now allows forward 9681references from the Alias operator itself. ACPICA BZ 738. 9682 9683---------------------------------------- 968426 September 2008. Summary of changes for version 20080926: 9685 96861) ACPI CA Core Subsystem: 9687 9688Designed and implemented a mechanism to validate predefined ACPI methods 9689and 9690objects. This code validates the predefined ACPI objects (objects whose 9691names 9692start with underscore) that appear in the namespace, at the time they are 9693evaluated. The argument count and the type of the returned object are 9694validated against the ACPI specification. The purpose of this validation 9695is 9696to detect problems with the BIOS-implemented predefined ACPI objects 9697before 9698the results are returned to the ACPI-related drivers. Future enhancements 9699may 9700include actual repair of incorrect return objects where possible. Two new 9701files are nspredef.c and acpredef.h. 9702 9703Fixed a fault in the AML parser if a memory allocation fails during the 9704Op 9705completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 9706 9707Fixed an issue with implicit return compatibility. This change improves 9708the 9709implicit return mechanism to be more compatible with the MS interpreter. 9710Lin 9711Ming, ACPICA BZ 349. 9712 9713Implemented support for zero-length buffer-to-string conversions. Allow 9714zero 9715length strings during interpreter buffer-to-string conversions. For 9716example, 9717during the ToDecimalString and ToHexString operators, as well as implicit 9718conversions. Fiodor Suietov, ACPICA BZ 585. 9719 9720Fixed two possible memory leaks in the error exit paths of 9721AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 9722are 9723similar in that they use a stack of state objects in order to eliminate 9724recursion. The stack must be fully unwound and deallocated if an error 9725occurs. Lin Ming. ACPICA BZ 383. 9726 9727Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 9728global 9729ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 9730Moore ACPICA BZ 442. 9731 9732Removed the obsolete version number in module headers. Removed the 9733"$Revision" number that appeared in each module header. This version 9734number 9735was useful under SourceSafe and CVS, but has no meaning under git. It is 9736not 9737only incorrect, it could also be misleading. 9738 9739Example Code and Data Size: These are the sizes for the OS-independent 9740acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9741debug version of the code includes the debug output trace mechanism and 9742has a 9743much larger code and data size. 9744 9745 Previous Release: 9746 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9747 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9748 Current Release: 9749 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9750 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9751 9752---------------------------------------- 975329 August 2008. Summary of changes for version 20080829: 9754 97551) ACPI CA Core Subsystem: 9756 9757Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 9758Reference. Changes include the elimination of cheating on the Object 9759field 9760for the DdbHandle subtype, addition of a reference class field to 9761differentiate the various reference types (instead of an AML opcode), and 9762the 9763cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 9764 9765Reduce an error to a warning for an incorrect method argument count. 9766Previously aborted with an error if too few arguments were passed to a 9767control method via the external ACPICA interface. Now issue a warning 9768instead 9769and continue. Handles the case where the method inadvertently declares 9770too 9771many arguments, but does not actually use the extra ones. Applies mainly 9772to 9773the predefined methods. Lin Ming. Linux BZ 11032. 9774 9775Disallow the evaluation of named object types with no intrinsic value. 9776Return 9777AE_TYPE for objects that have no value and therefore evaluation is 9778undefined: 9779Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 9780of 9781these types were allowed, but an exception would be generated at some 9782point 9783during the evaluation. Now, the error is generated up front. 9784 9785Fixed a possible memory leak in the AcpiNsGetExternalPathname function 9786(nsnames.c). Fixes a leak in the error exit path. 9787 9788Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 9789debug 9790levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 9791ACPI_EXCEPTION 9792interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 9793ACPI_LV_EVENTS. 9794 9795Removed obsolete and/or unused exception codes from the acexcep.h header. 9796There is the possibility that certain device drivers may be affected if 9797they 9798use any of these exceptions. 9799 9800The ACPICA documentation has been added to the public git source tree, 9801under 9802acpica/documents. Included are the ACPICA programmer reference, the iASL 9803compiler reference, and the changes.txt release logfile. 9804 9805Example Code and Data Size: These are the sizes for the OS-independent 9806acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9807debug version of the code includes the debug output trace mechanism and 9808has a 9809much larger code and data size. 9810 9811 Previous Release: 9812 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9813 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9814 Current Release: 9815 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9816 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9817 98182) iASL Compiler/Disassembler and Tools: 9819 9820Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 9821defines _SCP with 3 arguments. Previous versions defined it with only 1 9822argument. iASL now allows both definitions. 9823 9824iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 9825zero- 9826length subtables when disassembling ACPI tables. Also fixed a couple of 9827errors where a full 16-bit table type field was not extracted from the 9828input 9829properly. 9830 9831acpisrc: Improve comment counting mechanism for generating source code 9832statistics. Count first and last lines of multi-line comments as 9833whitespace, 9834not comment lines. Handle Linux legal header in addition to standard 9835acpica 9836header. 9837 9838---------------------------------------- 9839 984029 July 2008. Summary of changes for version 20080729: 9841 98421) ACPI CA Core Subsystem: 9843 9844Fix a possible deadlock in the GPE dispatch. Remove call to 9845AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 9846attempt 9847to acquire the GPE lock but can deadlock since the GPE lock is already 9848held 9849at dispatch time. This code was introduced in version 20060831 as a 9850response 9851to Linux BZ 6881 and has since been removed from Linux. 9852 9853Add a function to dereference returned reference objects. Examines the 9854return 9855object from a call to AcpiEvaluateObject. Any Index or RefOf references 9856are 9857automatically dereferenced in an attempt to return something useful 9858(these 9859reference types cannot be converted into an external ACPI_OBJECT.) 9860Provides 9861MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 9862 9863x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 9864subtables for the MADT and one new subtable for the SRAT. Includes 9865disassembler and AcpiSrc support. Data from the Intel 64 Architecture 9866x2APIC 9867Specification, June 2008. 9868 9869Additional error checking for pathname utilities. Add error check after 9870all 9871calls to AcpiNsGetPathnameLength. Add status return from 9872AcpiNsBuildExternalPath and check after all calls. Add parameter 9873validation 9874to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 9875 9876Return status from the global init function AcpiUtGlobalInitialize. This 9877is 9878used by both the kernel subsystem and the utilities such as iASL 9879compiler. 9880The function could possibly fail when the caches are initialized. Yang 9881Yi. 9882 9883Add a function to decode reference object types to strings. Created for 9884improved error messages. 9885 9886Improve object conversion error messages. Better error messages during 9887object 9888conversion from internal to the external ACPI_OBJECT. Used for external 9889calls 9890to AcpiEvaluateObject. 9891 9892Example Code and Data Size: These are the sizes for the OS-independent 9893acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9894debug version of the code includes the debug output trace mechanism and 9895has a 9896much larger code and data size. 9897 9898 Previous Release: 9899 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9900 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9901 Current Release: 9902 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9903 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9904 99052) iASL Compiler/Disassembler and Tools: 9906 9907Debugger: fix a possible hang when evaluating non-methods. Fixes a 9908problem 9909introduced in version 20080701. If the object being evaluated (via 9910execute 9911command) is not a method, the debugger can hang while trying to obtain 9912non- 9913existent parameters. 9914 9915iASL: relax error for using reserved "_T_x" identifiers. These names can 9916appear in a disassembled ASL file if they were emitted by the original 9917compiler. Instead of issuing an error or warning and forcing the user to 9918manually change these names, issue a remark instead. 9919 9920iASL: error if named object created in while loop. Emit an error if any 9921named 9922object is created within a While loop. If allowed, this code will 9923generate 9924a 9925run-time error on the second iteration of the loop when an attempt is 9926made 9927to 9928create the same named object twice. ACPICA bugzilla 730. 9929 9930iASL: Support absolute pathnames for include files. Add support for 9931absolute 9932pathnames within the Include operator. previously, only relative 9933pathnames 9934were supported. 9935 9936iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 9937Descriptor. 9938The ACPI spec requires one interrupt minimum. BZ 423 9939 9940iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 9941Handles the case for the Interrupt Resource Descriptor where 9942the ResourceSource argument is omitted but ResourceSourceIndex 9943is present. Now leave room for the Index. BZ 426 9944 9945iASL: Prevent error message if CondRefOf target does not exist. Fixes 9946cases 9947where an error message is emitted if the target does not exist. BZ 516 9948 9949iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 9950(get ACPI tables on Windows). This was apparently broken in version 995120070919. 9952 9953AcpiXtract: Handle EOF while extracting data. Correctly handle the case 9954where 9955the EOF happens immediately after the last table in the input file. Print 9956completion message. Previously, no message was displayed in this case. 9957 9958---------------------------------------- 995901 July 2008. Summary of changes for version 20080701: 9960 99610) Git source tree / acpica.org 9962 9963Fixed a problem where a git-clone from http would not transfer the entire 9964source tree. 9965 99661) ACPI CA Core Subsystem: 9967 9968Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 9969enable bit. Now performs a read-change-write of the enable register 9970instead 9971of simply writing out the cached enable mask. This will prevent 9972inadvertent 9973enabling of GPEs if a rogue GPE is received during initialization (before 9974GPE 9975handlers are installed.) 9976 9977Implemented a copy for dynamically loaded tables. Previously, dynamically 9978loaded tables were simply mapped - but on some machines this memory is 9979corrupted after suspend. Now copy the table to a local buffer. For the 9980OpRegion case, added checksum verify. Use the table length from the table 9981header, not the region length. For the Buffer case, use the table length 9982also. Dennis Noordsij, Bob Moore. BZ 10734 9983 9984Fixed a problem where the same ACPI table could not be dynamically loaded 9985and 9986unloaded more than once. Without this change, a table cannot be loaded 9987again 9988once it has been loaded/unloaded one time. The current mechanism does not 9989unregister a table upon an unload. During a load, if the same table is 9990found, 9991this no longer returns an exception. BZ 722 9992 9993Fixed a problem where the wrong descriptor length was calculated for the 9994EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 9995EndTag 9996are calculated as 12 bytes long, but the actual length in the internal 9997descriptor is 16 because of the round-up to 8 on the 64-bit build. 9998Reported 9999by Linn Crosetto. BZ 728 10000 10001Fixed a possible memory leak in the Unload operator. The DdbHandle 10002returned 10003by Load() did not have its reference count decremented during unload, 10004leading 10005to a memory leak. Lin Ming. BZ 727 10006 10007Fixed a possible memory leak when deleting thermal/processor objects. Any 10008associated notify handlers (and objects) were not being deleted. Fiodor 10009Suietov. BZ 506 10010 10011Fixed the ordering of the ASCII names in the global mutex table to match 10012the 10013actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 10014only. 10015Vegard Nossum. BZ 726 10016 10017Enhanced the AcpiGetObjectInfo interface to return the number of required 10018arguments if the object is a control method. Added this call to the 10019debugger 10020so the proper number of default arguments are passed to a method. This 10021prevents a warning when executing methods from AcpiExec. 10022 10023Added a check for an invalid handle in AcpiGetObjectInfo. Return 10024AE_BAD_PARAMETER if input handle is invalid. BZ 474 10025 10026Fixed an extraneous warning from exconfig.c on the 64-bit build. 10027 10028Example Code and Data Size: These are the sizes for the OS-independent 10029acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10030debug version of the code includes the debug output trace mechanism and 10031has a 10032much larger code and data size. 10033 10034 Previous Release: 10035 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10036 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10037 Current Release: 10038 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10039 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10040 100412) iASL Compiler/Disassembler and Tools: 10042 10043iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 10044resource descriptor names. 10045 10046iASL: Detect invalid ASCII characters in input (windows version). Removed 10047the 10048"-CF" flag from the flex compile, enables correct detection of non-ASCII 10049characters in the input. BZ 441 10050 10051iASL: Eliminate warning when result of LoadTable is not used. Eliminate 10052the 10053"result of operation not used" warning when the DDB handle returned from 10054LoadTable is not used. The warning is not needed. BZ 590 10055 10056AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 10057method 10058to 10059pass address of table to the AML. Added option to disable OpRegion 10060simulation 10061to allow creation of an OpRegion with a real address that was passed to 10062_CFG. 10063All of this allows testing of the Load and Unload operators from 10064AcpiExec. 10065 10066Debugger: update tables command for unloaded tables. Handle unloaded 10067tables 10068and use the standard table header output routine. 10069 10070---------------------------------------- 1007109 June 2008. Summary of changes for version 20080609: 10072 100731) ACPI CA Core Subsystem: 10074 10075Implemented a workaround for reversed _PRT entries. A significant number 10076of 10077BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 10078change dynamically detects and repairs this problem. Provides 10079compatibility 10080with MS ACPI. BZ 6859 10081 10082Simplified the internal ACPI hardware interfaces to eliminate the locking 10083flag parameter from Register Read/Write. Added a new external interface, 10084AcpiGetRegisterUnlocked. 10085 10086Fixed a problem where the invocation of a GPE control method could hang. 10087This 10088was a regression introduced in 20080514. The new method argument count 10089validation mechanism can enter an infinite loop when a GPE method is 10090dispatched. Problem fixed by removing the obsolete code that passed GPE 10091block 10092information to the notify handler via the control method parameter 10093pointer. 10094 10095Fixed a problem where the _SST execution status was incorrectly returned 10096to 10097the caller of AcpiEnterSleepStatePrep. This was a regression introduced 10098in 1009920080514. _SST is optional and a NOT_FOUND exception should never be 10100returned. BZ 716 10101 10102Fixed a problem where a deleted object could be accessed from within the 10103AML 10104parser. This was a regression introduced in version 20080123 as a fix for 10105the 10106Unload operator. Lin Ming. BZ 10669 10107 10108Cleaned up the debug operand dump mechanism. Eliminated unnecessary 10109operands 10110and eliminated the use of a negative index in a loop. Operands are now 10111displayed in the correct order, not backwards. This also fixes a 10112regression 10113introduced in 20080514 on 64-bit systems where the elimination of 10114ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 10115715 10116 10117Fixed a possible memory leak in EvPciConfigRegionSetup where the error 10118exit 10119path did not delete a locally allocated structure. 10120 10121Updated definitions for the DMAR and SRAT tables to synchronize with the 10122current specifications. Includes disassembler support. 10123 10124Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 10125loop termination value was used. Loop terminated on iteration early, 10126missing 10127one mutex. Linn Crosetto 10128 10129Example Code and Data Size: These are the sizes for the OS-independent 10130acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10131debug version of the code includes the debug output trace mechanism and 10132has a 10133much larger code and data size. 10134 10135 Previous Release: 10136 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10137 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10138 Current Release: 10139 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10140 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10141 101422) iASL Compiler/Disassembler and Tools: 10143 10144Disassembler: Implemented support for EisaId() within _CID objects. Now 10145disassemble integer _CID objects back to EisaId invocations, including 10146multiple integers within _CID packages. Includes single-step support for 10147debugger also. 10148 10149Disassembler: Added support for DMAR and SRAT table definition changes. 10150 10151---------------------------------------- 1015214 May 2008. Summary of changes for version 20080514: 10153 101541) ACPI CA Core Subsystem: 10155 10156Fixed a problem where GPEs were enabled too early during the ACPICA 10157initialization. This could lead to "handler not installed" errors on some 10158machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 10159This 10160ensures that all operation regions and devices throughout the namespace 10161have 10162been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 10163 10164Implemented a change to the enter sleep code. Moved execution of the _GTS 10165method to just before setting sleep enable bit. The execution was moved 10166from 10167AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 10168immediately before the SLP_EN bit is set, as per the ACPI specification. 10169Luming Yu, BZ 1653. 10170 10171Implemented a fix to disable unknown GPEs (2nd version). Now always 10172disable 10173the GPE, even if ACPICA thinks that that it is already disabled. It is 10174possible that the AML or some other code has enabled the GPE unbeknownst 10175to 10176the ACPICA code. 10177 10178Fixed a problem with the Field operator where zero-length fields would 10179return 10180an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 10181ASL 10182field declarations in Field(), BankField(), and IndexField(). BZ 10606. 10183 10184Implemented a fix for the Load operator, now load the table at the 10185namespace 10186root. This reverts a change introduced in version 20071019. The table is 10187now 10188loaded at the namespace root even though this goes against the ACPI 10189specification. This provides compatibility with other ACPI 10190implementations. 10191The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 10192Ming. 10193 10194Fixed a problem where ACPICA would not Load() tables with unusual 10195signatures. 10196Now ignore ACPI table signature for Load() operator. Only "SSDT" is 10197acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 10198Therefore, signature validation is worthless. Apparently MS ACPI accepts 10199such 10200signatures, ACPICA must be compatible. BZ 10454. 10201 10202Fixed a possible negative array index in AcpiUtValidateException. Added 10203NULL 10204fields to the exception string arrays to eliminate a -1 subtraction on 10205the 10206SubStatus field. 10207 10208Updated the debug tracking macros to reduce overall code and data size. 10209Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 10210instead of pointers to static strings. Jan Beulich and Bob Moore. 10211 10212Implemented argument count checking in control method invocation via 10213AcpiEvaluateObject. Now emit an error if too few arguments, warning if 10214too 10215many. This applies only to extern programmatic control method execution, 10216not 10217method-to-method calls within the AML. Lin Ming. 10218 10219Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 10220no 10221longer needed, especially with the removal of 16-bit support. It was 10222replaced 10223mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 10224bit 10225on 1022632/64-bit platforms is required. 10227 10228Added the C const qualifier for appropriate string constants -- mostly 10229MODULE_NAME and printf format strings. Jan Beulich. 10230 10231Example Code and Data Size: These are the sizes for the OS-independent 10232acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10233debug version of the code includes the debug output trace mechanism and 10234has a 10235much larger code and data size. 10236 10237 Previous Release: 10238 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10239 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10240 Current Release: 10241 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10242 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10243 102442) iASL Compiler/Disassembler and Tools: 10245 10246Implemented ACPI table revision ID validation in the disassembler. Zero 10247is 10248always invalid. For DSDTs, the ID controls the interpreter integer width. 102491 10250means 32-bit and this is unusual. 2 or greater is 64-bit. 10251 10252---------------------------------------- 1025321 March 2008. Summary of changes for version 20080321: 10254 102551) ACPI CA Core Subsystem: 10256 10257Implemented an additional change to the GPE support in order to suppress 10258spurious or stray GPEs. The AcpiEvDisableGpe function will now 10259permanently 10260disable incoming GPEs that are neither enabled nor disabled -- meaning 10261that 10262the GPE is unknown to the system. This should prevent future interrupt 10263floods 10264from that GPE. BZ 6217 (Zhang Rui) 10265 10266Fixed a problem where NULL package elements were not returned to the 10267AcpiEvaluateObject interface correctly. The element was simply ignored 10268instead of returning a NULL ACPI_OBJECT package element, potentially 10269causing 10270a buffer overflow and/or confusing the caller who expected a fixed number 10271of 10272elements. BZ 10132 (Lin Ming, Bob Moore) 10273 10274Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10275Dword, 10276Qword), Field, BankField, and IndexField operators when invoked from 10277inside 10278an executing control method. In this case, these operators created 10279namespace 10280nodes that were incorrectly left marked as permanent nodes instead of 10281temporary nodes. This could cause a problem if there is race condition 10282between an exiting control method and a running namespace walk. (Reported 10283by 10284Linn Crosetto) 10285 10286Fixed a problem where the CreateField and CreateXXXField operators would 10287incorrectly allow duplicate names (the name of the field) with no 10288exception 10289generated. 10290 10291Implemented several changes for Notify handling. Added support for new 10292Notify 10293values (ACPI 2.0+) and improved the Notify debug output. Notify on 10294PowerResource objects is no longer allowed, as per the ACPI 10295specification. 10296(Bob Moore, Zhang Rui) 10297 10298All Reference Objects returned via the AcpiEvaluateObject interface are 10299now 10300marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10301for 10302NULL objects - either NULL package elements or unresolved named 10303references. 10304 10305Fixed a problem where an extraneous debug message was produced for 10306package 10307objects (when debugging enabled). The message "Package List length larger 10308than NumElements count" is now produced in the correct case, and is now 10309an 10310error message rather than a debug message. Added a debug message for the 10311opposite case, where NumElements is larger than the Package List (the 10312package 10313will be padded out with NULL elements as per the ACPI spec.) 10314 10315Implemented several improvements for the output of the ASL "Debug" object 10316to 10317clarify and keep all data for a given object on one output line. 10318 10319Fixed two size calculation issues with the variable-length Start 10320Dependent 10321resource descriptor. 10322 10323Example Code and Data Size: These are the sizes for the OS-independent 10324acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10325debug version of the code includes the debug output trace mechanism and 10326has 10327a much larger code and data size. 10328 10329 Previous Release: 10330 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10331 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10332 Current Release: 10333 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10334 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10335 103362) iASL Compiler/Disassembler and Tools: 10337 10338Fixed a problem with the use of the Switch operator where execution of 10339the 10340containing method by multiple concurrent threads could cause an 10341AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10342actual Switch opcode, it must be simulated with local named temporary 10343variables and if/else pairs. The solution chosen was to mark any method 10344that 10345uses Switch as Serialized, thus preventing multiple thread entries. BZ 10346469. 10347 10348---------------------------------------- 1034913 February 2008. Summary of changes for version 20080213: 10350 103511) ACPI CA Core Subsystem: 10352 10353Implemented another MS compatibility design change for GPE/Notify 10354handling. 10355GPEs are now cleared/enabled asynchronously to allow all pending notifies 10356to 10357complete first. It is expected that the OSL will queue the enable request 10358behind all pending notify requests (may require changes to the local host 10359OSL 10360in AcpiOsExecute). Alexey Starikovskiy. 10361 10362Fixed a problem where buffer and package objects passed as arguments to a 10363control method via the external AcpiEvaluateObject interface could cause 10364an 10365AE_AML_INTERNAL exception depending on the order and type of operators 10366executed by the target control method. 10367 10368Fixed a problem where resource descriptor size optimization could cause a 10369problem when a _CRS resource template is passed to a _SRS method. The 10370_SRS 10371resource template must use the same descriptors (with the same size) as 10372returned from _CRS. This change affects the following resource 10373descriptors: 10374IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 103759487) 10376 10377Fixed a problem where a CopyObject to RegionField, BankField, and 10378IndexField 10379objects did not perform an implicit conversion as it should. These types 10380must 10381retain their initial type permanently as per the ACPI specification. 10382However, 10383a CopyObject to all other object types should not perform an implicit 10384conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10385 10386Fixed a problem with the AcpiGetDevices interface where the mechanism to 10387match device CIDs did not examine the entire list of available CIDs, but 10388instead aborted on the first non-matching CID. Andrew Patterson. 10389 10390Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10391was 10392inadvertently changed to return a 16-bit value instead of a 32-bit value, 10393truncating the upper dword of a 64-bit value. This macro is only used to 10394display debug output, so no incorrect calculations were made. Also, 10395reimplemented the macro so that a 64-bit shift is not performed by 10396inefficient compilers. 10397 10398Added missing va_end statements that should correspond with each va_start 10399statement. 10400 10401Example Code and Data Size: These are the sizes for the OS-independent 10402acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10403debug version of the code includes the debug output trace mechanism and 10404has 10405a much larger code and data size. 10406 10407 Previous Release: 10408 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10409 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10410 Current Release: 10411 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10412 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10413 104142) iASL Compiler/Disassembler and Tools: 10415 10416Implemented full disassembler support for the following new ACPI tables: 10417BERT, EINJ, and ERST. Implemented partial disassembler support for the 10418complicated HEST table. These tables support the Windows Hardware Error 10419Architecture (WHEA). 10420 10421---------------------------------------- 1042223 January 2008. Summary of changes for version 20080123: 10423 104241) ACPI CA Core Subsystem: 10425 10426Added the 2008 copyright to all module headers and signons. This affects 10427virtually every file in the ACPICA core subsystem, the iASL compiler, and 10428the tools/utilities. 10429 10430Fixed a problem with the SizeOf operator when used with Package and 10431Buffer 10432objects. These objects have deferred execution for some arguments, and 10433the 10434execution is now completed before the SizeOf is executed. This problem 10435caused 10436unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 10437BZ 104389558 10439 10440Implemented an enhancement to the interpreter "slack mode". In the 10441absence 10442of 10443an explicit return or an implicitly returned object from the last 10444executed 10445opcode, a control method will now implicitly return an integer of value 0 10446for 10447Microsoft compatibility. (Lin Ming) BZ 392 10448 10449Fixed a problem with the Load operator where an exception was not 10450returned 10451in 10452the case where the table is already loaded. (Lin Ming) BZ 463 10453 10454Implemented support for the use of DDBHandles as an Indexed Reference, as 10455per 10456the ACPI spec. (Lin Ming) BZ 486 10457 10458Implemented support for UserTerm (Method invocation) for the Unload 10459operator 10460as per the ACPI spec. (Lin Ming) BZ 580 10461 10462Fixed a problem with the LoadTable operator where the OemId and 10463OemTableId 10464input strings could cause unexpected failures if they were shorter than 10465the 10466maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 10467 10468Implemented support for UserTerm (Method invocation) for the Unload 10469operator 10470as per the ACPI spec. (Lin Ming) BZ 580 10471 10472Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 10473HEST, 10474IBFT, UEFI, WDAT. Disassembler support is forthcoming. 10475 10476Example Code and Data Size: These are the sizes for the OS-independent 10477acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10478debug version of the code includes the debug output trace mechanism and 10479has 10480a much larger code and data size. 10481 10482 Previous Release: 10483 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10484 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10485 Current Release: 10486 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10487 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10488 104892) iASL Compiler/Disassembler and Tools: 10490 10491Implemented support in the disassembler for checksum validation on 10492incoming 10493binary DSDTs and SSDTs. If incorrect, a message is displayed within the 10494table 10495header dump at the start of the disassembly. 10496 10497Implemented additional debugging information in the namespace listing 10498file 10499created during compilation. In addition to the namespace hierarchy, the 10500full 10501pathname to each namespace object is displayed. 10502 10503Fixed a problem with the disassembler where invalid ACPI tables could 10504cause 10505faults or infinite loops. 10506 10507Fixed an unexpected parse error when using the optional "parameter types" 10508list in a control method declaration. (Lin Ming) BZ 397 10509 10510Fixed a problem where two External declarations with the same name did 10511not 10512cause an error (Lin Ming) BZ 509 10513 10514Implemented support for full TermArgs (adding Argx, Localx and method 10515invocation) for the ParameterData parameter to the LoadTable operator. 10516(Lin 10517Ming) BZ 583,587 10518 10519---------------------------------------- 1052019 December 2007. Summary of changes for version 20071219: 10521 105221) ACPI CA Core Subsystem: 10523 10524Implemented full support for deferred execution for the TermArg string 10525arguments for DataTableRegion. This enables forward references and full 10526operand resolution for the three string arguments. Similar to 10527OperationRegion 10528deferred argument execution.) Lin Ming. BZ 430 10529 10530Implemented full argument resolution support for the BankValue argument 10531to 10532BankField. Previously, only constants were supported, now any TermArg may 10533be 10534used. Lin Ming BZ 387, 393 10535 10536Fixed a problem with AcpiGetDevices where the search of a branch of the 10537device tree could be terminated prematurely. In accordance with the ACPI 10538specification, the search down the current branch is terminated if a 10539device 10540is both not present and not functional (instead of just not present.) 10541Yakui 10542Zhao. 10543 10544Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 10545if 10546the underlying AML code changed the GPE enable registers. Now, any 10547unknown 10548incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 10549disabled 10550instead of simply ignored. Rui Zhang. 10551 10552Fixed a problem with Index Fields where the Index register was 10553incorrectly 10554limited to a maximum of 32 bits. Now any size may be used. 10555 10556Fixed a couple memory leaks associated with "implicit return" objects 10557when 10558the AML Interpreter slack mode is enabled. Lin Ming BZ 349 10559 10560Example Code and Data Size: These are the sizes for the OS-independent 10561acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10562debug version of the code includes the debug output trace mechanism and 10563has 10564a much larger code and data size. 10565 10566 Previous Release: 10567 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10568 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10569 Current Release: 10570 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10571 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10572 10573---------------------------------------- 1057414 November 2007. Summary of changes for version 20071114: 10575 105761) ACPI CA Core Subsystem: 10577 10578Implemented event counters for each of the Fixed Events, the ACPI SCI 10579(interrupt) itself, and control methods executed. Named 10580AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 10581These 10582should be useful for debugging and statistics. 10583 10584Implemented a new external interface, AcpiGetStatistics, to retrieve the 10585contents of the various event counters. Returns the current values for 10586AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 10587AcpiMethodCount. The interface can be expanded in the future if new 10588counters 10589are added. Device drivers should use this interface rather than access 10590the 10591counters directly. 10592 10593Fixed a problem with the FromBCD and ToBCD operators. With some 10594compilers, 10595the ShortDivide function worked incorrectly, causing problems with the 10596BCD 10597functions with large input values. A truncation from 64-bit to 32-bit 10598inadvertently occurred. Internal BZ 435. Lin Ming 10599 10600Fixed a problem with Index references passed as method arguments. 10601References 10602passed as arguments to control methods were dereferenced immediately 10603(before 10604control was passed to the called method). The references are now 10605correctly 10606passed directly to the called method. BZ 5389. Lin Ming 10607 10608Fixed a problem with CopyObject used in conjunction with the Index 10609operator. 10610The reference was incorrectly dereferenced before the copy. The reference 10611is 10612now correctly copied. BZ 5391. Lin Ming 10613 10614Fixed a problem with Control Method references within Package objects. 10615These 10616references are now correctly generated. This completes the package 10617construction overhaul that began in version 20071019. 10618 10619Example Code and Data Size: These are the sizes for the OS-independent 10620acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10621debug version of the code includes the debug output trace mechanism and 10622has 10623a much larger code and data size. 10624 10625 Previous Release: 10626 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10627 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10628 Current Release: 10629 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10630 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10631 10632 106332) iASL Compiler/Disassembler and Tools: 10634 10635The AcpiExec utility now installs handlers for all of the predefined 10636Operation Region types. New types supported are: PCI_Config, CMOS, and 10637PCIBARTarget. 10638 10639Fixed a problem with the 64-bit version of AcpiExec where the extended 10640(64- 10641bit) address fields for the DSDT and FACS within the FADT were not being 10642used, causing truncation of the upper 32-bits of these addresses. Lin 10643Ming 10644and Bob Moore 10645 10646---------------------------------------- 1064719 October 2007. Summary of changes for version 20071019: 10648 106491) ACPI CA Core Subsystem: 10650 10651Fixed a problem with the Alias operator when the target of the alias is a 10652named ASL operator that opens a new scope -- Scope, Device, 10653PowerResource, 10654Processor, and ThermalZone. In these cases, any children of the original 10655operator could not be accessed via the alias, potentially causing 10656unexpected 10657AE_NOT_FOUND exceptions. (BZ 9067) 10658 10659Fixed a problem with the Package operator where all named references were 10660created as object references and left otherwise unresolved. According to 10661the 10662ACPI specification, a Package can only contain Data Objects or references 10663to 10664control methods. The implication is that named references to Data Objects 10665(Integer, Buffer, String, Package, BufferField, Field) should be resolved 10666immediately upon package creation. This is the approach taken with this 10667change. References to all other named objects (Methods, Devices, Scopes, 10668etc.) are all now properly created as reference objects. (BZ 5328) 10669 10670Reverted a change to Notify handling that was introduced in version 1067120070508. This version changed the Notify handling from asynchronous to 10672fully synchronous (Device driver Notify handling with respect to the 10673Notify 10674ASL operator). It was found that this change caused more problems than it 10675solved and was removed by most users. 10676 10677Fixed a problem with the Increment and Decrement operators where the type 10678of 10679the target object could be unexpectedly and incorrectly changed. (BZ 353) 10680Lin Ming. 10681 10682Fixed a problem with the Load and LoadTable operators where the table 10683location within the namespace was ignored. Instead, the table was always 10684loaded into the root or current scope. Lin Ming. 10685 10686Fixed a problem with the Load operator when loading a table from a buffer 10687object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 10688 10689Fixed a problem with the Debug object where a store of a DdbHandle 10690reference 10691object to the Debug object could cause a fault. 10692 10693Added a table checksum verification for the Load operator, in the case 10694where 10695the load is from a buffer. (BZ 578). 10696 10697Implemented additional parameter validation for the LoadTable operator. 10698The 10699length of the input strings SignatureString, OemIdString, and OemTableId 10700are 10701now checked for maximum lengths. (BZ 582) Lin Ming. 10702 10703Example Code and Data Size: These are the sizes for the OS-independent 10704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10705debug version of the code includes the debug output trace mechanism and 10706has 10707a much larger code and data size. 10708 10709 Previous Release: 10710 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10711 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10712 Current Release: 10713 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10714 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10715 10716 107172) iASL Compiler/Disassembler: 10718 10719Fixed a problem where if a single file was specified and the file did not 10720exist, no error message was emitted. (Introduced with wildcard support in 10721version 20070917.) 10722 10723---------------------------------------- 1072419 September 2007. Summary of changes for version 20070919: 10725 107261) ACPI CA Core Subsystem: 10727 10728Designed and implemented new external interfaces to install and remove 10729handlers for ACPI table-related events. Current events that are defined 10730are 10731LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 10732they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 10733AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 10734 10735Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 10736(acpi_serialized option on Linux) could cause some systems to hang during 10737initialization. (Bob Moore) BZ 8171 10738 10739Fixed a problem where objects of certain types (Device, ThermalZone, 10740Processor, PowerResource) can be not found if they are declared and 10741referenced from within the same control method (Lin Ming) BZ 341 10742 10743Example Code and Data Size: These are the sizes for the OS-independent 10744acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10745debug version of the code includes the debug output trace mechanism and 10746has 10747a much larger code and data size. 10748 10749 Previous Release: 10750 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10751 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10752 Current Release: 10753 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10754 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10755 10756 107572) iASL Compiler/Disassembler: 10758 10759Implemented support to allow multiple files to be compiled/disassembled 10760in 10761a 10762single invocation. This includes command line wildcard support for both 10763the 10764Windows and Unix versions of the compiler. This feature simplifies the 10765disassembly and compilation of multiple ACPI tables in a single 10766directory. 10767 10768---------------------------------------- 1076908 May 2007. Summary of changes for version 20070508: 10770 107711) ACPI CA Core Subsystem: 10772 10773Implemented a Microsoft compatibility design change for the handling of 10774the 10775Notify AML operator. Previously, notify handlers were dispatched and 10776executed completely asynchronously in a deferred thread. The new design 10777still executes the notify handlers in a different thread, but the 10778original 10779thread that executed the Notify() now waits at a synchronization point 10780for 10781the notify handler to complete. Some machines depend on a synchronous 10782Notify 10783operator in order to operate correctly. 10784 10785Implemented support to allow Package objects to be passed as method 10786arguments to the external AcpiEvaluateObject interface. Previously, this 10787would return the AE_NOT_IMPLEMENTED exception. This feature had not been 10788implemented since there were no reserved control methods that required it 10789until recently. 10790 10791Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 10792that 10793contained invalid non-zero values in reserved fields could cause later 10794failures because these fields have meaning in later revisions of the 10795FADT. 10796For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 10797fields 10798are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 10799 10800Fixed a problem where the Global Lock handle was not properly updated if 10801a 10802thread that acquired the Global Lock via executing AML code then 10803attempted 10804to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 10805Joe 10806Liu. 10807 10808Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 10809could be corrupted if the interrupt being removed was at the head of the 10810list. Reported by Linn Crosetto. 10811 10812Example Code and Data Size: These are the sizes for the OS-independent 10813acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10814debug version of the code includes the debug output trace mechanism and 10815has 10816a much larger code and data size. 10817 10818 Previous Release: 10819 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10820 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10821 Current Release: 10822 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10823 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10824 10825---------------------------------------- 1082620 March 2007. Summary of changes for version 20070320: 10827 108281) ACPI CA Core Subsystem: 10829 10830Implemented a change to the order of interpretation and evaluation of AML 10831operand objects within the AML interpreter. The interpreter now evaluates 10832operands in the order that they appear in the AML stream (and the 10833corresponding ASL code), instead of in the reverse order (after the 10834entire 10835operand list has been parsed). The previous behavior caused several 10836subtle 10837incompatibilities with the Microsoft AML interpreter as well as being 10838somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 10839 10840Implemented a change to the ACPI Global Lock support. All interfaces to 10841the 10842global lock now allow the same thread to acquire the lock multiple times. 10843This affects the AcpiAcquireGlobalLock external interface to the global 10844lock 10845as well as the internal use of the global lock to support AML fields -- a 10846control method that is holding the global lock can now simultaneously 10847access 10848AML fields that require global lock protection. Previously, in both 10849cases, 10850this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 10851to 10852AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 10853Controller. There is no change to the behavior of the AML Acquire 10854operator, 10855as this can already be used to acquire a mutex multiple times by the same 10856thread. BZ 8066. With assistance from Alexey Starikovskiy. 10857 10858Fixed a problem where invalid objects could be referenced in the AML 10859Interpreter after error conditions. During operand evaluation, ensure 10860that 10861the internal "Return Object" field is cleared on error and only valid 10862pointers are stored there. Caused occasional access to deleted objects 10863that 10864resulted in "large reference count" warning messages. Valery Podrezov. 10865 10866Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 10867on 10868deeply nested control method invocations. BZ 7873, local BZ 487. Valery 10869Podrezov. 10870 10871Fixed an internal problem with the handling of result objects on the 10872interpreter result stack. BZ 7872. Valery Podrezov. 10873 10874Removed obsolete code that handled the case where AML_NAME_OP is the 10875target 10876of a reference (Reference.Opcode). This code was no longer necessary. BZ 108777874. Valery Podrezov. 10878 10879Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 10880was 10881a 10882remnant from the previously discontinued 16-bit support. 10883 10884Example Code and Data Size: These are the sizes for the OS-independent 10885acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10886debug version of the code includes the debug output trace mechanism and 10887has 10888a much larger code and data size. 10889 10890 Previous Release: 10891 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10892 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10893 Current Release: 10894 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10895 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10896 10897---------------------------------------- 1089826 January 2007. Summary of changes for version 20070126: 10899 109001) ACPI CA Core Subsystem: 10901 10902Added the 2007 copyright to all module headers and signons. This affects 10903virtually every file in the ACPICA core subsystem, the iASL compiler, and 10904the utilities. 10905 10906Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 10907during a table load. A bad pointer was passed in the case where the DSDT 10908is 10909overridden, causing a fault in this case. 10910 10911Example Code and Data Size: These are the sizes for the OS-independent 10912acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10913debug version of the code includes the debug output trace mechanism and 10914has 10915a much larger code and data size. 10916 10917 Previous Release: 10918 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10919 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10920 Current Release: 10921 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10922 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10923 10924---------------------------------------- 1092515 December 2006. Summary of changes for version 20061215: 10926 109271) ACPI CA Core Subsystem: 10928 10929Support for 16-bit ACPICA has been completely removed since it is no 10930longer 10931necessary and it clutters the code. All 16-bit macros, types, and 10932conditional compiles have been removed, cleaning up and simplifying the 10933code 10934across the entire subsystem. DOS support is no longer needed since the 10935bootable Linux firmware kit is now available. 10936 10937The handler for the Global Lock is now removed during AcpiTerminate to 10938enable a clean subsystem restart, via the implementation of the 10939AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 10940HP) 10941 10942Implemented enhancements to the multithreading support within the 10943debugger 10944to enable improved multithreading debugging and evaluation of the 10945subsystem. 10946(Valery Podrezov) 10947 10948Debugger: Enhanced the Statistics/Memory command to emit the total 10949(maximum) 10950memory used during the execution, as well as the maximum memory consumed 10951by 10952each of the various object types. (Valery Podrezov) 10953 10954Example Code and Data Size: These are the sizes for the OS-independent 10955acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10956debug version of the code includes the debug output trace mechanism and 10957has 10958a much larger code and data size. 10959 10960 Previous Release: 10961 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10962 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10963 Current Release: 10964 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10965 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10966 10967 109682) iASL Compiler/Disassembler and Tools: 10969 10970AcpiExec: Implemented a new option (-m) to display full memory use 10971statistics upon subsystem/program termination. (Valery Podrezov) 10972 10973---------------------------------------- 1097409 November 2006. Summary of changes for version 20061109: 10975 109761) ACPI CA Core Subsystem: 10977 10978Optimized the Load ASL operator in the case where the source operand is 10979an 10980operation region. Simply map the operation region memory, instead of 10981performing a bytewise read. (Region must be of type SystemMemory, see 10982below.) 10983 10984Fixed the Load ASL operator for the case where the source operand is a 10985region field. A buffer object is also allowed as the source operand. BZ 10986480 10987 10988Fixed a problem where the Load ASL operator allowed the source operand to 10989be 10990an operation region of any type. It is now restricted to regions of type 10991SystemMemory, as per the ACPI specification. BZ 481 10992 10993Additional cleanup and optimizations for the new Table Manager code. 10994 10995AcpiEnable will now fail if all of the required ACPI tables are not 10996loaded 10997(FADT, FACS, DSDT). BZ 477 10998 10999Added #pragma pack(8/4) to acobject.h to ensure that the structures in 11000this 11001header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 11002manually optimized to be aligned and will not work if it is byte-packed. 11003 11004Example Code and Data Size: These are the sizes for the OS-independent 11005acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11006debug version of the code includes the debug output trace mechanism and 11007has 11008a much larger code and data size. 11009 11010 Previous Release: 11011 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11012 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11013 Current Release: 11014 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11015 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11016 11017 110182) iASL Compiler/Disassembler and Tools: 11019 11020Fixed a problem where the presence of the _OSI predefined control method 11021within complex expressions could cause an internal compiler error. 11022 11023AcpiExec: Implemented full region support for multiple address spaces. 11024SpaceId is now part of the REGION object. BZ 429 11025 11026---------------------------------------- 1102711 October 2006. Summary of changes for version 20061011: 11028 110291) ACPI CA Core Subsystem: 11030 11031Completed an AML interpreter performance enhancement for control method 11032execution. Previously a 2-pass parse/execution, control methods are now 11033completely parsed and executed in a single pass. This improves overall 11034interpreter performance by ~25%, reduces code size, and reduces CPU stack 11035use. (Valery Podrezov + interpreter changes in version 20051202 that 11036eliminated namespace loading during the pass one parse.) 11037 11038Implemented _CID support for PCI Root Bridge detection. If the _HID does 11039not 11040match the predefined PCI Root Bridge IDs, the _CID list (if present) is 11041now 11042obtained and also checked for an ID match. 11043 11044Implemented additional support for the PCI _ADR execution: upsearch until 11045a 11046device scope is found before executing _ADR. This allows PCI_Config 11047operation regions to be declared locally within control methods 11048underneath 11049PCI device objects. 11050 11051Fixed a problem with a possible race condition between threads executing 11052AcpiWalkNamespace and the AML interpreter. This condition was removed by 11053modifying AcpiWalkNamespace to (by default) ignore all temporary 11054namespace 11055entries created during any concurrent control method execution. An 11056additional namespace race condition is known to exist between 11057AcpiWalkNamespace and the Load/Unload ASL operators and is still under 11058investigation. 11059 11060Restructured the AML ParseLoop function, breaking it into several 11061subfunctions in order to reduce CPU stack use and improve 11062maintainability. 11063(Mikhail Kouzmich) 11064 11065AcpiGetHandle: Fix for parameter validation to detect invalid 11066combinations 11067of prefix handle and pathname. BZ 478 11068 11069Example Code and Data Size: These are the sizes for the OS-independent 11070acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11071debug version of the code includes the debug output trace mechanism and 11072has 11073a much larger code and data size. 11074 11075 Previous Release: 11076 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11077 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11078 Current Release: 11079 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11080 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11081 110822) iASL Compiler/Disassembler and Tools: 11083 11084Ported the -g option (get local ACPI tables) to the new ACPICA Table 11085Manager 11086to restore original behavior. 11087 11088---------------------------------------- 1108927 September 2006. Summary of changes for version 20060927: 11090 110911) ACPI CA Core Subsystem: 11092 11093Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 11094These functions now use a spinlock for mutual exclusion and the interrupt 11095level indication flag is not needed. 11096 11097Fixed a problem with the Global Lock where the lock could appear to be 11098obtained before it is actually obtained. The global lock semaphore was 11099inadvertently created with one unit instead of zero units. (BZ 464) 11100Fiodor 11101Suietov. 11102 11103Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 11104during 11105a read from a buffer or region field. (BZ 458) Fiodor Suietov. 11106 11107Example Code and Data Size: These are the sizes for the OS-independent 11108acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11109debug version of the code includes the debug output trace mechanism and 11110has 11111a much larger code and data size. 11112 11113 Previous Release: 11114 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11115 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11116 Current Release: 11117 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11118 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11119 11120 111212) iASL Compiler/Disassembler and Tools: 11122 11123Fixed a compilation problem with the pre-defined Resource Descriptor 11124field 11125names where an "object does not exist" error could be incorrectly 11126generated 11127if the parent ResourceTemplate pathname places the template within a 11128different namespace scope than the current scope. (BZ 7212) 11129 11130Fixed a problem where the compiler could hang after syntax errors 11131detected 11132in an ElseIf construct. (BZ 453) 11133 11134Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 11135operator. An incorrect output filename was produced when this parameter 11136was 11137a null string (""). Now, the original input filename is used as the AML 11138output filename, with an ".aml" extension. 11139 11140Implemented a generic batch command mode for the AcpiExec utility 11141(execute 11142any AML debugger command) (Valery Podrezov). 11143 11144---------------------------------------- 1114512 September 2006. Summary of changes for version 20060912: 11146 111471) ACPI CA Core Subsystem: 11148 11149Enhanced the implementation of the "serialized mode" of the interpreter 11150(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 11151specified, instead of creating a serialization semaphore per control 11152method, 11153the interpreter lock is simply no longer released before a blocking 11154operation during control method execution. This effectively makes the AML 11155Interpreter single-threaded. The overhead of a semaphore per-method is 11156eliminated. 11157 11158Fixed a regression where an error was no longer emitted if a control 11159method 11160attempts to create 2 objects of the same name. This once again returns 11161AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 11162that 11163will dynamically serialize the control method to possible prevent future 11164errors. (BZ 440) 11165 11166Integrated a fix for a problem with PCI Express HID detection in the PCI 11167Config Space setup procedure. (BZ 7145) 11168 11169Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 11170AcpiHwInitialize function - the FADT registers are now validated when the 11171table is loaded. 11172 11173Added two new warnings during FADT verification - 1) if the FADT is 11174larger 11175than the largest known FADT version, and 2) if there is a mismatch 11176between 11177a 1117832-bit block address and the 64-bit X counterpart (when both are non- 11179zero.) 11180 11181Example Code and Data Size: These are the sizes for the OS-independent 11182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11183debug version of the code includes the debug output trace mechanism and 11184has 11185a much larger code and data size. 11186 11187 Previous Release: 11188 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11189 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11190 Current Release: 11191 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11192 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11193 11194 111952) iASL Compiler/Disassembler and Tools: 11196 11197Fixed a problem with the implementation of the Switch() operator where 11198the 11199temporary variable was declared too close to the actual Switch, instead 11200of 11201at method level. This could cause a problem if the Switch() operator is 11202within a while loop, causing an error on the second iteration. (BZ 460) 11203 11204Disassembler - fix for error emitted for unknown type for target of scope 11205operator. Now, ignore it and continue. 11206 11207Disassembly of an FADT now verifies the input FADT and reports any errors 11208found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 11209 11210Disassembly of raw data buffers with byte initialization data now 11211prefixes 11212each output line with the current buffer offset. 11213 11214Disassembly of ASF! table now includes all variable-length data fields at 11215the end of some of the subtables. 11216 11217The disassembler now emits a comment if a buffer appears to be a 11218ResourceTemplate, but cannot be disassembled as such because the EndTag 11219does 11220not appear at the very end of the buffer. 11221 11222AcpiExec - Added the "-t" command line option to enable the serialized 11223mode 11224of the AML interpreter. 11225 11226---------------------------------------- 1122731 August 2006. Summary of changes for version 20060831: 11228 112291) ACPI CA Core Subsystem: 11230 11231Miscellaneous fixes for the Table Manager: 11232- Correctly initialize internal common FADT for all 64-bit "X" fields 11233- Fixed a couple table mapping issues during table load 11234- Fixed a couple alignment issues for IA64 11235- Initialize input array to zero in AcpiInitializeTables 11236- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 11237AcpiGetTableByIndex 11238 11239Change for GPE support: when a "wake" GPE is received, all wake GPEs are 11240now 11241immediately disabled to prevent the waking GPE from firing again and to 11242prevent other wake GPEs from interrupting the wake process. 11243 11244Added the AcpiGpeCount global that tracks the number of processed GPEs, 11245to 11246be used for debugging systems with a large number of ACPI interrupts. 11247 11248Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 11249both the ACPICA headers and the disassembler. 11250 11251Example Code and Data Size: These are the sizes for the OS-independent 11252acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11253debug version of the code includes the debug output trace mechanism and 11254has 11255a much larger code and data size. 11256 11257 Previous Release: 11258 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11259 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11260 Current Release: 11261 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11262 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11263 11264 112652) iASL Compiler/Disassembler and Tools: 11266 11267Disassembler support for the DMAR ACPI table. 11268 11269---------------------------------------- 1127023 August 2006. Summary of changes for version 20060823: 11271 112721) ACPI CA Core Subsystem: 11273 11274The Table Manager component has been completely redesigned and 11275reimplemented. The new design is much simpler, and reduces the overall 11276code 11277and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11278is 11279now possible to obtain the ACPI tables very early during kernel 11280initialization, even before dynamic memory management is initialized. 11281(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11282 11283Obsolete ACPICA interfaces: 11284 11285- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11286init 11287time). 11288- AcpiLoadTable: Not needed. 11289- AcpiUnloadTable: Not needed. 11290 11291New ACPICA interfaces: 11292 11293- AcpiInitializeTables: Must be called before the table manager can be 11294used. 11295- AcpiReallocateRootTable: Used to transfer the root table to dynamically 11296allocated memory after it becomes available. 11297- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11298tables 11299in the RSDT/XSDT. 11300 11301Other ACPICA changes: 11302 11303- AcpiGetTableHeader returns the actual mapped table header, not a copy. 11304Use 11305AcpiOsUnmapMemory to free this mapping. 11306- AcpiGetTable returns the actual mapped table. The mapping is managed 11307internally and must not be deleted by the caller. Use of this interface 11308causes no additional dynamic memory allocation. 11309- AcpiFindRootPointer: Support for physical addressing has been 11310eliminated, 11311it appeared to be unused. 11312- The interface to AcpiOsMapMemory has changed to be consistent with the 11313other allocation interfaces. 11314- The interface to AcpiOsGetRootPointer has changed to eliminate 11315unnecessary 11316parameters. 11317- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1131864- 11319bit platforms. Was previously 64 bits on all platforms. 11320- The interface to the ACPI Global Lock acquire/release macros have 11321changed 11322slightly since ACPICA no longer keeps a local copy of the FACS with a 11323constructed pointer to the actual global lock. 11324 11325Porting to the new table manager: 11326 11327- AcpiInitializeTables: Must be called once, and can be called anytime 11328during the OS initialization process. It allows the host to specify an 11329area 11330of memory to be used to store the internal version of the RSDT/XSDT (root 11331table). This allows the host to access ACPI tables before memory 11332management 11333is initialized and running. 11334- AcpiReallocateRootTable: Can be called after memory management is 11335running 11336to copy the root table to a dynamically allocated array, freeing up the 11337scratch memory specified in the call to AcpiInitializeTables. 11338- AcpiSubsystemInitialize: This existing interface is independent of the 11339Table Manager, and does not have to be called before the Table Manager 11340can 11341be used, it only must be called before the rest of ACPICA can be used. 11342- ACPI Tables: Some changes have been made to the names and structure of 11343the 11344actbl.h and actbl1.h header files and may require changes to existing 11345code. 11346For example, bitfields have been completely removed because of their lack 11347of 11348portability across C compilers. 11349- Update interfaces to the Global Lock acquire/release macros if local 11350versions are used. (see acwin.h) 11351 11352Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11353 11354New files: tbfind.c 11355 11356Example Code and Data Size: These are the sizes for the OS-independent 11357acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11358debug version of the code includes the debug output trace mechanism and 11359has 11360a much larger code and data size. 11361 11362 Previous Release: 11363 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11364 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11365 Current Release: 11366 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11367 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11368 11369 113702) iASL Compiler/Disassembler and Tools: 11371 11372No changes for this release. 11373 11374---------------------------------------- 1137521 July 2006. Summary of changes for version 20060721: 11376 113771) ACPI CA Core Subsystem: 11378 11379The full source code for the ASL test suite used to validate the iASL 11380compiler and the ACPICA core subsystem is being released with the ACPICA 11381source for the first time. The source is contained in a separate package 11382and 11383consists of over 1100 files that exercise all ASL/AML operators. The 11384package 11385should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11386Fiodor 11387Suietov) 11388 11389Completed a new design and implementation for support of the ACPI Global 11390Lock. On the OS side, the global lock is now treated as a standard AML 11391mutex. Previously, multiple OS threads could "acquire" the global lock 11392simultaneously. However, this could cause the BIOS to be starved out of 11393the 11394lock - especially in cases such as the Embedded Controller driver where 11395there is a tight coupling between the OS and the BIOS. 11396 11397Implemented an optimization for the ACPI Global Lock interrupt mechanism. 11398The Global Lock interrupt handler no longer queues the execution of a 11399separate thread to signal the global lock semaphore. Instead, the 11400semaphore 11401is signaled directly from the interrupt handler. 11402 11403Implemented support within the AML interpreter for package objects that 11404contain a larger AML length (package list length) than the package 11405element 11406count. In this case, the length of the package is truncated to match the 11407package element count. Some BIOS code apparently modifies the package 11408length 11409on the fly, and this change supports this behavior. Provides 11410compatibility 11411with the MS AML interpreter. (With assistance from Fiodor Suietov) 11412 11413Implemented a temporary fix for the BankValue parameter of a Bank Field 11414to 11415support all constant values, now including the Zero and One opcodes. 11416Evaluation of this parameter must eventually be converted to a full 11417TermArg 11418evaluation. A not-implemented error is now returned (temporarily) for 11419non- 11420constant values for this parameter. 11421 11422Fixed problem reports (Fiodor Suietov) integrated: 11423- Fix for premature object deletion after CopyObject on Operation Region 11424(BZ 11425350) 11426 11427Example Code and Data Size: These are the sizes for the OS-independent 11428acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11429debug version of the code includes the debug output trace mechanism and 11430has 11431a much larger code and data size. 11432 11433 Previous Release: 11434 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 11435 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 11436 Current Release: 11437 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11438 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11439 11440 114412) iASL Compiler/Disassembler and Tools: 11442 11443No changes for this release. 11444 11445---------------------------------------- 1144607 July 2006. Summary of changes for version 20060707: 11447 114481) ACPI CA Core Subsystem: 11449 11450Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 11451that do not allow the initialization of address pointers within packed 11452structures - even though the hardware itself may support misaligned 11453transfers. Some of the debug data structures are packed by default to 11454minimize size. 11455 11456Added an error message for the case where AcpiOsGetThreadId() returns 11457zero. 11458A non-zero value is required by the core ACPICA code to ensure the proper 11459operation of AML mutexes and recursive control methods. 11460 11461The DSDT is now the only ACPI table that determines whether the AML 11462interpreter is in 32-bit or 64-bit mode. Not really a functional change, 11463but 11464the hooks for per-table 32/64 switching have been removed from the code. 11465A 11466clarification to the ACPI specification is forthcoming in ACPI 3.0B. 11467 11468Fixed a possible leak of an OwnerID in the error path of 11469AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 11470deletion to a single place in AcpiTbUninstallTable to correct possible 11471leaks 11472when using the AcpiTbDeleteTablesByType interface (with assistance from 11473Lance Ortiz.) 11474 11475Fixed a problem with Serialized control methods where the semaphore 11476associated with the method could be over-signaled after multiple method 11477invocations. 11478 11479Fixed two issues with the locking of the internal namespace data 11480structure. 11481Both the Unload() operator and AcpiUnloadTable interface now lock the 11482namespace during the namespace deletion associated with the table unload 11483(with assistance from Linn Crosetto.) 11484 11485Fixed problem reports (Valery Podrezov) integrated: 11486- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 11487 11488Fixed problem reports (Fiodor Suietov) integrated: 11489- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 11490- On Address Space handler deletion, needless deactivation call (BZ 374) 11491- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 11492375) 11493- Possible memory leak, Notify sub-objects of Processor, Power, 11494ThermalZone 11495(BZ 376) 11496- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 11497- Minimum Length of RSDT should be validated (BZ 379) 11498- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 11499Handler (BZ (380) 11500- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 11501loaded 11502(BZ 381) 11503 11504Example Code and Data Size: These are the sizes for the OS-independent 11505acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11506debug version of the code includes the debug output trace mechanism and 11507has 11508a much larger code and data size. 11509 11510 Previous Release: 11511 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11512 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11513 Current Release: 11514 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11515 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11516 11517 115182) iASL Compiler/Disassembler and Tools: 11519 11520Fixed problem reports: 11521Compiler segfault when ASL contains a long (>1024) String declaration (BZ 11522436) 11523 11524---------------------------------------- 1152523 June 2006. Summary of changes for version 20060623: 11526 115271) ACPI CA Core Subsystem: 11528 11529Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 11530allows the type to be customized to the host OS for improved efficiency 11531(since a spinlock is usually a very small object.) 11532 11533Implemented support for "ignored" bits in the ACPI registers. According 11534to 11535the ACPI specification, these bits should be preserved when writing the 11536registers via a read/modify/write cycle. There are 3 bits preserved in 11537this 11538manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 11539 11540Implemented the initial deployment of new OSL mutex interfaces. Since 11541some 11542host operating systems have separate mutex and semaphore objects, this 11543feature was requested. The base code now uses mutexes (and the new mutex 11544interfaces) wherever a binary semaphore was used previously. However, for 11545the current release, the mutex interfaces are defined as macros to map 11546them 11547to the existing semaphore interfaces. Therefore, no OSL changes are 11548required 11549at this time. (See acpiosxf.h) 11550 11551Fixed several problems with the support for the control method SyncLevel 11552parameter. The SyncLevel now works according to the ACPI specification 11553and 11554in concert with the Mutex SyncLevel parameter, since the current 11555SyncLevel 11556is a property of the executing thread. Mutual exclusion for control 11557methods 11558is now implemented with a mutex instead of a semaphore. 11559 11560Fixed three instances of the use of the C shift operator in the bitfield 11561support code (exfldio.c) to avoid the use of a shift value larger than 11562the 11563target data width. The behavior of C compilers is undefined in this case 11564and 11565can cause unpredictable results, and therefore the case must be detected 11566and 11567avoided. (Fiodor Suietov) 11568 11569Added an info message whenever an SSDT or OEM table is loaded dynamically 11570via the Load() or LoadTable() ASL operators. This should improve 11571debugging 11572capability since it will show exactly what tables have been loaded 11573(beyond 11574the tables present in the RSDT/XSDT.) 11575 11576Example Code and Data Size: These are the sizes for the OS-independent 11577acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11578debug version of the code includes the debug output trace mechanism and 11579has 11580a much larger code and data size. 11581 11582 Previous Release: 11583 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11584 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11585 Current Release: 11586 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11587 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11588 11589 115902) iASL Compiler/Disassembler and Tools: 11591 11592No changes for this release. 11593 11594---------------------------------------- 1159508 June 2006. Summary of changes for version 20060608: 11596 115971) ACPI CA Core Subsystem: 11598 11599Converted the locking mutex used for the ACPI hardware to a spinlock. 11600This 11601change should eliminate all problems caused by attempting to acquire a 11602semaphore at interrupt level, and it means that all ACPICA external 11603interfaces that directly access the ACPI hardware can be safely called 11604from 11605interrupt level. OSL code that implements the semaphore interfaces should 11606be 11607able to eliminate any workarounds for being called at interrupt level. 11608 11609Fixed a regression introduced in 20060526 where the ACPI device 11610initialization could be prematurely aborted with an AE_NOT_FOUND if a 11611device 11612did not have an optional _INI method. 11613 11614Fixed an IndexField issue where a write to the Data Register should be 11615limited in size to the AccessSize (width) of the IndexField itself. (BZ 11616433, 11617Fiodor Suietov) 11618 11619Fixed problem reports (Valery Podrezov) integrated: 11620- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 11621 11622Fixed problem reports (Fiodor Suietov) integrated: 11623- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 11624 11625Removed four global mutexes that were obsolete and were no longer being 11626used. 11627 11628Example Code and Data Size: These are the sizes for the OS-independent 11629acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11630debug version of the code includes the debug output trace mechanism and 11631has 11632a much larger code and data size. 11633 11634 Previous Release: 11635 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11636 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11637 Current Release: 11638 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11639 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11640 11641 116422) iASL Compiler/Disassembler and Tools: 11643 11644Fixed a fault when using -g option (get tables from registry) on Windows 11645machines. 11646 11647Fixed problem reports integrated: 11648- Generate error if CreateField NumBits parameter is zero. (BZ 405) 11649- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 11650Suietov) 11651- Global table revision override (-r) is ignored (BZ 413) 11652 11653---------------------------------------- 1165426 May 2006. Summary of changes for version 20060526: 11655 116561) ACPI CA Core Subsystem: 11657 11658Restructured, flattened, and simplified the internal interfaces for 11659namespace object evaluation - resulting in smaller code, less CPU stack 11660use, 11661and fewer interfaces. (With assistance from Mikhail Kouzmich) 11662 11663Fixed a problem with the CopyObject operator where the first parameter 11664was 11665not typed correctly for the parser, interpreter, compiler, and 11666disassembler. 11667Caused various errors and unexpected behavior. 11668 11669Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 11670produced incorrect results with some C compilers. Since the behavior of C 11671compilers when the shift value is larger than the datatype width is 11672apparently not well defined, the interpreter now detects this condition 11673and 11674simply returns zero as expected in all such cases. (BZ 395) 11675 11676Fixed problem reports (Valery Podrezov) integrated: 11677- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 11678- Allow interpreter to handle nested method declarations (BZ 5361) 11679 11680Fixed problem reports (Fiodor Suietov) integrated: 11681- AcpiTerminate doesn't free debug memory allocation list objects (BZ 11682355) 11683- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 11684356) 11685- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 11686- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 11687- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 11688- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 11689- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 11690- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 11691- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 11692365) 11693- Status of the Global Initialization Handler call not used (BZ 366) 11694- Incorrect object parameter to Global Initialization Handler (BZ 367) 11695 11696Example Code and Data Size: These are the sizes for the OS-independent 11697acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11698debug version of the code includes the debug output trace mechanism and 11699has 11700a much larger code and data size. 11701 11702 Previous Release: 11703 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11704 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11705 Current Release: 11706 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11707 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11708 11709 117102) iASL Compiler/Disassembler and Tools: 11711 11712Modified the parser to allow the names IO, DMA, and IRQ to be used as 11713namespace identifiers with no collision with existing resource descriptor 11714macro names. This provides compatibility with other ASL compilers and is 11715most useful for disassembly/recompilation of existing tables without 11716parse 11717errors. (With assistance from Thomas Renninger) 11718 11719Disassembler: fixed an incorrect disassembly problem with the 11720DataTableRegion and CopyObject operators. Fixed a possible fault during 11721disassembly of some Alias operators. 11722 11723---------------------------------------- 1172412 May 2006. Summary of changes for version 20060512: 11725 117261) ACPI CA Core Subsystem: 11727 11728Replaced the AcpiOsQueueForExecution interface with a new interface named 11729AcpiOsExecute. The major difference is that the new interface does not 11730have 11731a Priority parameter, this appeared to be useless and has been replaced 11732by 11733a 11734Type parameter. The Type tells the host what type of execution is being 11735requested, such as global lock handler, notify handler, GPE handler, etc. 11736This allows the host to queue and execute the request as appropriate for 11737the 11738request type, possibly using different work queues and different 11739priorities 11740for the various request types. This enables fixes for multithreading 11741deadlock problems such as BZ #5534, and will require changes to all 11742existing 11743OS interface layers. (Alexey Starikovskiy and Bob Moore) 11744 11745Fixed a possible memory leak associated with the support for the so- 11746called 11747"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 11748Suietov) 11749 11750Fixed a problem with the Load() operator where a table load from an 11751operation region could overwrite an internal table buffer by up to 7 11752bytes 11753and cause alignment faults on IPF systems. (With assistance from Luming 11754Yu) 11755 11756Example Code and Data Size: These are the sizes for the OS-independent 11757acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11758debug version of the code includes the debug output trace mechanism and 11759has 11760a much larger code and data size. 11761 11762 Previous Release: 11763 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11764 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11765 Current Release: 11766 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11767 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11768 11769 11770 117712) iASL Compiler/Disassembler and Tools: 11772 11773Disassembler: Implemented support to cross reference the internal 11774namespace 11775and automatically generate ASL External() statements for symbols not 11776defined 11777within the current table being disassembled. This will simplify the 11778disassembly and recompilation of interdependent tables such as SSDTs 11779since 11780these statements will no longer have to be added manually. 11781 11782Disassembler: Implemented experimental support to automatically detect 11783invocations of external control methods and generate appropriate 11784External() 11785statements. This is problematic because the AML cannot be correctly 11786parsed 11787until the number of arguments for each control method is known. 11788Currently, 11789standalone method invocations and invocations as the source operand of a 11790Store() statement are supported. 11791 11792Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 11793LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 11794LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 11795more readable and likely closer to the original ASL source. 11796 11797---------------------------------------- 1179821 April 2006. Summary of changes for version 20060421: 11799 118001) ACPI CA Core Subsystem: 11801 11802Removed a device initialization optimization introduced in 20051216 where 11803the _STA method was not run unless an _INI was also present for the same 11804device. This optimization could cause problems because it could allow 11805_INI 11806methods to be run within a not-present device subtree. (If a not-present 11807device had no _INI, _STA would not be run, the not-present status would 11808not 11809be discovered, and the children of the device would be incorrectly 11810traversed.) 11811 11812Implemented a new _STA optimization where namespace subtrees that do not 11813contain _INI are identified and ignored during device initialization. 11814Selectively running _STA can significantly improve boot time on large 11815machines (with assistance from Len Brown.) 11816 11817Implemented support for the device initialization case where the returned 11818_STA flags indicate a device not-present but functioning. In this case, 11819_INI 11820is not run, but the device children are examined for presence, as per the 11821ACPI specification. 11822 11823Implemented an additional change to the IndexField support in order to 11824conform to MS behavior. The value written to the Index Register is not 11825simply a byte offset, it is a byte offset in units of the access width of 11826the parent Index Field. (Fiodor Suietov) 11827 11828Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 11829interface is called during the creation of all AML operation regions, and 11830allows the host OS to exert control over what addresses it will allow the 11831AML code to access. Operation Regions whose addresses are disallowed will 11832cause a runtime exception when they are actually accessed (will not 11833affect 11834or abort table loading.) See oswinxf or osunixxf for an example 11835implementation. 11836 11837Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 11838interface allows the host OS to match the various "optional" 11839interface/behavior strings for the _OSI predefined control method as 11840appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 11841for an example implementation. 11842 11843Restructured and corrected various problems in the exception handling 11844code 11845paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 11846(with assistance from Takayoshi Kochi.) 11847 11848Modified the Linux source converter to ignore quoted string literals 11849while 11850converting identifiers from mixed to lower case. This will correct 11851problems 11852with the disassembler and other areas where such strings must not be 11853modified. 11854 11855The ACPI_FUNCTION_* macros no longer require quotes around the function 11856name. This allows the Linux source converter to convert the names, now 11857that 11858the converter ignores quoted strings. 11859 11860Example Code and Data Size: These are the sizes for the OS-independent 11861acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11862debug version of the code includes the debug output trace mechanism and 11863has 11864a much larger code and data size. 11865 11866 Previous Release: 11867 11868 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11869 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11870 Current Release: 11871 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11872 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11873 11874 118752) iASL Compiler/Disassembler and Tools: 11876 11877Implemented 3 new warnings for iASL, and implemented multiple warning 11878levels 11879(w2 flag). 11880 118811) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 11882not 11883WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 11884check for the possible timeout, a warning is issued. 11885 118862) Useless operators: If an ASL operator does not specify an optional 11887target 11888operand and it also does not use the function return value from the 11889operator, a warning is issued since the operator effectively does 11890nothing. 11891 118923) Unreferenced objects: If a namespace object is created, but never 11893referenced, a warning is issued. This is a warning level 2 since there 11894are 11895cases where this is ok, such as when a secondary table is loaded that 11896uses 11897the unreferenced objects. Even so, care is taken to only flag objects 11898that 11899don't look like they will ever be used. For example, the reserved methods 11900(starting with an underscore) are usually not referenced because it is 11901expected that the OS will invoke them. 11902 11903---------------------------------------- 1190431 March 2006. Summary of changes for version 20060331: 11905 119061) ACPI CA Core Subsystem: 11907 11908Implemented header file support for the following additional ACPI tables: 11909ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 11910support, 11911all current and known ACPI tables are now defined in the ACPICA headers 11912and 11913are available for use by device drivers and other software. 11914 11915Implemented support to allow tables that contain ACPI names with invalid 11916characters to be loaded. Previously, this would cause the table load to 11917fail, but since there are several known cases of such tables on existing 11918machines, this change was made to enable ACPI support for them. Also, 11919this 11920matches the behavior of the Microsoft ACPI implementation. 11921 11922Fixed a couple regressions introduced during the memory optimization in 11923the 1192420060317 release. The namespace node definition required additional 11925reorganization and an internal datatype that had been changed to 8-bit 11926was 11927restored to 32-bit. (Valery Podrezov) 11928 11929Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 11930could be passed through to AcpiOsReleaseObject which is unexpected. Such 11931null pointers are now trapped and ignored, matching the behavior of the 11932previous implementation before the deployment of AcpiOsReleaseObject. 11933(Valery Podrezov, Fiodor Suietov) 11934 11935Fixed a memory mapping leak during the deletion of a SystemMemory 11936operation 11937region where a cached memory mapping was not deleted. This became a 11938noticeable problem for operation regions that are defined within 11939frequently 11940used control methods. (Dana Meyers) 11941 11942Reorganized the ACPI table header files into two main files: one for the 11943ACPI tables consumed by the ACPICA core, and another for the 11944miscellaneous 11945ACPI tables that are consumed by the drivers and other software. The 11946various 11947FADT definitions were merged into one common section and three different 11948tables (ACPI 1.0, 1.0+, and 2.0) 11949 11950Example Code and Data Size: These are the sizes for the OS-independent 11951acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11952debug version of the code includes the debug output trace mechanism and 11953has 11954a much larger code and data size. 11955 11956 Previous Release: 11957 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11958 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11959 Current Release: 11960 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11961 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11962 11963 119642) iASL Compiler/Disassembler and Tools: 11965 11966Disassembler: Implemented support to decode and format all non-AML ACPI 11967tables (tables other than DSDTs and SSDTs.) This includes the new tables 11968added to the ACPICA headers, therefore all current and known ACPI tables 11969are 11970supported. 11971 11972Disassembler: The change to allow ACPI names with invalid characters also 11973enables the disassembly of such tables. Invalid characters within names 11974are 11975changed to '*' to make the name printable; the iASL compiler will still 11976generate an error for such names, however, since this is an invalid ACPI 11977character. 11978 11979Implemented an option for AcpiXtract (-a) to extract all tables found in 11980the 11981input file. The default invocation extracts only the DSDTs and SSDTs. 11982 11983Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 11984makefile for the AcpiXtract utility. 11985 11986---------------------------------------- 1198717 March 2006. Summary of changes for version 20060317: 11988 119891) ACPI CA Core Subsystem: 11990 11991Implemented the use of a cache object for all internal namespace nodes. 11992Since there are about 1000 static nodes in a typical system, this will 11993decrease memory use for cache implementations that minimize per- 11994allocation 11995overhead (such as a slab allocator.) 11996 11997Removed the reference count mechanism for internal namespace nodes, since 11998it 11999was deemed unnecessary. This reduces the size of each namespace node by 12000about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 12001case, 12002and 32 bytes for the 64-bit case. 12003 12004Optimized several internal data structures to reduce object size on 64- 12005bit 12006platforms by packing data within the 64-bit alignment. This includes the 12007frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 12008instances corresponding to the namespace objects. 12009 12010Added two new strings for the predefined _OSI method: "Windows 2001.1 12011SP1" 12012and "Windows 2006". 12013 12014Split the allocation tracking mechanism out to a separate file, from 12015utalloc.c to uttrack.c. This mechanism appears to be only useful for 12016application-level code. Kernels may wish to not include uttrack.c in 12017distributions. 12018 12019Removed all remnants of the obsolete ACPI_REPORT_* macros and the 12020associated 12021code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 12022macros.) 12023 12024Code and Data Size: These are the sizes for the acpica.lib produced by 12025the 12026Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12027ACPI 12028driver or OSPM code. The debug version of the code includes the debug 12029output 12030trace mechanism and has a much larger code and data size. Note that these 12031values will vary depending on the efficiency of the compiler and the 12032compiler options used during generation. 12033 12034 Previous Release: 12035 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12036 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12037 Current Release: 12038 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12039 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12040 12041 120422) iASL Compiler/Disassembler and Tools: 12043 12044Implemented an ANSI C version of the acpixtract utility. This version 12045will 12046automatically extract the DSDT and all SSDTs from the input acpidump text 12047file and dump the binary output to separate files. It can also display a 12048summary of the input file including the headers for each table found and 12049will extract any single ACPI table, with any signature. (See 12050source/tools/acpixtract) 12051 12052---------------------------------------- 1205310 March 2006. Summary of changes for version 20060310: 12054 120551) ACPI CA Core Subsystem: 12056 12057Tagged all external interfaces to the subsystem with the new 12058ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 12059assist 12060kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 12061macro. The default definition is NULL. 12062 12063Added the ACPI_THREAD_ID type for the return value from 12064AcpiOsGetThreadId. 12065This allows the host to define this as necessary to simplify kernel 12066integration. The default definition is ACPI_NATIVE_UINT. 12067 12068Fixed two interpreter problems related to error processing, the deletion 12069of 12070objects, and placing invalid pointers onto the internal operator result 12071stack. BZ 6028, 6151 (Valery Podrezov) 12072 12073Increased the reference count threshold where a warning is emitted for 12074large 12075reference counts in order to eliminate unnecessary warnings on systems 12076with 12077large namespaces (especially 64-bit.) Increased the value from 0x400 to 120780x800. 12079 12080Due to universal disagreement as to the meaning of the 'c' in the 12081calloc() 12082function, the ACPI_MEM_CALLOCATE macro has been renamed to 12083ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 12084ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 12085ACPI_FREE. 12086 12087Code and Data Size: These are the sizes for the acpica.lib produced by 12088the 12089Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12090ACPI 12091driver or OSPM code. The debug version of the code includes the debug 12092output 12093trace mechanism and has a much larger code and data size. Note that these 12094values will vary depending on the efficiency of the compiler and the 12095compiler options used during generation. 12096 12097 Previous Release: 12098 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12099 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12100 Current Release: 12101 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12102 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12103 12104 121052) iASL Compiler/Disassembler: 12106 12107Disassembler: implemented support for symbolic resource descriptor 12108references. If a CreateXxxxField operator references a fixed offset 12109within 12110a 12111resource descriptor, a name is assigned to the descriptor and the offset 12112is 12113translated to the appropriate resource tag and pathname. The addition of 12114this support brings the disassembled code very close to the original ASL 12115source code and helps eliminate run-time errors when the disassembled 12116code 12117is modified (and recompiled) in such a way as to invalidate the original 12118fixed offsets. 12119 12120Implemented support for a Descriptor Name as the last parameter to the 12121ASL 12122Register() macro. This parameter was inadvertently left out of the ACPI 12123specification, and will be added for ACPI 3.0b. 12124 12125Fixed a problem where the use of the "_OSI" string (versus the full path 12126"\_OSI") caused an internal compiler error. ("No back ptr to op") 12127 12128Fixed a problem with the error message that occurs when an invalid string 12129is 12130used for a _HID object (such as one with an embedded asterisk: 12131"*PNP010A".) 12132The correct message is now displayed. 12133 12134---------------------------------------- 1213517 February 2006. Summary of changes for version 20060217: 12136 121371) ACPI CA Core Subsystem: 12138 12139Implemented a change to the IndexField support to match the behavior of 12140the 12141Microsoft AML interpreter. The value written to the Index register is now 12142a 12143byte offset, no longer an index based upon the width of the Data 12144register. 12145This should fix IndexField problems seen on some machines where the Data 12146register is not exactly one byte wide. The ACPI specification will be 12147clarified on this point. 12148 12149Fixed a problem where several resource descriptor types could overrun the 12150internal descriptor buffer due to size miscalculation: VendorShort, 12151VendorLong, and Interrupt. This was noticed on IA64 machines, but could 12152affect all platforms. 12153 12154Fixed a problem where individual resource descriptors were misaligned 12155within 12156the internal buffer, causing alignment faults on IA64 platforms. 12157 12158Code and Data Size: These are the sizes for the acpica.lib produced by 12159the 12160Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12161ACPI 12162driver or OSPM code. The debug version of the code includes the debug 12163output 12164trace mechanism and has a much larger code and data size. Note that these 12165values will vary depending on the efficiency of the compiler and the 12166compiler options used during generation. 12167 12168 Previous Release: 12169 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12170 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12171 Current Release: 12172 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12173 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12174 12175 121762) iASL Compiler/Disassembler: 12177 12178Implemented support for new reserved names: _WDG and _WED are Microsoft 12179extensions for Windows Instrumentation Management, _TDL is a new ACPI- 12180defined method (Throttling Depth Limit.) 12181 12182Fixed a problem where a zero-length VendorShort or VendorLong resource 12183descriptor was incorrectly emitted as a descriptor of length one. 12184 12185---------------------------------------- 1218610 February 2006. Summary of changes for version 20060210: 12187 121881) ACPI CA Core Subsystem: 12189 12190Removed a couple of extraneous ACPI_ERROR messages that appeared during 12191normal execution. These became apparent after the conversion from 12192ACPI_DEBUG_PRINT. 12193 12194Fixed a problem where the CreateField operator could hang if the BitIndex 12195or 12196NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 12197 12198Fixed a problem where a DeRefOf operation on a buffer object incorrectly 12199failed with an exception. This also fixes a couple of related RefOf and 12200DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 12201 12202Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 12203of 12204AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 12205BZ 122065480) 12207 12208Implemented a memory cleanup at the end of the execution of each 12209iteration 12210of an AML While() loop, preventing the accumulation of outstanding 12211objects. 12212(Valery Podrezov, BZ 5427) 12213 12214Eliminated a chunk of duplicate code in the object resolution code. 12215(Valery 12216Podrezov, BZ 5336) 12217 12218Fixed several warnings during the 64-bit code generation. 12219 12220The AcpiSrc source code conversion tool now inserts one line of 12221whitespace 12222after an if() statement that is followed immediately by a comment, 12223improving 12224readability of the Linux code. 12225 12226Code and Data Size: The current and previous library sizes for the core 12227subsystem are shown below. These are the code and data sizes for the 12228acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12229These 12230values do not include any ACPI driver or OSPM code. The debug version of 12231the 12232code includes the debug output trace mechanism and has a much larger code 12233and data size. Note that these values will vary depending on the 12234efficiency 12235of the compiler and the compiler options used during generation. 12236 12237 Previous Release: 12238 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12239 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12240 Current Release: 12241 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12242 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12243 12244 122452) iASL Compiler/Disassembler: 12246 12247Fixed a problem with the disassembly of a BankField operator with a 12248complex 12249expression for the BankValue parameter. 12250 12251---------------------------------------- 1225227 January 2006. Summary of changes for version 20060127: 12253 122541) ACPI CA Core Subsystem: 12255 12256Implemented support in the Resource Manager to allow unresolved 12257namestring 12258references within resource package objects for the _PRT method. This 12259support 12260is in addition to the previously implemented unresolved reference support 12261within the AML parser. If the interpreter slack mode is enabled, these 12262unresolved references will be passed through to the caller as a NULL 12263package 12264entry. 12265 12266Implemented and deployed new macros and functions for error and warning 12267messages across the subsystem. These macros are simpler and generate less 12268code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12269ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12270macros remain defined to allow ACPI drivers time to migrate to the new 12271macros. 12272 12273Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12274the 12275Acquire/Release Lock OSL interfaces. 12276 12277Fixed a problem where Alias ASL operators are sometimes not correctly 12278resolved, in both the interpreter and the iASL compiler. 12279 12280Fixed several problems with the implementation of the 12281ConcatenateResTemplate 12282ASL operator. As per the ACPI specification, zero length buffers are now 12283treated as a single EndTag. One-length buffers always cause a fatal 12284exception. Non-zero length buffers that do not end with a full 2-byte 12285EndTag 12286cause a fatal exception. 12287 12288Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12289interface. (With assistance from Thomas Renninger) 12290 12291Code and Data Size: The current and previous library sizes for the core 12292subsystem are shown below. These are the code and data sizes for the 12293acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12294These 12295values do not include any ACPI driver or OSPM code. The debug version of 12296the 12297code includes the debug output trace mechanism and has a much larger code 12298and data size. Note that these values will vary depending on the 12299efficiency 12300of the compiler and the compiler options used during generation. 12301 12302 Previous Release: 12303 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12304 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12305 Current Release: 12306 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12307 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12308 12309 123102) iASL Compiler/Disassembler: 12311 12312Fixed an internal error that was generated for any forward references to 12313ASL 12314Alias objects. 12315 12316---------------------------------------- 1231713 January 2006. Summary of changes for version 20060113: 12318 123191) ACPI CA Core Subsystem: 12320 12321Added 2006 copyright to all module headers and signons. This affects 12322virtually every file in the ACPICA core subsystem, iASL compiler, and the 12323utilities. 12324 12325Enhanced the ACPICA error reporting in order to simplify user migration 12326to 12327the non-debug version of ACPICA. Replaced all instances of the 12328ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12329debug 12330levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12331respectively. This preserves all error and warning messages in the non- 12332debug 12333version of the ACPICA code (this has been referred to as the "debug lite" 12334option.) Over 200 cases were converted to create a total of over 380 12335error/warning messages across the ACPICA code. This increases the code 12336and 12337data size of the default non-debug version of the code somewhat (about 1233813K), 12339but all error/warning reporting may be disabled if desired (and code 12340eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12341configuration option. The size of the debug version of ACPICA remains 12342about 12343the same. 12344 12345Fixed a memory leak within the AML Debugger "Set" command. One object was 12346not properly deleted for every successful invocation of the command. 12347 12348Code and Data Size: The current and previous library sizes for the core 12349subsystem are shown below. These are the code and data sizes for the 12350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12351These 12352values do not include any ACPI driver or OSPM code. The debug version of 12353the 12354code includes the debug output trace mechanism and has a much larger code 12355and data size. Note that these values will vary depending on the 12356efficiency 12357of the compiler and the compiler options used during generation. 12358 12359 Previous Release: 12360 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12361 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12362 Current Release: 12363 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12364 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12365 12366 123672) iASL Compiler/Disassembler: 12368 12369The compiler now officially supports the ACPI 3.0a specification that was 12370released on December 30, 2005. (Specification is available at 12371www.acpi.info) 12372 12373---------------------------------------- 1237416 December 2005. Summary of changes for version 20051216: 12375 123761) ACPI CA Core Subsystem: 12377 12378Implemented optional support to allow unresolved names within ASL Package 12379objects. A null object is inserted in the package when a named reference 12380cannot be located in the current namespace. Enabled via the interpreter 12381slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12382machines 12383that contain such code. 12384 12385Implemented an optimization to the initialization sequence that can 12386improve 12387boot time. During ACPI device initialization, the _STA method is now run 12388if 12389and only if the _INI method exists. The _STA method is used to determine 12390if 12391the device is present; An _INI can only be run if _STA returns present, 12392but 12393it is a waste of time to run the _STA method if the _INI does not exist. 12394(Prototype and assistance from Dong Wei) 12395 12396Implemented use of the C99 uintptr_t for the pointer casting macros if it 12397is 12398available in the current compiler. Otherwise, the default (void *) cast 12399is 12400used as before. 12401 12402Fixed some possible memory leaks found within the execution path of the 12403Break, Continue, If, and CreateField operators. (Valery Podrezov) 12404 12405Fixed a problem introduced in the 20051202 release where an exception is 12406generated during method execution if a control method attempts to declare 12407another method. 12408 12409Moved resource descriptor string constants that are used by both the AML 12410disassembler and AML debugger to the common utilities directory so that 12411these components are independent. 12412 12413Implemented support in the AcpiExec utility (-e switch) to globally 12414ignore 12415exceptions during control method execution (method is not aborted.) 12416 12417Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 12418generation. 12419 12420Code and Data Size: The current and previous library sizes for the core 12421subsystem are shown below. These are the code and data sizes for the 12422acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12423These 12424values do not include any ACPI driver or OSPM code. The debug version of 12425the 12426code includes the debug output trace mechanism and has a much larger code 12427and data size. Note that these values will vary depending on the 12428efficiency 12429of the compiler and the compiler options used during generation. 12430 12431 Previous Release: 12432 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12433 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12434 Current Release: 12435 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12436 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12437 12438 124392) iASL Compiler/Disassembler: 12440 12441Fixed a problem where a CPU stack overflow fault could occur if a 12442recursive 12443method call was made from within a Return statement. 12444 12445---------------------------------------- 1244602 December 2005. Summary of changes for version 20051202: 12447 124481) ACPI CA Core Subsystem: 12449 12450Modified the parsing of control methods to no longer create namespace 12451objects during the first pass of the parse. Objects are now created only 12452during the execute phase, at the moment the namespace creation operator 12453is 12454encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 12455This 12456should eliminate ALREADY_EXISTS exceptions seen on some machines where 12457reentrant control methods are protected by an AML mutex. The mutex will 12458now 12459correctly block multiple threads from attempting to create the same 12460object 12461more than once. 12462 12463Increased the number of available Owner Ids for namespace object tracking 12464from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 12465on 12466some machines with a large number of ACPI tables (either static or 12467dynamic). 12468 12469Fixed a problem with the AcpiExec utility where a fault could occur when 12470the 12471-b switch (batch mode) is used. 12472 12473Enhanced the namespace dump routine to output the owner ID for each 12474namespace object. 12475 12476Code and Data Size: The current and previous library sizes for the core 12477subsystem are shown below. These are the code and data sizes for the 12478acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12479These 12480values do not include any ACPI driver or OSPM code. The debug version of 12481the 12482code includes the debug output trace mechanism and has a much larger code 12483and data size. Note that these values will vary depending on the 12484efficiency 12485of the compiler and the compiler options used during generation. 12486 12487 Previous Release: 12488 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12489 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12490 Current Release: 12491 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12492 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12493 12494 124952) iASL Compiler/Disassembler: 12496 12497Fixed a parse error during compilation of certain Switch/Case constructs. 12498To 12499simplify the parse, the grammar now allows for multiple Default 12500statements 12501and this error is now detected and flagged during the analysis phase. 12502 12503Disassembler: The disassembly now includes the contents of the original 12504table header within a comment at the start of the file. This includes the 12505name and version of the original ASL compiler. 12506 12507---------------------------------------- 1250817 November 2005. Summary of changes for version 20051117: 12509 125101) ACPI CA Core Subsystem: 12511 12512Fixed a problem in the AML parser where the method thread count could be 12513decremented below zero if any errors occurred during the method parse 12514phase. 12515This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 12516machines. 12517This also fixed a related regression with the mechanism that detects and 12518corrects methods that cannot properly handle reentrancy (related to the 12519deployment of the new OwnerId mechanism.) 12520 12521Eliminated the pre-parsing of control methods (to detect errors) during 12522table load. Related to the problem above, this was causing unwind issues 12523if 12524any errors occurred during the parse, and it seemed to be overkill. A 12525table 12526load should not be aborted if there are problems with any single control 12527method, thus rendering this feature rather pointless. 12528 12529Fixed a problem with the new table-driven resource manager where an 12530internal 12531buffer overflow could occur for small resource templates. 12532 12533Implemented a new external interface, AcpiGetVendorResource. This 12534interface 12535will find and return a vendor-defined resource descriptor within a _CRS 12536or 12537_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 12538Helgaas. 12539 12540Removed the length limit (200) on string objects as per the upcoming ACPI 125413.0A specification. This affects the following areas of the interpreter: 125421) 12543any implicit conversion of a Buffer to a String, 2) a String object 12544result 12545of the ASL Concatenate operator, 3) the String object result of the ASL 12546ToString operator. 12547 12548Fixed a problem in the Windows OS interface layer (OSL) where a 12549WAIT_FOREVER 12550on a semaphore object would incorrectly timeout. This allows the 12551multithreading features of the AcpiExec utility to work properly under 12552Windows. 12553 12554Updated the Linux makefiles for the iASL compiler and AcpiExec to include 12555the recently added file named "utresrc.c". 12556 12557Code and Data Size: The current and previous library sizes for the core 12558subsystem are shown below. These are the code and data sizes for the 12559acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12560These 12561values do not include any ACPI driver or OSPM code. The debug version of 12562the 12563code includes the debug output trace mechanism and has a much larger code 12564and data size. Note that these values will vary depending on the 12565efficiency 12566of the compiler and the compiler options used during generation. 12567 12568 Previous Release: 12569 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12570 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12571 Current Release: 12572 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12573 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12574 12575 125762) iASL Compiler/Disassembler: 12577 12578Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 12579specification. For the iASL compiler, this means that string literals 12580within 12581the source ASL can be of any length. 12582 12583Enhanced the listing output to dump the AML code for resource descriptors 12584immediately after the ASL code for each descriptor, instead of in a block 12585at 12586the end of the entire resource template. 12587 12588Enhanced the compiler debug output to dump the entire original parse tree 12589constructed during the parse phase, before any transforms are applied to 12590the 12591tree. The transformed tree is dumped also. 12592 12593---------------------------------------- 1259402 November 2005. Summary of changes for version 20051102: 12595 125961) ACPI CA Core Subsystem: 12597 12598Modified the subsystem initialization sequence to improve GPE support. 12599The 12600GPE initialization has been split into two parts in order to defer 12601execution 12602of the _PRW methods (Power Resources for Wake) until after the hardware 12603is 12604fully initialized and the SCI handler is installed. This allows the _PRW 12605methods to access fields protected by the Global Lock. This will fix 12606systems 12607where a NO_GLOBAL_LOCK exception has been seen during initialization. 12608 12609Converted the ACPI internal object disassemble and display code within 12610the 12611AML debugger to fully table-driven operation, reducing code size and 12612increasing maintainability. 12613 12614Fixed a regression with the ConcatenateResTemplate() ASL operator 12615introduced 12616in the 20051021 release. 12617 12618Implemented support for "local" internal ACPI object types within the 12619debugger "Object" command and the AcpiWalkNamespace external interfaces. 12620These local types include RegionFields, BankFields, IndexFields, Alias, 12621and 12622reference objects. 12623 12624Moved common AML resource handling code into a new file, "utresrc.c". 12625This 12626code is shared by both the Resource Manager and the AML Debugger. 12627 12628Code and Data Size: The current and previous library sizes for the core 12629subsystem are shown below. These are the code and data sizes for the 12630acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12631These 12632values do not include any ACPI driver or OSPM code. The debug version of 12633the 12634code includes the debug output trace mechanism and has a much larger code 12635and data size. Note that these values will vary depending on the 12636efficiency 12637of the compiler and the compiler options used during generation. 12638 12639 Previous Release: 12640 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12641 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12642 Current Release: 12643 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12644 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12645 12646 126472) iASL Compiler/Disassembler: 12648 12649Fixed a problem with very large initializer lists (more than 4000 12650elements) 12651for both Buffer and Package objects where the parse stack could overflow. 12652 12653Enhanced the pre-compile source code scan for non-ASCII characters to 12654ignore 12655characters within comment fields. The scan is now always performed and is 12656no 12657longer optional, detecting invalid characters within a source file 12658immediately rather than during the parse phase or later. 12659 12660Enhanced the ASL grammar definition to force early reductions on all 12661list- 12662style grammar elements so that the overall parse stack usage is greatly 12663reduced. This should improve performance and reduce the possibility of 12664parse 12665stack overflow. 12666 12667Eliminated all reduce/reduce conflicts in the iASL parser generation. 12668Also, 12669with the addition of a %expected statement, the compiler generates from 12670source with no warnings. 12671 12672Fixed a possible segment fault in the disassembler if the input filename 12673does not contain a "dot" extension (Thomas Renninger). 12674 12675---------------------------------------- 1267621 October 2005. Summary of changes for version 20051021: 12677 126781) ACPI CA Core Subsystem: 12679 12680Implemented support for the EM64T and other x86-64 processors. This 12681essentially entails recognizing that these processors support non-aligned 12682memory transfers. Previously, all 64-bit processors were assumed to lack 12683hardware support for non-aligned transfers. 12684 12685Completed conversion of the Resource Manager to nearly full table-driven 12686operation. Specifically, the resource conversion code (convert AML to 12687internal format and the reverse) and the debug code to dump internal 12688resource descriptors are fully table-driven, reducing code and data size 12689and 12690improving maintainability. 12691 12692The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 12693word 12694on 64-bit processors instead of a fixed 32-bit word. (With assistance 12695from 12696Alexey Starikovskiy) 12697 12698Implemented support within the resource conversion code for the Type- 12699Specific byte within the various ACPI 3.0 *WordSpace macros. 12700 12701Fixed some issues within the resource conversion code for the type- 12702specific 12703flags for both Memory and I/O address resource descriptors. For Memory, 12704implemented support for the MTP and TTP flags. For I/O, split the TRS and 12705TTP flags into two separate fields. 12706 12707Code and Data Size: The current and previous library sizes for the core 12708subsystem are shown below. These are the code and data sizes for the 12709acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12710These 12711values do not include any ACPI driver or OSPM code. The debug version of 12712the 12713code includes the debug output trace mechanism and has a much larger code 12714and data size. Note that these values will vary depending on the 12715efficiency 12716of the compiler and the compiler options used during generation. 12717 12718 Previous Release: 12719 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12720 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12721 Current Release: 12722 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12723 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12724 12725 12726 127272) iASL Compiler/Disassembler: 12728 12729Relaxed a compiler restriction that disallowed a ResourceIndex byte if 12730the 12731corresponding ResourceSource string was not also present in a resource 12732descriptor declaration. This restriction caused problems with existing 12733AML/ASL code that includes the Index byte without the string. When such 12734AML 12735was disassembled, it could not be compiled without modification. Further, 12736the modified code created a resource template with a different size than 12737the 12738original, breaking code that used fixed offsets into the resource 12739template 12740buffer. 12741 12742Removed a recent feature of the disassembler to ignore a lone 12743ResourceIndex 12744byte. This byte is now emitted if present so that the exact AML can be 12745reproduced when the disassembled code is recompiled. 12746 12747Improved comments and text alignment for the resource descriptor code 12748emitted by the disassembler. 12749 12750Implemented disassembler support for the ACPI 3.0 AccessSize field within 12751a 12752Register() resource descriptor. 12753 12754---------------------------------------- 1275530 September 2005. Summary of changes for version 20050930: 12756 127571) ACPI CA Core Subsystem: 12758 12759Completed a major overhaul of the Resource Manager code - specifically, 12760optimizations in the area of the AML/internal resource conversion code. 12761The 12762code has been optimized to simplify and eliminate duplicated code, CPU 12763stack 12764use has been decreased by optimizing function parameters and local 12765variables, and naming conventions across the manager have been 12766standardized 12767for clarity and ease of maintenance (this includes function, parameter, 12768variable, and struct/typedef names.) The update may force changes in some 12769driver code, depending on how resources are handled by the host OS. 12770 12771All Resource Manager dispatch and information tables have been moved to a 12772single location for clarity and ease of maintenance. One new file was 12773created, named "rsinfo.c". 12774 12775The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 12776guarantee that the argument is not evaluated twice, making them less 12777prone 12778to macro side-effects. However, since there exists the possibility of 12779additional stack use if a particular compiler cannot optimize them (such 12780as 12781in the debug generation case), the original macros are optionally 12782available. 12783Note that some invocations of the return_VALUE macro may now cause size 12784mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 12785to 12786eliminate these. (From Randy Dunlap) 12787 12788Implemented a new mechanism to enable debug tracing for individual 12789control 12790methods. A new external interface, AcpiDebugTrace, is provided to enable 12791this mechanism. The intent is to allow the host OS to easily enable and 12792disable tracing for problematic control methods. This interface can be 12793easily exposed to a user or debugger interface if desired. See the file 12794psxface.c for details. 12795 12796AcpiUtCallocate will now return a valid pointer if a length of zero is 12797specified - a length of one is used and a warning is issued. This matches 12798the behavior of AcpiUtAllocate. 12799 12800Code and Data Size: The current and previous library sizes for the core 12801subsystem are shown below. These are the code and data sizes for the 12802acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12803These 12804values do not include any ACPI driver or OSPM code. The debug version of 12805the 12806code includes the debug output trace mechanism and has a much larger code 12807and data size. Note that these values will vary depending on the 12808efficiency 12809of the compiler and the compiler options used during generation. 12810 12811 Previous Release: 12812 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12813 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12814 Current Release: 12815 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12816 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12817 12818 128192) iASL Compiler/Disassembler: 12820 12821A remark is issued if the effective compile-time length of a package or 12822buffer is zero. Previously, this was a warning. 12823 12824---------------------------------------- 1282516 September 2005. Summary of changes for version 20050916: 12826 128271) ACPI CA Core Subsystem: 12828 12829Fixed a problem within the Resource Manager where support for the Generic 12830Register descriptor was not fully implemented. This descriptor is now 12831fully 12832recognized, parsed, disassembled, and displayed. 12833 12834Completely restructured the Resource Manager code to utilize table-driven 12835dispatch and lookup, eliminating many of the large switch() statements. 12836This 12837reduces overall subsystem code size and code complexity. Affects the 12838resource parsing and construction, disassembly, and debug dump output. 12839 12840Cleaned up and restructured the debug dump output for all resource 12841descriptors. Improved readability of the output and reduced code size. 12842 12843Fixed a problem where changes to internal data structures caused the 12844optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 12845 12846Code and Data Size: The current and previous library sizes for the core 12847subsystem are shown below. These are the code and data sizes for the 12848acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12849These 12850values do not include any ACPI driver or OSPM code. The debug version of 12851the 12852code includes the debug output trace mechanism and has a much larger code 12853and data size. Note that these values will vary depending on the 12854efficiency 12855of the compiler and the compiler options used during generation. 12856 12857 Previous Release: 12858 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12859 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12860 Current Release: 12861 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12862 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12863 12864 128652) iASL Compiler/Disassembler: 12866 12867Updated the disassembler to automatically insert an EndDependentFn() 12868macro 12869into the ASL stream if this macro is missing in the original AML code, 12870simplifying compilation of the resulting ASL module. 12871 12872Fixed a problem in the disassembler where a disassembled ResourceSource 12873string (within a large resource descriptor) was not surrounded by quotes 12874and 12875not followed by a comma, causing errors when the resulting ASL module was 12876compiled. Also, escape sequences within a ResourceSource string are now 12877handled correctly (especially "\\") 12878 12879---------------------------------------- 1288002 September 2005. Summary of changes for version 20050902: 12881 128821) ACPI CA Core Subsystem: 12883 12884Fixed a problem with the internal Owner ID allocation and deallocation 12885mechanisms for control method execution and recursive method invocation. 12886This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 12887messages seen on some systems. Recursive method invocation depth is 12888currently limited to 255. (Alexey Starikovskiy) 12889 12890Completely eliminated all vestiges of support for the "module-level 12891executable code" until this support is fully implemented and debugged. 12892This 12893should eliminate the NO_RETURN_VALUE exceptions seen during table load on 12894some systems that invoke this support. 12895 12896Fixed a problem within the resource manager code where the transaction 12897flags 12898for a 64-bit address descriptor were handled incorrectly in the type- 12899specific flag byte. 12900 12901Consolidated duplicate code within the address descriptor resource 12902manager 12903code, reducing overall subsystem code size. 12904 12905Fixed a fault when using the AML debugger "disassemble" command to 12906disassemble individual control methods. 12907 12908Removed references to the "release_current" directory within the Unix 12909release package. 12910 12911Code and Data Size: The current and previous core subsystem library sizes 12912are shown below. These are the code and data sizes for the acpica.lib 12913produced by the Microsoft Visual C++ 6.0 compiler. These values do not 12914include any ACPI driver or OSPM code. The debug version of the code 12915includes 12916the debug output trace mechanism and has a much larger code and data 12917size. 12918Note that these values will vary depending on the efficiency of the 12919compiler 12920and the compiler options used during generation. 12921 12922 Previous Release: 12923 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12924 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12925 Current Release: 12926 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12927 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12928 12929 129302) iASL Compiler/Disassembler: 12931 12932Implemented an error check for illegal duplicate values in the interrupt 12933and 12934dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 12935Interrupt(). 12936 12937Implemented error checking for the Irq() and IrqNoFlags() macros to 12938detect 12939too many values in the interrupt list (16 max) and invalid values in the 12940list (range 0 - 15) 12941 12942The maximum length string literal within an ASL file is now restricted to 12943200 characters as per the ACPI specification. 12944 12945Fixed a fault when using the -ln option (generate namespace listing). 12946 12947Implemented an error check to determine if a DescriptorName within a 12948resource descriptor has already been used within the current scope. 12949 12950---------------------------------------- 1295115 August 2005. Summary of changes for version 20050815: 12952 129531) ACPI CA Core Subsystem: 12954 12955Implemented a full bytewise compare to determine if a table load request 12956is 12957attempting to load a duplicate table. The compare is performed if the 12958table 12959signatures and table lengths match. This will allow different tables with 12960the same OEM Table ID and revision to be loaded - probably against the 12961ACPI 12962specification, but discovered in the field nonetheless. 12963 12964Added the changes.txt logfile to each of the zipped release packages. 12965 12966Code and Data Size: Current and previous core subsystem library sizes are 12967shown below. These are the code and data sizes for the acpica.lib 12968produced 12969by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12970any ACPI driver or OSPM code. The debug version of the code includes the 12971debug output trace mechanism and has a much larger code and data size. 12972Note 12973that these values will vary depending on the efficiency of the compiler 12974and 12975the compiler options used during generation. 12976 12977 Previous Release: 12978 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12979 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12980 Current Release: 12981 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12982 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12983 12984 129852) iASL Compiler/Disassembler: 12986 12987Fixed a problem where incorrect AML code could be generated for Package 12988objects if optimization is disabled (via the -oa switch). 12989 12990Fixed a problem with where incorrect AML code is generated for variable- 12991length packages when the package length is not specified and the number 12992of 12993initializer values is greater than 255. 12994 12995 12996---------------------------------------- 1299729 July 2005. Summary of changes for version 20050729: 12998 129991) ACPI CA Core Subsystem: 13000 13001Implemented support to ignore an attempt to install/load a particular 13002ACPI 13003table more than once. Apparently there exists BIOS code that repeatedly 13004attempts to load the same SSDT upon certain events. With assistance from 13005Venkatesh Pallipadi. 13006 13007Restructured the main interface to the AML parser in order to correctly 13008handle all exceptional conditions. This will prevent leakage of the 13009OwnerId 13010resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 13011some 13012machines. With assistance from Alexey Starikovskiy. 13013 13014Support for "module level code" has been disabled in this version due to 13015a 13016number of issues that have appeared on various machines. The support can 13017be 13018enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 13019compilation. When the issues are fully resolved, the code will be enabled 13020by 13021default again. 13022 13023Modified the internal functions for debug print support to define the 13024FunctionName parameter as a (const char *) for compatibility with 13025compiler 13026built-in macros such as __FUNCTION__, etc. 13027 13028Linted the entire ACPICA source tree for both 32-bit and 64-bit. 13029 13030Implemented support to display an object count summary for the AML 13031Debugger 13032commands Object and Methods. 13033 13034Code and Data Size: Current and previous core subsystem library sizes are 13035shown below. These are the code and data sizes for the acpica.lib 13036produced 13037by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13038any ACPI driver or OSPM code. The debug version of the code includes the 13039debug output trace mechanism and has a much larger code and data size. 13040Note 13041that these values will vary depending on the efficiency of the compiler 13042and 13043the compiler options used during generation. 13044 13045 Previous Release: 13046 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13047 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13048 Current Release: 13049 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13050 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13051 13052 130532) iASL Compiler/Disassembler: 13054 13055Fixed a regression that appeared in the 20050708 version of the compiler 13056where an error message was inadvertently emitted for invocations of the 13057_OSI 13058reserved control method. 13059 13060---------------------------------------- 1306108 July 2005. Summary of changes for version 20050708: 13062 130631) ACPI CA Core Subsystem: 13064 13065The use of the CPU stack in the debug version of the subsystem has been 13066considerably reduced. Previously, a debug structure was declared in every 13067function that used the debug macros. This structure has been removed in 13068favor of declaring the individual elements as parameters to the debug 13069functions. This reduces the cumulative stack use during nested execution 13070of 13071ACPI function calls at the cost of a small increase in the code size of 13072the 13073debug version of the subsystem. With assistance from Alexey Starikovskiy 13074and 13075Len Brown. 13076 13077Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 13078headers to define a macro that will return the current function name at 13079runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 13080by 13081the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 13082compiler-dependent header, the function name is saved on the CPU stack 13083(one 13084pointer per function.) This mechanism is used because apparently there 13085exists no standard ANSI-C defined macro that that returns the function 13086name. 13087 13088Redesigned and reimplemented the "Owner ID" mechanism used to track 13089namespace objects created/deleted by ACPI tables and control method 13090execution. A bitmap is now used to allocate and free the IDs, thus 13091solving 13092the wraparound problem present in the previous implementation. The size 13093of 13094the namespace node descriptor was reduced by 2 bytes as a result (Alexey 13095Starikovskiy). 13096 13097Removed the UINT32_BIT and UINT16_BIT types that were used for the 13098bitfield 13099flag definitions within the headers for the predefined ACPI tables. These 13100have been replaced by UINT8_BIT in order to increase the code portability 13101of 13102the subsystem. If the use of UINT8 remains a problem, we may be forced to 13103eliminate bitfields entirely because of a lack of portability. 13104 13105Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 13106This 13107is a frequently used function and this improvement increases the 13108performance 13109of the entire subsystem (Alexey Starikovskiy). 13110 13111Fixed several possible memory leaks and the inverse - premature object 13112deletion (Alexey Starikovskiy). 13113 13114Code and Data Size: Current and previous core subsystem library sizes are 13115shown below. These are the code and data sizes for the acpica.lib 13116produced 13117by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13118any ACPI driver or OSPM code. The debug version of the code includes the 13119debug output trace mechanism and has a much larger code and data size. 13120Note 13121that these values will vary depending on the efficiency of the compiler 13122and 13123the compiler options used during generation. 13124 13125 Previous Release: 13126 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13127 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13128 Current Release: 13129 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13130 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13131 13132---------------------------------------- 1313324 June 2005. Summary of changes for version 20050624: 13134 131351) ACPI CA Core Subsystem: 13136 13137Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 13138the host-defined cache object. This allows the OSL implementation to 13139define 13140and type this object in any manner desired, simplifying the OSL 13141implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 13142Linux, and should be defined in the OS-specific header file for other 13143operating systems as required. 13144 13145Changed the interface to AcpiOsAcquireObject to directly return the 13146requested object as the function return (instead of ACPI_STATUS.) This 13147change was made for performance reasons, since this is the purpose of the 13148interface in the first place. AcpiOsAcquireObject is now similar to the 13149AcpiOsAllocate interface. 13150 13151Implemented a new AML debugger command named Businfo. This command 13152displays 13153information about all devices that have an associate _PRT object. The 13154_ADR, 13155_HID, _UID, and _CID are displayed for these devices. 13156 13157Modified the initialization sequence in AcpiInitializeSubsystem to call 13158the 13159OSL interface AcpiOslInitialize first, before any local initialization. 13160This 13161change was required because the global initialization now calls OSL 13162interfaces. 13163 13164Enhanced the Dump command to display the entire contents of Package 13165objects 13166(including all sub-objects and their values.) 13167 13168Restructured the code base to split some files because of size and/or 13169because the code logically belonged in a separate file. New files are 13170listed 13171below. All makefiles and project files included in the ACPI CA release 13172have 13173been updated. 13174 utilities/utcache.c /* Local cache interfaces */ 13175 utilities/utmutex.c /* Local mutex support */ 13176 utilities/utstate.c /* State object support */ 13177 interpreter/parser/psloop.c /* Main AML parse loop */ 13178 13179Code and Data Size: Current and previous core subsystem library sizes are 13180shown below. These are the code and data sizes for the acpica.lib 13181produced 13182by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13183any ACPI driver or OSPM code. The debug version of the code includes the 13184debug output trace mechanism and has a much larger code and data size. 13185Note 13186that these values will vary depending on the efficiency of the compiler 13187and 13188the compiler options used during generation. 13189 13190 Previous Release: 13191 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13192 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13193 Current Release: 13194 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13195 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13196 13197 131982) iASL Compiler/Disassembler: 13199 13200Fixed a regression introduced in version 20050513 where the use of a 13201Package 13202object within a Case() statement caused a compile time exception. The 13203original behavior has been restored (a Match() operator is emitted.) 13204 13205---------------------------------------- 1320617 June 2005. Summary of changes for version 20050617: 13207 132081) ACPI CA Core Subsystem: 13209 13210Moved the object cache operations into the OS interface layer (OSL) to 13211allow 13212the host OS to handle these operations if desired (for example, the Linux 13213OSL will invoke the slab allocator). This support is optional; the 13214compile 13215time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 13216cache 13217code in the ACPI CA core. The new OSL interfaces are shown below. See 13218utalloc.c for an example implementation, and acpiosxf.h for the exact 13219interface definitions. With assistance from Alexey Starikovskiy. 13220 AcpiOsCreateCache 13221 AcpiOsDeleteCache 13222 AcpiOsPurgeCache 13223 AcpiOsAcquireObject 13224 AcpiOsReleaseObject 13225 13226Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 13227return 13228and restore a flags parameter. This fits better with many OS lock models. 13229Note: the current execution state (interrupt handler or not) is no longer 13230passed to these interfaces. If necessary, the OSL must determine this 13231state 13232by itself, a simple and fast operation. With assistance from Alexey 13233Starikovskiy. 13234 13235Fixed a problem in the ACPI table handling where a valid XSDT was assumed 13236present if the revision of the RSDP was 2 or greater. According to the 13237ACPI 13238specification, the XSDT is optional in all cases, and the table manager 13239therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 13240Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 13241contain 13242only the RSDT. 13243 13244Fixed an interpreter problem with the Mid() operator in the case of an 13245input 13246string where the resulting output string is of zero length. It now 13247correctly 13248returns a valid, null terminated string object instead of a string object 13249with a null pointer. 13250 13251Fixed a problem with the control method argument handling to allow a 13252store 13253to an Arg object that already contains an object of type Device. The 13254Device 13255object is now correctly overwritten. Previously, an error was returned. 13256 13257 13258Enhanced the debugger Find command to emit object values in addition to 13259the 13260found object pathnames. The output format is the same as the dump 13261namespace 13262command. 13263 13264Enhanced the debugger Set command. It now has the ability to set the 13265value 13266of any Named integer object in the namespace (Previously, only method 13267locals 13268and args could be set.) 13269 13270Code and Data Size: Current and previous core subsystem library sizes are 13271shown below. These are the code and data sizes for the acpica.lib 13272produced 13273by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13274any ACPI driver or OSPM code. The debug version of the code includes the 13275debug output trace mechanism and has a much larger code and data size. 13276Note 13277that these values will vary depending on the efficiency of the compiler 13278and 13279the compiler options used during generation. 13280 13281 Previous Release: 13282 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13283 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13284 Current Release: 13285 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13286 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13287 13288 132892) iASL Compiler/Disassembler: 13290 13291Fixed a regression in the disassembler where if/else/while constructs 13292were 13293output incorrectly. This problem was introduced in the previous release 13294(20050526). This problem also affected the single-step disassembly in the 13295debugger. 13296 13297Fixed a problem where compiling the reserved _OSI method would randomly 13298(but 13299rarely) produce compile errors. 13300 13301Enhanced the disassembler to emit compilable code in the face of 13302incorrect 13303AML resource descriptors. If the optional ResourceSourceIndex is present, 13304but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13305disassembly. Otherwise, the resulting code cannot be compiled without 13306errors. 13307 13308---------------------------------------- 1330926 May 2005. Summary of changes for version 20050526: 13310 133111) ACPI CA Core Subsystem: 13312 13313Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13314the module level (not within a control method.) These opcodes are 13315executed 13316exactly once at the time the table is loaded. This type of code was legal 13317up 13318until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13319in 13320order to provide backwards compatibility with earlier BIOS 13321implementations. 13322This eliminates the "Encountered executable code at module level" warning 13323that was previously generated upon detection of such code. 13324 13325Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13326inadvertently be generated during the lookup of namespace objects in the 13327second pass parse of ACPI tables and control methods. It appears that 13328this 13329problem could occur during the resolution of forward references to 13330namespace 13331objects. 13332 13333Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13334corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13335allows the deadlock detection debug code to be compiled out in the normal 13336case, improving mutex performance (and overall subsystem performance) 13337considerably. 13338 13339Implemented a handful of miscellaneous fixes for possible memory leaks on 13340error conditions and error handling control paths. These fixes were 13341suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13342 13343Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13344(tbxfroot.c) 13345to prevent a fault in this error case. 13346 13347Code and Data Size: Current and previous core subsystem library sizes are 13348shown below. These are the code and data sizes for the acpica.lib 13349produced 13350by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13351any ACPI driver or OSPM code. The debug version of the code includes the 13352debug output trace mechanism and has a much larger code and data size. 13353Note 13354that these values will vary depending on the efficiency of the compiler 13355and 13356the compiler options used during generation. 13357 13358 Previous Release: 13359 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13360 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13361 Current Release: 13362 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13363 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13364 13365 133662) iASL Compiler/Disassembler: 13367 13368Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13369the module level (not within a control method.) These operators will be 13370executed once at the time the table is loaded. This type of code was 13371legal 13372up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13373compiler in order to provide backwards compatibility with earlier BIOS 13374ASL 13375code. 13376 13377The ACPI integer width (specified via the table revision ID or the -r 13378override, 32 or 64 bits) is now used internally during compile-time 13379constant 13380folding to ensure that constants are truncated to 32 bits if necessary. 13381Previously, the revision ID value was only emitted in the AML table 13382header. 13383 13384An error message is now generated for the Mutex and Method operators if 13385the 13386SyncLevel parameter is outside the legal range of 0 through 15. 13387 13388Fixed a problem with the Method operator ParameterTypes list handling 13389(ACPI 133903.0). Previously, more than 2 types or 2 arguments generated a syntax 13391error. 13392The actual underlying implementation of method argument typechecking is 13393still under development, however. 13394 13395---------------------------------------- 1339613 May 2005. Summary of changes for version 20050513: 13397 133981) ACPI CA Core Subsystem: 13399 13400Implemented support for PCI Express root bridges -- added support for 13401device 13402PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 13403 13404The interpreter now automatically truncates incoming 64-bit constants to 1340532 13406bits if currently executing out of a 32-bit ACPI table (Revision < 2). 13407This 13408also affects the iASL compiler constant folding. (Note: as per below, the 13409iASL compiler no longer allows 64-bit constants within 32-bit tables.) 13410 13411Fixed a problem where string and buffer objects with "static" pointers 13412(pointers to initialization data within an ACPI table) were not handled 13413consistently. The internal object copy operation now always copies the 13414data 13415to a newly allocated buffer, regardless of whether the source object is 13416static or not. 13417 13418Fixed a problem with the FromBCD operator where an implicit result 13419conversion was improperly performed while storing the result to the 13420target 13421operand. Since this is an "explicit conversion" operator, the implicit 13422conversion should never be performed on the output. 13423 13424Fixed a problem with the CopyObject operator where a copy to an existing 13425named object did not always completely overwrite the existing object 13426stored 13427at name. Specifically, a buffer-to-buffer copy did not delete the 13428existing 13429buffer. 13430 13431Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 13432and 13433structs for consistency. 13434 13435Code and Data Size: Current and previous core subsystem library sizes are 13436shown below. These are the code and data sizes for the acpica.lib 13437produced 13438by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13439any ACPI driver or OSPM code. The debug version of the code includes the 13440debug output trace mechanism and has a much larger code and data size. 13441Note 13442that these values will vary depending on the efficiency of the compiler 13443and 13444the compiler options used during generation. 13445 13446 Previous Release: 13447 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13448 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13449 Current Release: (Same sizes) 13450 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13451 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13452 13453 134542) iASL Compiler/Disassembler: 13455 13456The compiler now emits a warning if an attempt is made to generate a 64- 13457bit 13458integer constant from within a 32-bit ACPI table (Revision < 2). The 13459integer 13460is truncated to 32 bits. 13461 13462Fixed a problem with large package objects: if the static length of the 13463package is greater than 255, the "variable length package" opcode is 13464emitted. Previously, this caused an error. This requires an update to the 13465ACPI spec, since it currently (incorrectly) states that packages larger 13466than 13467255 elements are not allowed. 13468 13469The disassembler now correctly handles variable length packages and 13470packages 13471larger than 255 elements. 13472 13473---------------------------------------- 1347408 April 2005. Summary of changes for version 20050408: 13475 134761) ACPI CA Core Subsystem: 13477 13478Fixed three cases in the interpreter where an "index" argument to an ASL 13479function was still (internally) 32 bits instead of the required 64 bits. 13480This was the Index argument to the Index, Mid, and Match operators. 13481 13482The "strupr" function is now permanently local (AcpiUtStrupr), since this 13483is 13484not a POSIX-defined function and not present in most kernel-level C 13485libraries. All references to the C library strupr function have been 13486removed 13487from the headers. 13488 13489Completed the deployment of static functions/prototypes. All prototypes 13490with 13491the static attribute have been moved from the headers to the owning C 13492file. 13493 13494Implemented an extract option (-e) for the AcpiBin utility (AML binary 13495utility). This option allows the utility to extract individual ACPI 13496tables 13497from the output of AcpiDmp. It provides the same functionality of the 13498acpixtract.pl perl script without the worry of setting the correct perl 13499options. AcpiBin runs on Windows and has not yet been generated/validated 13500in 13501the Linux/Unix environment (but should be soon). 13502 13503Updated and fixed the table dump option for AcpiBin (-d). This option 13504converts a single ACPI table to a hex/ascii file, similar to the output 13505of 13506AcpiDmp. 13507 13508Code and Data Size: Current and previous core subsystem library sizes are 13509shown below. These are the code and data sizes for the acpica.lib 13510produced 13511by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13512any ACPI driver or OSPM code. The debug version of the code includes the 13513debug output trace mechanism and has a much larger code and data size. 13514Note 13515that these values will vary depending on the efficiency of the compiler 13516and 13517the compiler options used during generation. 13518 13519 Previous Release: 13520 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13521 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13522 Current Release: 13523 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13524 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13525 13526 135272) iASL Compiler/Disassembler: 13528 13529Disassembler fix: Added a check to ensure that the table length found in 13530the 13531ACPI table header within the input file is not longer than the actual 13532input 13533file size. This indicates some kind of file or table corruption. 13534 13535---------------------------------------- 1353629 March 2005. Summary of changes for version 20050329: 13537 135381) ACPI CA Core Subsystem: 13539 13540An error is now generated if an attempt is made to create a Buffer Field 13541of 13542length zero (A CreateField with a length operand of zero.) 13543 13544The interpreter now issues a warning whenever executable code at the 13545module 13546level is detected during ACPI table load. This will give some idea of the 13547prevalence of this type of code. 13548 13549Implemented support for references to named objects (other than control 13550methods) within package objects. 13551 13552Enhanced package object output for the debug object. Package objects are 13553now 13554completely dumped, showing all elements. 13555 13556Enhanced miscellaneous object output for the debug object. Any object can 13557now be written to the debug object (for example, a device object can be 13558written, and the type of the object will be displayed.) 13559 13560The "static" qualifier has been added to all local functions across both 13561the 13562core subsystem and the iASL compiler. 13563 13564The number of "long" lines (> 80 chars) within the source has been 13565significantly reduced, by about 1/3. 13566 13567Cleaned up all header files to ensure that all CA/iASL functions are 13568prototyped (even static functions) and the formatting is consistent. 13569 13570Two new header files have been added, acopcode.h and acnames.h. 13571 13572Removed several obsolete functions that were no longer used. 13573 13574Code and Data Size: Current and previous core subsystem library sizes are 13575shown below. These are the code and data sizes for the acpica.lib 13576produced 13577by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13578any ACPI driver or OSPM code. The debug version of the code includes the 13579debug output trace mechanism and has a much larger code and data size. 13580Note 13581that these values will vary depending on the efficiency of the compiler 13582and 13583the compiler options used during generation. 13584 13585 Previous Release: 13586 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13587 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13588 Current Release: 13589 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13590 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13591 13592 13593 135942) iASL Compiler/Disassembler: 13595 13596Fixed a problem with the resource descriptor generation/support. For the 13597ResourceSourceIndex and the ResourceSource fields, both must be present, 13598or 13599both must be not present - can't have one without the other. 13600 13601The compiler now returns non-zero from the main procedure if any errors 13602have 13603occurred during the compilation. 13604 13605 13606---------------------------------------- 1360709 March 2005. Summary of changes for version 20050309: 13608 136091) ACPI CA Core Subsystem: 13610 13611The string-to-buffer implicit conversion code has been modified again 13612after 13613a change to the ACPI specification. In order to match the behavior of 13614the 13615other major ACPI implementation, the target buffer is no longer truncated 13616if 13617the source string is smaller than an existing target buffer. This change 13618requires an update to the ACPI spec, and should eliminate the recent 13619AE_AML_BUFFER_LIMIT issues. 13620 13621The "implicit return" support was rewritten to a new algorithm that 13622solves 13623the general case. Rather than attempt to determine when a method is about 13624to 13625exit, the result of every ASL operator is saved momentarily until the 13626very 13627next ASL operator is executed. Therefore, no matter how the method exits, 13628there will always be a saved implicit return value. This feature is only 13629enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 13630eliminate 13631AE_AML_NO_RETURN_VALUE errors when enabled. 13632 13633Implemented implicit conversion support for the predicate (operand) of 13634the 13635If, Else, and While operators. String and Buffer arguments are 13636automatically 13637converted to Integers. 13638 13639Changed the string-to-integer conversion behavior to match the new ACPI 13640errata: "If no integer object exists, a new integer is created. The ASCII 13641string is interpreted as a hexadecimal constant. Each string character is 13642interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 13643with the first character as the most significant digit, and ending with 13644the 13645first non-hexadecimal character or end-of-string." This means that the 13646first 13647non-hex character terminates the conversion and this is the code that was 13648changed. 13649 13650Fixed a problem where the ObjectType operator would fail (fault) when 13651used 13652on an Index of a Package which pointed to a null package element. The 13653operator now properly returns zero (Uninitialized) in this case. 13654 13655Fixed a problem where the While operator used excessive memory by not 13656properly popping the result stack during execution. There was no memory 13657leak 13658after execution, however. (Code provided by Valery Podrezov.) 13659 13660Fixed a problem where references to control methods within Package 13661objects 13662caused the method to be invoked, instead of producing a reference object 13663pointing to the method. 13664 13665Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 13666to 13667improve performance and reduce code size. (Code provided by Alexey 13668Starikovskiy.) 13669 13670Code and Data Size: Current and previous core subsystem library sizes are 13671shown below. These are the code and data sizes for the acpica.lib 13672produced 13673by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13674any ACPI driver or OSPM code. The debug version of the code includes the 13675debug output trace mechanism and has a much larger code and data size. 13676Note 13677that these values will vary depending on the efficiency of the compiler 13678and 13679the compiler options used during generation. 13680 13681 Previous Release: 13682 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13683 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13684 Current Release: 13685 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13686 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13687 13688 136892) iASL Compiler/Disassembler: 13690 13691Fixed a problem with the Return operator with no arguments. Since the AML 13692grammar for the byte encoding requires an operand for the Return opcode, 13693the 13694compiler now emits a Return(Zero) for this case. An ACPI specification 13695update has been written for this case. 13696 13697For tables other than the DSDT, namepath optimization is automatically 13698disabled. This is because SSDTs can be loaded anywhere in the namespace, 13699the 13700compiler has no knowledge of where, and thus cannot optimize namepaths. 13701 13702Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 13703inadvertently omitted from the ACPI specification, and will require an 13704update to the spec. 13705 13706The source file scan for ASCII characters is now optional (-a). This 13707change 13708was made because some vendors place non-ascii characters within comments. 13709However, the scan is simply a brute-force byte compare to ensure all 13710characters in the file are in the range 0x00 to 0x7F. 13711 13712Fixed a problem with the CondRefOf operator where the compiler was 13713inappropriately checking for the existence of the target. Since the point 13714of 13715the operator is to check for the existence of the target at run-time, the 13716compiler no longer checks for the target existence. 13717 13718Fixed a problem where errors generated from the internal AML interpreter 13719during constant folding were not handled properly, causing a fault. 13720 13721Fixed a problem with overly aggressive range checking for the Stall 13722operator. The valid range (max 255) is now only checked if the operand is 13723of 13724type Integer. All other operand types cannot be statically checked. 13725 13726Fixed a problem where control method references within the RefOf, 13727DeRefOf, 13728and ObjectType operators were not treated properly. They are now treated 13729as 13730actual references, not method invocations. 13731 13732Fixed and enhanced the "list namespace" option (-ln). This option was 13733broken 13734a number of releases ago. 13735 13736Improved error handling for the Field, IndexField, and BankField 13737operators. 13738The compiler now cleanly reports and recovers from errors in the field 13739component (FieldUnit) list. 13740 13741Fixed a disassembler problem where the optional ResourceDescriptor fields 13742TRS and TTP were not always handled correctly. 13743 13744Disassembler - Comments in output now use "//" instead of "/*" 13745 13746---------------------------------------- 1374728 February 2005. Summary of changes for version 20050228: 13748 137491) ACPI CA Core Subsystem: 13750 13751Fixed a problem where the result of an Index() operator (an object 13752reference) must increment the reference count on the target object for 13753the 13754life of the object reference. 13755 13756Implemented AML Interpreter and Debugger support for the new ACPI 3.0 13757Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 13758WordSpace 13759resource descriptors. 13760 13761Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 13762Space Descriptor" string, indicating interpreter support for the 13763descriptors 13764above. 13765 13766Implemented header support for the new ACPI 3.0 FADT flag bits. 13767 13768Implemented header support for the new ACPI 3.0 PCI Express bits for the 13769PM1 13770status/enable registers. 13771 13772Updated header support for the MADT processor local Apic struct and MADT 13773platform interrupt source struct for new ACPI 3.0 fields. 13774 13775Implemented header support for the SRAT and SLIT ACPI tables. 13776 13777Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 13778flag 13779at runtime. 13780 13781Code and Data Size: Current and previous core subsystem library sizes are 13782shown below. These are the code and data sizes for the acpica.lib 13783produced 13784by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13785any ACPI driver or OSPM code. The debug version of the code includes the 13786debug output trace mechanism and has a much larger code and data size. 13787Note 13788that these values will vary depending on the efficiency of the compiler 13789and 13790the compiler options used during generation. 13791 13792 Previous Release: 13793 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13794 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13795 Current Release: 13796 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13797 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13798 13799 138002) iASL Compiler/Disassembler: 13801 13802Fixed a problem with the internal 64-bit String-to-integer conversion 13803with 13804strings less than two characters long. 13805 13806Fixed a problem with constant folding where the result of the Index() 13807operator can not be considered a constant. This means that Index() cannot 13808be 13809a type3 opcode and this will require an update to the ACPI specification. 13810 13811Disassembler: Implemented support for the TTP, MTP, and TRS resource 13812descriptor fields. These fields were inadvertently ignored and not output 13813in 13814the disassembly of the resource descriptor. 13815 13816 13817 ---------------------------------------- 1381811 February 2005. Summary of changes for version 20050211: 13819 138201) ACPI CA Core Subsystem: 13821 13822Implemented ACPI 3.0 support for implicit conversion within the Match() 13823operator. MatchObjects can now be of type integer, buffer, or string 13824instead 13825of just type integer. Package elements are implicitly converted to the 13826type 13827of the MatchObject. This change aligns the behavior of Match() with the 13828behavior of the other logical operators (LLess(), etc.) It also requires 13829an 13830errata change to the ACPI specification as this support was intended for 13831ACPI 3.0, but was inadvertently omitted. 13832 13833Fixed a problem with the internal implicit "to buffer" conversion. 13834Strings 13835that are converted to buffers will cause buffer truncation if the string 13836is 13837smaller than the target buffer. Integers that are converted to buffers 13838will 13839not cause buffer truncation, only zero extension (both as per the ACPI 13840spec.) The problem was introduced when code was added to truncate the 13841buffer, but this should not be performed in all cases, only the string 13842case. 13843 13844Fixed a problem with the Buffer and Package operators where the 13845interpreter 13846would get confused if two such operators were used as operands to an ASL 13847operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 13848stack was not being popped after the execution of these operators, 13849resulting 13850in an AE_NO_RETURN_VALUE exception. 13851 13852Fixed a problem with constructs of the form Store(Index(...),...). The 13853reference object returned from Index was inadvertently resolved to an 13854actual 13855value. This problem was introduced in version 20050114 when the behavior 13856of 13857Store() was modified to restrict the object types that can be used as the 13858source operand (to match the ACPI specification.) 13859 13860Reduced excessive stack use within the AcpiGetObjectInfo procedure. 13861 13862Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 13863 13864Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 13865 13866Code and Data Size: Current and previous core subsystem library sizes are 13867shown below. These are the code and data sizes for the acpica.lib 13868produced 13869by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13870any ACPI driver or OSPM code. The debug version of the code includes the 13871debug output trace mechanism and has a much larger code and data size. 13872Note 13873that these values will vary depending on the efficiency of the compiler 13874and 13875the compiler options used during generation. 13876 13877 Previous Release: 13878 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13879 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13880 Current Release: 13881 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13882 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13883 13884 138852) iASL Compiler/Disassembler: 13886 13887Fixed a code generation problem in the constant folding optimization code 13888where incorrect code was generated if a constant was reduced to a buffer 13889object (i.e., a reduced type 5 opcode.) 13890 13891Fixed a typechecking problem for the ToBuffer operator. Caused by an 13892incorrect return type in the internal opcode information table. 13893 13894---------------------------------------- 1389525 January 2005. Summary of changes for version 20050125: 13896 138971) ACPI CA Core Subsystem: 13898 13899Fixed a recently introduced problem with the Global Lock where the 13900underlying semaphore was not created. This problem was introduced in 13901version 20050114, and caused an AE_AML_NO_OPERAND exception during an 13902Acquire() operation on _GL. 13903 13904The local object cache is now optional, and is disabled by default. Both 13905AcpiExec and the iASL compiler enable the cache because they run in user 13906mode and this enhances their performance. #define 13907ACPI_ENABLE_OBJECT_CACHE 13908to enable the local cache. 13909 13910Fixed an issue in the internal function AcpiUtEvaluateObject concerning 13911the 13912optional "implicit return" support where an error was returned if no 13913return 13914object was expected, but one was implicitly returned. AE_OK is now 13915returned 13916in this case and the implicitly returned object is deleted. 13917AcpiUtEvaluateObject is only occasionally used, and only to execute 13918reserved 13919methods such as _STA and _INI where the return type is known up front. 13920 13921Fixed a few issues with the internal convert-to-integer code. It now 13922returns 13923an error if an attempt is made to convert a null string, a string of only 13924blanks/tabs, or a zero-length buffer. This affects both implicit 13925conversion 13926and explicit conversion via the ToInteger() operator. 13927 13928The internal debug code in AcpiUtAcquireMutex has been commented out. It 13929is 13930not needed for normal operation and should increase the performance of 13931the 13932entire subsystem. The code remains in case it is needed for debug 13933purposes 13934again. 13935 13936The AcpiExec source and makefile are included in the Unix/Linux package 13937for 13938the first time. 13939 13940Code and Data Size: Current and previous core subsystem library sizes are 13941shown below. These are the code and data sizes for the acpica.lib 13942produced 13943by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13944any ACPI driver or OSPM code. The debug version of the code includes the 13945debug output trace mechanism and has a much larger code and data size. 13946Note 13947that these values will vary depending on the efficiency of the compiler 13948and 13949the compiler options used during generation. 13950 13951 Previous Release: 13952 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13953 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13954 Current Release: 13955 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13956 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13957 139582) iASL Compiler/Disassembler: 13959 13960Switch/Case support: A warning is now issued if the type of the Switch 13961value 13962cannot be determined at compile time. For example, Switch(Arg0) will 13963generate the warning, and the type is assumed to be an integer. As per 13964the 13965ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 13966the 13967warning. 13968 13969Switch/Case support: Implemented support for buffer and string objects as 13970the switch value. This is an ACPI 3.0 feature, now that LEqual supports 13971buffers and strings. 13972 13973Switch/Case support: The emitted code for the LEqual() comparisons now 13974uses 13975the switch value as the first operand, not the second. The case value is 13976now 13977the second operand, and this allows the case value to be implicitly 13978converted to the type of the switch value, not the other way around. 13979 13980Switch/Case support: Temporary variables are now emitted immediately 13981within 13982the control method, not at the global level. This means that there are 13983now 1398436 temps available per-method, not 36 temps per-module as was the case 13985with 13986the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 13987 13988---------------------------------------- 1398914 January 2005. Summary of changes for version 20050114: 13990 13991Added 2005 copyright to all module headers. This affects every module in 13992the core subsystem, iASL compiler, and the utilities. 13993 139941) ACPI CA Core Subsystem: 13995 13996Fixed an issue with the String-to-Buffer conversion code where the string 13997null terminator was not included in the buffer after conversion, but 13998there 13999is existing ASL that assumes the string null terminator is included. This 14000is 14001the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 14002introduced in the previous version when the code was updated to correctly 14003set the converted buffer size as per the ACPI specification. The ACPI 14004spec 14005is ambiguous and will be updated to specify that the null terminator must 14006be 14007included in the converted buffer. This also affects the ToBuffer() ASL 14008operator. 14009 14010Fixed a problem with the Mid() ASL/AML operator where it did not work 14011correctly on Buffer objects. Newly created sub-buffers were not being 14012marked 14013as initialized. 14014 14015 14016Fixed a problem in AcpiTbFindTable where incorrect string compares were 14017performed on the OemId and OemTableId table header fields. These fields 14018are 14019not null terminated, so strncmp is now used instead of strcmp. 14020 14021Implemented a restriction on the Store() ASL/AML operator to align the 14022behavior with the ACPI specification. Previously, any object could be 14023used 14024as the source operand. Now, the only objects that may be used are 14025Integers, 14026Buffers, Strings, Packages, Object References, and DDB Handles. If 14027necessary, the original behavior can be restored by enabling the 14028EnableInterpreterSlack flag. 14029 14030Enhanced the optional "implicit return" support to allow an implicit 14031return 14032value from methods that are invoked externally via the AcpiEvaluateObject 14033interface. This enables implicit returns from the _STA and _INI methods, 14034for example. 14035 14036Changed the Revision() ASL/AML operator to return the current version of 14037the 14038AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 14039returned 14040the supported ACPI version (This is the function of the _REV method). 14041 14042Updated the _REV predefined method to return the currently supported 14043version 14044of ACPI, now 3. 14045 14046Implemented batch mode option for the AcpiExec utility (-b). 14047 14048Code and Data Size: Current and previous core subsystem library sizes are 14049shown below. These are the code and data sizes for the acpica.lib 14050produced 14051by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14052any ACPI driver or OSPM code. The debug version of the code includes the 14053debug output trace mechanism and has a much larger code and data size. 14054Note 14055that these values will vary depending on the efficiency of the compiler 14056and 14057the compiler options used during generation. 14058 14059 Previous Release: 14060 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14061 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14062 Current Release: 14063 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14064 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14065 14066---------------------------------------- 1406710 December 2004. Summary of changes for version 20041210: 14068 14069ACPI 3.0 support is nearing completion in both the iASL compiler and the 14070ACPI CA core subsystem. 14071 140721) ACPI CA Core Subsystem: 14073 14074Fixed a problem in the ToDecimalString operator where the resulting 14075string 14076length was incorrectly calculated. The length is now calculated exactly, 14077eliminating incorrect AE_STRING_LIMIT exceptions. 14078 14079Fixed a problem in the ToHexString operator to allow a maximum 200 14080character 14081string to be produced. 14082 14083Fixed a problem in the internal string-to-buffer and buffer-to-buffer 14084copy 14085routine where the length of the resulting buffer was not truncated to the 14086new size (if the target buffer already existed). 14087 14088Code and Data Size: Current and previous core subsystem library sizes are 14089shown below. These are the code and data sizes for the acpica.lib 14090produced 14091by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14092any ACPI driver or OSPM code. The debug version of the code includes the 14093debug output trace mechanism and has a much larger code and data size. 14094Note 14095that these values will vary depending on the efficiency of the compiler 14096and 14097the compiler options used during generation. 14098 14099 Previous Release: 14100 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14101 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14102 Current Release: 14103 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14104 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14105 14106 141072) iASL Compiler/Disassembler: 14108 14109Implemented the new ACPI 3.0 resource template macros - DWordSpace, 14110ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 14111Includes support in the disassembler. 14112 14113Implemented support for the new (ACPI 3.0) parameter to the Register 14114macro, 14115AccessSize. 14116 14117Fixed a problem where the _HE resource name for the Interrupt macro was 14118referencing bit 0 instead of bit 1. 14119 14120Implemented check for maximum 255 interrupts in the Interrupt macro. 14121 14122Fixed a problem with the predefined resource descriptor names where 14123incorrect AML code was generated if the offset within the resource buffer 14124was 0 or 1. The optimizer shortened the AML code to a single byte opcode 14125but did not update the surrounding package lengths. 14126 14127Changes to the Dma macro: All channels within the channel list must be 14128in 14129the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 14130optional (default is BusMaster). 14131 14132Implemented check for maximum 7 data bytes for the VendorShort macro. 14133 14134The ReadWrite parameter is now optional for the Memory32 and similar 14135macros. 14136 14137---------------------------------------- 1413803 December 2004. Summary of changes for version 20041203: 14139 141401) ACPI CA Core Subsystem: 14141 14142The low-level field insertion/extraction code (exfldio) has been 14143completely 14144rewritten to eliminate unnecessary complexity, bugs, and boundary 14145conditions. 14146 14147Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 14148ToDecimalString 14149operators where the input operand could be inadvertently deleted if no 14150conversion was necessary (e.g., if the input to ToInteger was an Integer 14151object.) 14152 14153Fixed a problem with the ToDecimalString and ToHexString where an 14154incorrect 14155exception code was returned if the resulting string would be > 200 chars. 14156AE_STRING_LIMIT is now returned. 14157 14158Fixed a problem with the Concatenate operator where AE_OK was always 14159returned, even if the operation failed. 14160 14161Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 14162semaphores to be allocated. 14163 14164Code and Data Size: Current and previous core subsystem library sizes are 14165shown below. These are the code and data sizes for the acpica.lib 14166produced 14167by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14168any ACPI driver or OSPM code. The debug version of the code includes the 14169debug output trace mechanism and has a much larger code and data size. 14170Note 14171that these values will vary depending on the efficiency of the compiler 14172and 14173the compiler options used during generation. 14174 14175 Previous Release: 14176 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14177 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14178 Current Release: 14179 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14180 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14181 14182 141832) iASL Compiler/Disassembler: 14184 14185Fixed typechecking for the ObjectType and SizeOf operators. Problem was 14186recently introduced in 20041119. 14187 14188Fixed a problem with the ToUUID macro where the upper nybble of each 14189buffer 14190byte was inadvertently set to zero. 14191 14192---------------------------------------- 1419319 November 2004. Summary of changes for version 20041119: 14194 141951) ACPI CA Core Subsystem: 14196 14197Fixed a problem in the internal ConvertToInteger routine where new 14198integers 14199were not truncated to 32 bits for 32-bit ACPI tables. This routine 14200converts 14201buffers and strings to integers. 14202 14203Implemented support to store a value to an Index() on a String object. 14204This 14205is an ACPI 2.0 feature that had not yet been implemented. 14206 14207Implemented new behavior for storing objects to individual package 14208elements 14209(via the Index() operator). The previous behavior was to invoke the 14210implicit 14211conversion rules if an object was already present at the index. The new 14212behavior is to simply delete any existing object and directly store the 14213new 14214object. Although the ACPI specification seems unclear on this subject, 14215other 14216ACPI implementations behave in this manner. (This is the root of the 14217AE_BAD_HEX_CONSTANT issue.) 14218 14219Modified the RSDP memory scan mechanism to support the extended checksum 14220for 14221ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 14222RSDP signature is found with a valid checksum. 14223 14224Code and Data Size: Current and previous core subsystem library sizes are 14225shown below. These are the code and data sizes for the acpica.lib 14226produced 14227by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14228any ACPI driver or OSPM code. The debug version of the code includes the 14229debug output trace mechanism and has a much larger code and data size. 14230Note 14231that these values will vary depending on the efficiency of the compiler 14232and 14233the compiler options used during generation. 14234 14235 Previous Release: 14236 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14237 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14238 Current Release: 14239 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14240 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14241 14242 142432) iASL Compiler/Disassembler: 14244 14245Fixed a missing semicolon in the aslcompiler.y file. 14246 14247---------------------------------------- 1424805 November 2004. Summary of changes for version 20041105: 14249 142501) ACPI CA Core Subsystem: 14251 14252Implemented support for FADT revision 2. This was an interim table 14253(between 14254ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 14255 14256Implemented optional support to allow uninitialized LocalX and ArgX 14257variables in a control method. The variables are initialized to an 14258Integer 14259object with a value of zero. This support is enabled by setting the 14260AcpiGbl_EnableInterpreterSlack flag to TRUE. 14261 14262Implemented support for Integer objects for the SizeOf operator. Either 142634 14264or 8 is returned, depending on the current integer size (32-bit or 64- 14265bit, 14266depending on the parent table revision). 14267 14268Fixed a problem in the implementation of the SizeOf and ObjectType 14269operators 14270where the operand was resolved to a value too early, causing incorrect 14271return values for some objects. 14272 14273Fixed some possible memory leaks during exceptional conditions. 14274 14275Code and Data Size: Current and previous core subsystem library sizes are 14276shown below. These are the code and data sizes for the acpica.lib 14277produced 14278by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14279any ACPI driver or OSPM code. The debug version of the code includes the 14280debug output trace mechanism and has a much larger code and data size. 14281Note 14282that these values will vary depending on the efficiency of the compiler 14283and 14284the compiler options used during generation. 14285 14286 Previous Release: 14287 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14288 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14289 Current Release: 14290 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14291 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14292 14293 142942) iASL Compiler/Disassembler: 14295 14296Implemented support for all ACPI 3.0 reserved names and methods. 14297 14298Implemented all ACPI 3.0 grammar elements in the front-end, including 14299support for semicolons. 14300 14301Implemented the ACPI 3.0 Function() and ToUUID() macros 14302 14303Fixed a problem in the disassembler where a Scope() operator would not be 14304emitted properly if the target of the scope was in another table. 14305 14306---------------------------------------- 1430715 October 2004. Summary of changes for version 20041015: 14308 14309Note: ACPI CA is currently undergoing an in-depth and complete formal 14310evaluation to test/verify the following areas. Other suggestions are 14311welcome. This will result in an increase in the frequency of releases and 14312the number of bug fixes in the next few months. 14313 - Functional tests for all ASL/AML operators 14314 - All implicit/explicit type conversions 14315 - Bit fields and operation regions 14316 - 64-bit math support and 32-bit-only "truncated" math support 14317 - Exceptional conditions, both compiler and interpreter 14318 - Dynamic object deletion and memory leaks 14319 - ACPI 3.0 support when implemented 14320 - External interfaces to the ACPI subsystem 14321 14322 143231) ACPI CA Core Subsystem: 14324 14325Fixed two alignment issues on 64-bit platforms - within debug statements 14326in 14327AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14328Address 14329field within the non-aligned ACPI generic address structure. 14330 14331Fixed a problem in the Increment and Decrement operators where incorrect 14332operand resolution could result in the inadvertent modification of the 14333original integer when the integer is passed into another method as an 14334argument and the arg is then incremented/decremented. 14335 14336Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14337bit 14338BCD number were truncated during conversion. 14339 14340Fixed a problem in the ToDecimal operator where the length of the 14341resulting 14342string could be set incorrectly too long if the input operand was a 14343Buffer 14344object. 14345 14346Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14347(0) 14348within a buffer would prematurely terminate a compare between buffer 14349objects. 14350 14351Added a check for string overflow (>200 characters as per the ACPI 14352specification) during the Concatenate operator with two string operands. 14353 14354Code and Data Size: Current and previous core subsystem library sizes are 14355shown below. These are the code and data sizes for the acpica.lib 14356produced 14357by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14358any ACPI driver or OSPM code. The debug version of the code includes the 14359debug output trace mechanism and has a much larger code and data size. 14360Note 14361that these values will vary depending on the efficiency of the compiler 14362and 14363the compiler options used during generation. 14364 14365 Previous Release: 14366 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14367 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14368 Current Release: 14369 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14370 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14371 14372 14373 143742) iASL Compiler/Disassembler: 14375 14376Allow the use of the ObjectType operator on uninitialized Locals and Args 14377(returns 0 as per the ACPI specification). 14378 14379Fixed a problem where the compiler would fault if there was a syntax 14380error 14381in the FieldName of all of the various CreateXXXField operators. 14382 14383Disallow the use of lower case letters within the EISAID macro, as per 14384the 14385ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14386Where 14387U is an uppercase letter and N is a hex digit. 14388 14389 14390---------------------------------------- 1439106 October 2004. Summary of changes for version 20041006: 14392 143931) ACPI CA Core Subsystem: 14394 14395Implemented support for the ACPI 3.0 Timer operator. This ASL function 14396implements a 64-bit timer with 100 nanosecond granularity. 14397 14398Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 14399implement the ACPI 3.0 Timer operator. This allows the host OS to 14400implement 14401the timer with the best clock available. Also, it keeps the core 14402subsystem 14403out of the clock handling business, since the host OS (usually) performs 14404this function. 14405 14406Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 14407functions use a 64-bit address which is part of the packed ACPI Generic 14408Address Structure. Since the structure is non-aligned, the alignment 14409macros 14410are now used to extract the address to a local variable before use. 14411 14412Fixed a problem where the ToInteger operator assumed all input strings 14413were 14414hexadecimal. The operator now handles both decimal strings and hex 14415strings 14416(prefixed with "0x"). 14417 14418Fixed a problem where the string length in the string object created as a 14419result of the internal ConvertToString procedure could be incorrect. This 14420potentially affected all implicit conversions and also the 14421ToDecimalString 14422and ToHexString operators. 14423 14424Fixed two problems in the ToString operator. If the length parameter was 14425zero, an incorrect string object was created and the value of the input 14426length parameter was inadvertently changed from zero to Ones. 14427 14428Fixed a problem where the optional ResourceSource string in the 14429ExtendedIRQ 14430resource macro was ignored. 14431 14432Simplified the interfaces to the internal division functions, reducing 14433code 14434size and complexity. 14435 14436Code and Data Size: Current and previous core subsystem library sizes are 14437shown below. These are the code and data sizes for the acpica.lib 14438produced 14439by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14440any ACPI driver or OSPM code. The debug version of the code includes the 14441debug output trace mechanism and has a much larger code and data size. 14442Note 14443that these values will vary depending on the efficiency of the compiler 14444and 14445the compiler options used during generation. 14446 14447 Previous Release: 14448 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14449 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14450 Current Release: 14451 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14452 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14453 14454 144552) iASL Compiler/Disassembler: 14456 14457Implemented support for the ACPI 3.0 Timer operator. 14458 14459Fixed a problem where the Default() operator was inadvertently ignored in 14460a 14461Switch/Case block. This was a problem in the translation of the Switch 14462statement to If...Else pairs. 14463 14464Added support to allow a standalone Return operator, with no parentheses 14465(or 14466operands). 14467 14468Fixed a problem with code generation for the ElseIf operator where the 14469translated Else...If parse tree was improperly constructed leading to the 14470loss of some code. 14471 14472---------------------------------------- 1447322 September 2004. Summary of changes for version 20040922: 14474 144751) ACPI CA Core Subsystem: 14476 14477Fixed a problem with the implementation of the LNot() operator where 14478"Ones" 14479was not returned for the TRUE case. Changed the code to return Ones 14480instead 14481of (!Arg) which was usually 1. This change affects iASL constant folding 14482for 14483this operator also. 14484 14485Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 14486not 14487initialized properly -- Now zero the entire buffer in this case where the 14488buffer already exists. 14489 14490Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 14491Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 14492related code considerably. This will require changes/updates to all OS 14493interface layers (OSLs.) 14494 14495Implemented a new external interface, AcpiInstallExceptionHandler, to 14496allow 14497a system exception handler to be installed. This handler is invoked upon 14498any 14499run-time exception that occurs during control method execution. 14500 14501Added support for the DSDT in AcpiTbFindTable. This allows the 14502DataTableRegion() operator to access the local copy of the DSDT. 14503 14504Code and Data Size: Current and previous core subsystem library sizes are 14505shown below. These are the code and data sizes for the acpica.lib 14506produced 14507by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14508any ACPI driver or OSPM code. The debug version of the code includes the 14509debug output trace mechanism and has a much larger code and data size. 14510Note 14511that these values will vary depending on the efficiency of the compiler 14512and 14513the compiler options used during generation. 14514 14515 Previous Release: 14516 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14517 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14518 Current Release: 14519 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14520 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14521 14522 145232) iASL Compiler/Disassembler: 14524 14525Fixed a problem with constant folding and the LNot operator. LNot was 14526returning 1 in the TRUE case, not Ones as per the ACPI specification. 14527This 14528could result in the generation of an incorrect folded/reduced constant. 14529 14530End-Of-File is now allowed within a "//"-style comment. A parse error no 14531longer occurs if such a comment is at the very end of the input ASL 14532source 14533file. 14534 14535Implemented the "-r" option to override the Revision in the table header. 14536The initial use of this option will be to simplify the evaluation of the 14537AML 14538interpreter by allowing a single ASL source module to be compiled for 14539either 1454032-bit or 64-bit integers. 14541 14542 14543---------------------------------------- 1454427 August 2004. Summary of changes for version 20040827: 14545 145461) ACPI CA Core Subsystem: 14547 14548- Implemented support for implicit object conversion in the non-numeric 14549logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 14550and 14551LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 14552the second operand is implicitly converted on the fly to match the type 14553of 14554the first operand. For example: 14555 14556 LEqual (Source1, Source2) 14557 14558Source1 and Source2 must each evaluate to an integer, a string, or a 14559buffer. 14560The data type of Source1 dictates the required type of Source2. Source2 14561is 14562implicitly converted if necessary to match the type of Source1. 14563 14564- Updated and corrected the behavior of the string conversion support. 14565The 14566rules concerning conversion of buffers to strings (according to the ACPI 14567specification) are as follows: 14568 14569ToDecimalString - explicit byte-wise conversion of buffer to string of 14570decimal values (0-255) separated by commas. ToHexString - explicit byte- 14571wise 14572conversion of buffer to string of hex values (0-FF) separated by commas. 14573ToString - explicit byte-wise conversion of buffer to string. Byte-by- 14574byte 14575copy with no transform except NULL terminated. Any other implicit buffer- 14576to- 14577string conversion - byte-wise conversion of buffer to string of hex 14578values 14579(0-FF) separated by spaces. 14580 14581- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 14582 14583- Fixed a problem in AcpiNsGetPathnameLength where the returned length 14584was 14585one byte too short in the case of a node in the root scope. This could 14586cause a fault during debug output. 14587 14588- Code and Data Size: Current and previous core subsystem library sizes 14589are 14590shown below. These are the code and data sizes for the acpica.lib 14591produced 14592by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14593any ACPI driver or OSPM code. The debug version of the code includes the 14594debug output trace mechanism and has a much larger code and data size. 14595Note 14596that these values will vary depending on the efficiency of the compiler 14597and 14598the compiler options used during generation. 14599 14600 Previous Release: 14601 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14602 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14603 Current Release: 14604 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14605 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14606 14607 146082) iASL Compiler/Disassembler: 14609 14610- Fixed a Linux generation error. 14611 14612 14613---------------------------------------- 1461416 August 2004. Summary of changes for version 20040816: 14615 146161) ACPI CA Core Subsystem: 14617 14618Designed and implemented support within the AML interpreter for the so- 14619called "implicit return". This support returns the result of the last 14620ASL 14621operation within a control method, in the absence of an explicit Return() 14622operator. A few machines depend on this behavior, even though it is not 14623explicitly supported by the ASL language. It is optional support that 14624can 14625be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 14626 14627Removed support for the PCI_Config address space from the internal low 14628level 14629hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 14630support was not used internally, and would not work correctly anyway 14631because 14632the PCI bus number and segment number were not supported. There are 14633separate interfaces for PCI configuration space access because of the 14634unique 14635interface. 14636 14637Code and Data Size: Current and previous core subsystem library sizes are 14638shown below. These are the code and data sizes for the acpica.lib 14639produced 14640by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14641any ACPI driver or OSPM code. The debug version of the code includes the 14642debug output trace mechanism and has a much larger code and data size. 14643Note 14644that these values will vary depending on the efficiency of the compiler 14645and 14646the compiler options used during generation. 14647 14648 Previous Release: 14649 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14650 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14651 Current Release: 14652 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14653 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14654 14655 146562) iASL Compiler/Disassembler: 14657 14658Fixed a problem where constants in ASL expressions at the root level (not 14659within a control method) could be inadvertently truncated during code 14660generation. This problem was introduced in the 20040715 release. 14661 14662 14663---------------------------------------- 1466415 July 2004. Summary of changes for version 20040715: 14665 146661) ACPI CA Core Subsystem: 14667 14668Restructured the internal HW GPE interfaces to pass/track the current 14669state 14670of interrupts (enabled/disabled) in order to avoid possible deadlock and 14671increase flexibility of the interfaces. 14672 14673Implemented a "lexicographical compare" for String and Buffer objects 14674within 14675the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 14676- 14677as per further clarification to the ACPI specification. Behavior is 14678similar 14679to C library "strcmp". 14680 14681Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 14682external function. In the 32-bit non-debug case, the stack use has been 14683reduced from 168 bytes to 32 bytes. 14684 14685Deployed a new run-time configuration flag, 14686AcpiGbl_EnableInterpreterSlack, 14687whose purpose is to allow the AML interpreter to forgive certain bad AML 14688constructs. Default setting is FALSE. 14689 14690Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 14691IO 14692support code. If enabled, it allows field access to go beyond the end of 14693a 14694region definition if the field is within the region length rounded up to 14695the 14696next access width boundary (a common coding error.) 14697 14698Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 14699ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 14700these 14701symbols are lowercase by the latest version of the AcpiSrc tool. 14702 14703The prototypes for the PCI interfaces in acpiosxf.h have been updated to 14704rename "Register" to simply "Reg" to prevent certain compilers from 14705complaining. 14706 14707Code and Data Size: Current and previous core subsystem library sizes are 14708shown below. These are the code and data sizes for the acpica.lib 14709produced 14710by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14711any ACPI driver or OSPM code. The debug version of the code includes the 14712debug output trace mechanism and has a much larger code and data size. 14713Note 14714that these values will vary depending on the efficiency of the compiler 14715and 14716the compiler options used during generation. 14717 14718 Previous Release: 14719 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14720 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14721 Current Release: 14722 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14723 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14724 14725 147262) iASL Compiler/Disassembler: 14727 14728Implemented full support for Package objects within the Case() operator. 14729Note: The Break() operator is currently not supported within Case blocks 14730(TermLists) as there is some question about backward compatibility with 14731ACPI 147321.0 interpreters. 14733 14734 14735Fixed a problem where complex terms were not supported properly within 14736the 14737Switch() operator. 14738 14739Eliminated extraneous warning for compiler-emitted reserved names of the 14740form "_T_x". (Used in Switch/Case operators.) 14741 14742Eliminated optimization messages for "_T_x" objects and small constants 14743within the DefinitionBlock operator. 14744 14745 14746---------------------------------------- 1474715 June 2004. Summary of changes for version 20040615: 14748 147491) ACPI CA Core Subsystem: 14750 14751Implemented support for Buffer and String objects (as per ACPI 2.0) for 14752the 14753following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14754LLessEqual. 14755 14756All directory names in the entire source package are lower case, as they 14757were in earlier releases. 14758 14759Implemented "Disassemble" command in the AML debugger that will 14760disassemble 14761a single control method. 14762 14763Code and Data Size: Current and previous core subsystem library sizes are 14764shown below. These are the code and data sizes for the acpica.lib 14765produced 14766by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14767any ACPI driver or OSPM code. The debug version of the code includes the 14768debug output trace mechanism and has a much larger code and data size. 14769Note 14770that these values will vary depending on the efficiency of the compiler 14771and 14772the compiler options used during generation. 14773 14774 Previous Release: 14775 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14776 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14777 14778 Current Release: 14779 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14780 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14781 14782 147832) iASL Compiler/Disassembler: 14784 14785Implemented support for Buffer and String objects (as per ACPI 2.0) for 14786the 14787following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14788LLessEqual. 14789 14790All directory names in the entire source package are lower case, as they 14791were in earlier releases. 14792 14793Fixed a fault when using the -g or -d<nofilename> options if the FADT was 14794not found. 14795 14796Fixed an issue with the Windows version of the compiler where later 14797versions 14798of Windows place the FADT in the registry under the name "FADT" and not 14799"FACP" as earlier versions did. This applies when using the -g or - 14800d<nofilename> options. The compiler now looks for both strings as 14801necessary. 14802 14803Fixed a problem with compiler namepath optimization where a namepath 14804within 14805the Scope() operator could not be optimized if the namepath was a subpath 14806of 14807the current scope path. 14808 14809---------------------------------------- 1481027 May 2004. Summary of changes for version 20040527: 14811 148121) ACPI CA Core Subsystem: 14813 14814Completed a new design and implementation for EBDA (Extended BIOS Data 14815Area) 14816support in the RSDP scan code. The original code improperly scanned for 14817the 14818EBDA by simply scanning from memory location 0 to 0x400. The correct 14819method 14820is to first obtain the EBDA pointer from within the BIOS data area, then 14821scan 1K of memory starting at the EBDA pointer. There appear to be few 14822if 14823any machines that place the RSDP in the EBDA, however. 14824 14825Integrated a fix for a possible fault during evaluation of BufferField 14826arguments. Obsolete code that was causing the problem was removed. 14827 14828Found and fixed a problem in the Field Support Code where data could be 14829corrupted on a bit field read that starts on an aligned boundary but does 14830not end on an aligned boundary. Merged the read/write "datum length" 14831calculation code into a common procedure. 14832 14833Rolled in a couple of changes to the FreeBSD-specific header. 14834 14835 14836Code and Data Size: Current and previous core subsystem library sizes are 14837shown below. These are the code and data sizes for the acpica.lib 14838produced 14839by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14840any ACPI driver or OSPM code. The debug version of the code includes the 14841debug output trace mechanism and has a much larger code and data size. 14842Note 14843that these values will vary depending on the efficiency of the compiler 14844and 14845the compiler options used during generation. 14846 14847 Previous Release: 14848 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14849 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14850 Current Release: 14851 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14852 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14853 14854 148552) iASL Compiler/Disassembler: 14856 14857Fixed a generation warning produced by some overly-verbose compilers for 14858a 1485964-bit constant. 14860 14861---------------------------------------- 1486214 May 2004. Summary of changes for version 20040514: 14863 148641) ACPI CA Core Subsystem: 14865 14866Fixed a problem where hardware GPE enable bits sometimes not set properly 14867during and after GPE method execution. Result of 04/27 changes. 14868 14869Removed extra "clear all GPEs" when sleeping/waking. 14870 14871Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 14872AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 14873to 14874the new AcpiEv* calls as appropriate. 14875 14876ACPI_OS_NAME was removed from the OS-specific headers. The default name 14877is 14878now "Microsoft Windows NT" for maximum compatibility. However this can 14879be 14880changed by modifying the acconfig.h file. 14881 14882Allow a single invocation of AcpiInstallNotifyHandler for a handler that 14883traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 14884 14885Run _INI methods on ThermalZone objects. This is against the ACPI 14886specification, but there is apparently ASL code in the field that has 14887these 14888_INI methods, and apparently "other" AML interpreters execute them. 14889 14890Performed a full 16/32/64 bit lint that resulted in some small changes. 14891 14892Added a sleep simulation command to the AML debugger to test sleep code. 14893 14894Code and Data Size: Current and previous core subsystem library sizes are 14895shown below. These are the code and data sizes for the acpica.lib 14896produced 14897by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14898any ACPI driver or OSPM code. The debug version of the code includes the 14899debug output trace mechanism and has a much larger code and data size. 14900Note 14901that these values will vary depending on the efficiency of the compiler 14902and 14903the compiler options used during generation. 14904 14905 Previous Release: 14906 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14907 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14908 Current Release: 14909 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14910 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14911 14912---------------------------------------- 1491327 April 2004. Summary of changes for version 20040427: 14914 149151) ACPI CA Core Subsystem: 14916 14917Completed a major overhaul of the GPE handling within ACPI CA. There are 14918now three types of GPEs: wake-only, runtime-only, and combination 14919wake/run. 14920The only GPEs allowed to be combination wake/run are for button-style 14921devices such as a control-method power button, control-method sleep 14922button, 14923or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 14924not 14925referenced by any _PRW methods are marked for "runtime" and hardware 14926enabled. Any GPE that is referenced by a _PRW method is marked for 14927"wake" 14928(and disabled at runtime). However, at sleep time, only those GPEs that 14929have been specifically enabled for wake via the AcpiEnableGpe interface 14930will 14931actually be hardware enabled. 14932 14933A new external interface has been added, AcpiSetGpeType(), that is meant 14934to 14935be used by device drivers to force a GPE to a particular type. It will 14936be 14937especially useful for the drivers for the button devices mentioned above. 14938 14939Completed restructuring of the ACPI CA initialization sequence so that 14940default operation region handlers are installed before GPEs are 14941initialized 14942and the _PRW methods are executed. This will prevent errors when the 14943_PRW 14944methods attempt to access system memory or I/O space. 14945 14946GPE enable/disable no longer reads the GPE enable register. We now keep 14947the 14948enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 14949thus no longer depend on the hardware to maintain these bits. 14950 14951Always clear the wake status and fixed/GPE status bits before sleep, even 14952for state S5. 14953 14954Improved the AML debugger output for displaying the GPE blocks and their 14955current status. 14956 14957Added new strings for the _OSI method, of the form "Windows 2001 SPx" 14958where 14959x = 0,1,2,3,4. 14960 14961Fixed a problem where the physical address was incorrectly calculated 14962when 14963the Load() operator was used to directly load from an Operation Region 14964(vs. 14965loading from a Field object.) Also added check for minimum table length 14966for 14967this case. 14968 14969Fix for multiple mutex acquisition. Restore original thread SyncLevel on 14970mutex release. 14971 14972Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 14973consistency with the other fields returned. 14974 14975Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 14976structure for each GPE in the system, so the size of this structure is 14977important. 14978 14979CPU stack requirement reduction: Cleaned up the method execution and 14980object 14981evaluation paths so that now a parameter structure is passed, instead of 14982copying the various method parameters over and over again. 14983 14984In evregion.c: Correctly exit and reenter the interpreter region if and 14985only if dispatching an operation region request to a user-installed 14986handler. 14987Do not exit/reenter when dispatching to a default handler (e.g., default 14988system memory or I/O handlers) 14989 14990 14991Notes for updating drivers for the new GPE support. The following 14992changes 14993must be made to ACPI-related device drivers that are attached to one or 14994more 14995GPEs: (This information will be added to the ACPI CA Programmer 14996Reference.) 14997 149981) AcpiInstallGpeHandler no longer automatically enables the GPE, you 14999must 15000explicitly call AcpiEnableGpe. 150012) There is a new interface called AcpiSetGpeType. This should be called 15002before enabling the GPE. Also, this interface will automatically disable 15003the GPE if it is currently enabled. 150043) AcpiEnableGpe no longer supports a GPE type flag. 15005 15006Specific drivers that must be changed: 150071) EC driver: 15008 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 15009AeGpeHandler, NULL); 15010 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 15011 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 15012 150132) Button Drivers (Power, Lid, Sleep): 15014Run _PRW method under parent device 15015If _PRW exists: /* This is a control-method button */ 15016 Extract GPE number and possibly GpeDevice 15017 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 15018 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 15019 15020For all other devices that have _PRWs, we automatically set the GPE type 15021to 15022ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 15023This 15024must be done on a selective basis, usually requiring some kind of user 15025app 15026to allow the user to pick the wake devices. 15027 15028 15029Code and Data Size: Current and previous core subsystem library sizes are 15030shown below. These are the code and data sizes for the acpica.lib 15031produced 15032by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15033any ACPI driver or OSPM code. The debug version of the code includes the 15034debug output trace mechanism and has a much larger code and data size. 15035Note 15036that these values will vary depending on the efficiency of the compiler 15037and 15038the compiler options used during generation. 15039 15040 Previous Release: 15041 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15042 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15043 Current Release: 15044 15045 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15046 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15047 15048 15049 15050---------------------------------------- 1505102 April 2004. Summary of changes for version 20040402: 15052 150531) ACPI CA Core Subsystem: 15054 15055Fixed an interpreter problem where an indirect store through an ArgX 15056parameter was incorrectly applying the "implicit conversion rules" during 15057the store. From the ACPI specification: "If the target is a method local 15058or 15059argument (LocalX or ArgX), no conversion is performed and the result is 15060stored directly to the target". The new behavior is to disable implicit 15061conversion during ALL stores to an ArgX. 15062 15063Changed the behavior of the _PRW method scan to ignore any and all errors 15064returned by a given _PRW. This prevents the scan from aborting from the 15065failure of any single _PRW. 15066 15067Moved the runtime configuration parameters from the global init procedure 15068to 15069static variables in acglobal.h. This will allow the host to override the 15070default values easily. 15071 15072Code and Data Size: Current and previous core subsystem library sizes are 15073shown below. These are the code and data sizes for the acpica.lib 15074produced 15075by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15076any ACPI driver or OSPM code. The debug version of the code includes the 15077debug output trace mechanism and has a much larger code and data size. 15078Note 15079that these values will vary depending on the efficiency of the compiler 15080and 15081the compiler options used during generation. 15082 15083 Previous Release: 15084 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15085 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15086 Current Release: 15087 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15088 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15089 15090 150912) iASL Compiler/Disassembler: 15092 15093iASL now fully disassembles SSDTs. However, External() statements are 15094not 15095generated automatically for unresolved symbols at this time. This is a 15096planned feature for future implementation. 15097 15098Fixed a scoping problem in the disassembler that occurs when the type of 15099the 15100target of a Scope() operator is overridden. This problem caused an 15101incorrectly nested internal namespace to be constructed. 15102 15103Any warnings or errors that are emitted during disassembly are now 15104commented 15105out automatically so that the resulting file can be recompiled without 15106any 15107hand editing. 15108 15109---------------------------------------- 1511026 March 2004. Summary of changes for version 20040326: 15111 151121) ACPI CA Core Subsystem: 15113 15114Implemented support for "wake" GPEs via interaction between GPEs and the 15115_PRW methods. Every GPE that is pointed to by one or more _PRWs is 15116identified as a WAKE GPE and by default will no longer be enabled at 15117runtime. Previously, we were blindly enabling all GPEs with a 15118corresponding 15119_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 15120We 15121believe this has been the cause of thousands of "spurious" GPEs on some 15122systems. 15123 15124This new GPE behavior is can be reverted to the original behavior (enable 15125ALL GPEs at runtime) via a runtime flag. 15126 15127Fixed a problem where aliased control methods could not access objects 15128properly. The proper scope within the namespace was not initialized 15129(transferred to the target of the aliased method) before executing the 15130target method. 15131 15132Fixed a potential race condition on internal object deletion on the 15133return 15134object in AcpiEvaluateObject. 15135 15136Integrated a fix for resource descriptors where both _MEM and _MTP were 15137being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 15138wide, 0x0F instead of 0x03.) 15139 15140Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 15141preventing 15142a 15143fault in some cases. 15144 15145Updated Notify() values for debug statements in evmisc.c 15146 15147Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 15148 15149Code and Data Size: Current and previous core subsystem library sizes are 15150shown below. These are the code and data sizes for the acpica.lib 15151produced 15152by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15153any ACPI driver or OSPM code. The debug version of the code includes the 15154debug output trace mechanism and has a much larger code and data size. 15155Note 15156that these values will vary depending on the efficiency of the compiler 15157and 15158the compiler options used during generation. 15159 15160 Previous Release: 15161 15162 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15163 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15164 Current Release: 15165 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15166 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15167 15168---------------------------------------- 1516911 March 2004. Summary of changes for version 20040311: 15170 151711) ACPI CA Core Subsystem: 15172 15173Fixed a problem where errors occurring during the parse phase of control 15174method execution did not abort cleanly. For example, objects created and 15175installed in the namespace were not deleted. This caused all subsequent 15176invocations of the method to return the AE_ALREADY_EXISTS exception. 15177 15178Implemented a mechanism to force a control method to "Serialized" 15179execution 15180if the method attempts to create namespace objects. (The root of the 15181AE_ALREADY_EXISTS problem.) 15182 15183Implemented support for the predefined _OSI "internal" control method. 15184Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 15185and 15186"Windows 2001.1", and can be easily upgraded for new strings as 15187necessary. 15188This feature will allow "other" operating systems to execute the fully 15189tested, "Windows" code path through the ASL code 15190 15191Global Lock Support: Now allows multiple acquires and releases with any 15192internal thread. Removed concept of "owning thread" for this special 15193mutex. 15194 15195Fixed two functions that were inappropriately declaring large objects on 15196the 15197CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 15198during 15199method execution considerably. 15200 15201Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 15202S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 15203 15204Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 15205defined on the machine. 15206 15207Implemented two runtime options: One to force all control method 15208execution 15209to "Serialized" to mimic Windows behavior, another to disable _OSI 15210support 15211if it causes problems on a given machine. 15212 15213Code and Data Size: Current and previous core subsystem library sizes are 15214shown below. These are the code and data sizes for the acpica.lib 15215produced 15216by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15217any ACPI driver or OSPM code. The debug version of the code includes the 15218debug output trace mechanism and has a much larger code and data size. 15219Note 15220that these values will vary depending on the efficiency of the compiler 15221and 15222the compiler options used during generation. 15223 15224 Previous Release: 15225 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15226 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15227 Current Release: 15228 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15229 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15230 152312) iASL Compiler/Disassembler: 15232 15233Fixed an array size problem for FreeBSD that would cause the compiler to 15234fault. 15235 15236---------------------------------------- 1523720 February 2004. Summary of changes for version 20040220: 15238 15239 152401) ACPI CA Core Subsystem: 15241 15242Implemented execution of _SxD methods for Device objects in the 15243GetObjectInfo interface. 15244 15245Fixed calls to _SST method to pass the correct arguments. 15246 15247Added a call to _SST on wake to restore to "working" state. 15248 15249Check for End-Of-Buffer failure case in the WalkResources interface. 15250 15251Integrated fix for 64-bit alignment issue in acglobal.h by moving two 15252structures to the beginning of the file. 15253 15254After wake, clear GPE status register(s) before enabling GPEs. 15255 15256After wake, clear/enable power button. (Perhaps we should clear/enable 15257all 15258fixed events upon wake.) 15259 15260Fixed a couple of possible memory leaks in the Namespace manager. 15261 15262Integrated latest acnetbsd.h file. 15263 15264---------------------------------------- 1526511 February 2004. Summary of changes for version 20040211: 15266 15267 152681) ACPI CA Core Subsystem: 15269 15270Completed investigation and implementation of the call-by-reference 15271mechanism for control method arguments. 15272 15273Fixed a problem where a store of an object into an indexed package could 15274fail if the store occurs within a different method than the method that 15275created the package. 15276 15277Fixed a problem where the ToDecimal operator could return incorrect 15278results. 15279 15280Fixed a problem where the CopyObject operator could fail on some of the 15281more 15282obscure objects (e.g., Reference objects.) 15283 15284Improved the output of the Debug object to display buffer, package, and 15285index objects. 15286 15287Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15288return 15289the expected result. 15290 15291Added permanent ACPI_REPORT_ERROR macros for all instances of the 15292ACPI_AML_INTERNAL exception. 15293 15294Integrated latest version of acfreebsd.h 15295 15296---------------------------------------- 1529716 January 2004. Summary of changes for version 20040116: 15298 15299The purpose of this release is primarily to update the copyright years in 15300each module, thus causing a huge number of diffs. There are a few small 15301functional changes, however. 15302 153031) ACPI CA Core Subsystem: 15304 15305Improved error messages when there is a problem finding one or more of 15306the 15307required base ACPI tables 15308 15309Reintroduced the definition of APIC_HEADER in actbl.h 15310 15311Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15312 15313Removed extraneous reference to NewObj in dsmthdat.c 15314 153152) iASL compiler 15316 15317Fixed a problem introduced in December that disabled the correct 15318disassembly 15319of Resource Templates 15320 15321 15322---------------------------------------- 1532303 December 2003. Summary of changes for version 20031203: 15324 153251) ACPI CA Core Subsystem: 15326 15327Changed the initialization of Operation Regions during subsystem 15328init to perform two entire walks of the ACPI namespace; The first 15329to initialize the regions themselves, the second to execute the 15330_REG methods. This fixed some interdependencies across _REG 15331methods found on some machines. 15332 15333Fixed a problem where a Store(Local0, Local1) could simply update 15334the object reference count, and not create a new copy of the 15335object if the Local1 is uninitialized. 15336 15337Implemented support for the _SST reserved method during sleep 15338transitions. 15339 15340Implemented support to clear the SLP_TYP and SLP_EN bits when 15341waking up, this is apparently required by some machines. 15342 15343When sleeping, clear the wake status only if SleepState is not S5. 15344 15345Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15346pointer arithmetic advanced a string pointer too far. 15347 15348Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15349could be returned if the requested table has not been loaded. 15350 15351Within the support for IRQ resources, restructured the handling of 15352the active and edge/level bits. 15353 15354Fixed a few problems in AcpiPsxExecute() where memory could be 15355leaked under certain error conditions. 15356 15357Improved error messages for the cases where the ACPI mode could 15358not be entered. 15359 15360Code and Data Size: Current and previous core subsystem library 15361sizes are shown below. These are the code and data sizes for the 15362acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15363these values do not include any ACPI driver or OSPM code. The 15364debug version of the code includes the debug output trace 15365mechanism and has a much larger code and data size. Note that 15366these values will vary depending on the efficiency of the compiler 15367and the compiler options used during generation. 15368 15369 Previous Release (20031029): 15370 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15371 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15372 Current Release: 15373 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15374 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15375 153762) iASL Compiler/Disassembler: 15377 15378Implemented a fix for the iASL disassembler where a bad index was 15379generated. This was most noticeable on 64-bit platforms 15380 15381 15382---------------------------------------- 1538329 October 2003. Summary of changes for version 20031029: 15384 153851) ACPI CA Core Subsystem: 15386 15387 15388Fixed a problem where a level-triggered GPE with an associated 15389_Lxx control method was incorrectly cleared twice. 15390 15391Fixed a problem with the Field support code where an access can 15392occur beyond the end-of-region if the field is non-aligned but 15393extends to the very end of the parent region (resulted in an 15394AE_AML_REGION_LIMIT exception.) 15395 15396Fixed a problem with ACPI Fixed Events where an RT Clock handler 15397would not get invoked on an RTC event. The RTC event bitmasks for 15398the PM1 registers were not being initialized properly. 15399 15400Implemented support for executing _STA and _INI methods for 15401Processor objects. Although this is currently not part of the 15402ACPI specification, there is existing ASL code that depends on the 15403init-time execution of these methods. 15404 15405Implemented and deployed a GetDescriptorName function to decode 15406the various types of internal descriptors. Guards against null 15407descriptors during debug output also. 15408 15409Implemented and deployed a GetNodeName function to extract the 4- 15410character namespace node name. This function simplifies the debug 15411and error output, as well as guarding against null pointers during 15412output. 15413 15414Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 15415simplify the debug and error output of 64-bit integers. This 15416macro replaces the HIDWORD and LODWORD macros for dumping these 15417integers. 15418 15419Updated the implementation of the Stall() operator to only call 15420AcpiOsStall(), and also return an error if the operand is larger 15421than 255. This preserves the required behavior of not 15422relinquishing the processor, as would happen if AcpiOsSleep() was 15423called for "long stalls". 15424 15425Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 15426initialized are now treated as NOOPs. 15427 15428Cleaned up a handful of warnings during 64-bit generation. 15429 15430Fixed a reported error where and incorrect GPE number was passed 15431to the GPE dispatch handler. This value is only used for error 15432output, however. Used this opportunity to clean up and streamline 15433the GPE dispatch code. 15434 15435Code and Data Size: Current and previous core subsystem library 15436sizes are shown below. These are the code and data sizes for the 15437acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15438these values do not include any ACPI driver or OSPM code. The 15439 15440debug version of the code includes the debug output trace 15441mechanism and has a much larger code and data size. Note that 15442these values will vary depending on the efficiency of the compiler 15443and the compiler options used during generation. 15444 15445 Previous Release (20031002): 15446 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15447 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15448 Current Release: 15449 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15450 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15451 15452 154532) iASL Compiler/Disassembler: 15454 15455Updated the iASL compiler to return an error if the operand to the 15456Stall() operator is larger than 255. 15457 15458 15459---------------------------------------- 1546002 October 2003. Summary of changes for version 20031002: 15461 15462 154631) ACPI CA Core Subsystem: 15464 15465Fixed a problem with Index Fields where the index was not 15466incremented for fields that require multiple writes to the 15467index/data registers (Fields that are wider than the data 15468register.) 15469 15470Fixed a problem with all Field objects where a write could go 15471beyond the end-of-field if the field was larger than the access 15472granularity and therefore required multiple writes to complete the 15473request. An extra write beyond the end of the field could happen 15474inadvertently. 15475 15476Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 15477would incorrectly be returned if the width of the Data Register 15478was larger than the specified field access width. 15479 15480Completed fixes for LoadTable() and Unload() and verified their 15481operation. Implemented full support for the "DdbHandle" object 15482throughout the ACPI CA subsystem. 15483 15484Implemented full support for the MADT and ECDT tables in the ACPI 15485CA header files. Even though these tables are not directly 15486consumed by ACPI CA, the header definitions are useful for ACPI 15487device drivers. 15488 15489Integrated resource descriptor fixes posted to the Linux ACPI 15490list. This included checks for minimum descriptor length, and 15491support for trailing NULL strings within descriptors that have 15492optional string elements. 15493 15494Code and Data Size: Current and previous core subsystem library 15495sizes are shown below. These are the code and data sizes for the 15496acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15497these values do not include any ACPI driver or OSPM code. The 15498debug version of the code includes the debug output trace 15499mechanism and has a much larger code and data size. Note that 15500these values will vary depending on the efficiency of the compiler 15501and the compiler options used during generation. 15502 15503 Previous Release (20030918): 15504 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15505 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15506 Current Release: 15507 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15508 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15509 15510 155112) iASL Compiler: 15512 15513Implemented detection of non-ASCII characters within the input 15514source ASL file. This catches attempts to compile binary (AML) 15515files early in the compile, with an informative error message. 15516 15517Fixed a problem where the disassembler would fault if the output 15518filename could not be generated or if the output file could not be 15519opened. 15520 15521---------------------------------------- 1552218 September 2003. Summary of changes for version 20030918: 15523 15524 155251) ACPI CA Core Subsystem: 15526 15527Found and fixed a longstanding problem with the late execution of 15528the various deferred AML opcodes (such as Operation Regions, 15529Buffer Fields, Buffers, and Packages). If the name string 15530specified for the name of the new object placed the object in a 15531scope other than the current scope, the initialization/execution 15532of the opcode failed. The solution to this problem was to 15533implement a mechanism where the late execution of such opcodes 15534does not attempt to lookup/create the name a second time in an 15535incorrect scope. This fixes the "region size computed 15536incorrectly" problem. 15537 15538Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 15539Global Lock AE_BAD_PARAMETER error. 15540 15541Fixed several 64-bit issues with prototypes, casting and data 15542types. 15543 15544Removed duplicate prototype from acdisasm.h 15545 15546Fixed an issue involving EC Operation Region Detach (Shaohua Li) 15547 15548Code and Data Size: Current and previous core subsystem library 15549sizes are shown below. These are the code and data sizes for the 15550acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15551these values do not include any ACPI driver or OSPM code. The 15552debug version of the code includes the debug output trace 15553mechanism and has a much larger code and data size. Note that 15554these values will vary depending on the efficiency of the compiler 15555and the compiler options used during generation. 15556 15557 Previous Release: 15558 15559 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15560 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15561 Current Release: 15562 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15563 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15564 15565 155662) Linux: 15567 15568Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 15569correct sleep time in seconds. 15570 15571---------------------------------------- 1557214 July 2003. Summary of changes for version 20030619: 15573 155741) ACPI CA Core Subsystem: 15575 15576Parse SSDTs in order discovered, as opposed to reverse order 15577(Hrvoje Habjanic) 15578 15579Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 15580Klausner, 15581 Nate Lawson) 15582 15583 155842) Linux: 15585 15586Dynamically allocate SDT list (suggested by Andi Kleen) 15587 15588proc function return value cleanups (Andi Kleen) 15589 15590Correctly handle NMI watchdog during long stalls (Andrew Morton) 15591 15592Make it so acpismp=force works (reported by Andrew Morton) 15593 15594 15595---------------------------------------- 1559619 June 2003. Summary of changes for version 20030619: 15597 155981) ACPI CA Core Subsystem: 15599 15600Fix To/FromBCD, eliminating the need for an arch-specific #define. 15601 15602Do not acquire a semaphore in the S5 shutdown path. 15603 15604Fix ex_digits_needed for 0. (Takayoshi Kochi) 15605 15606Fix sleep/stall code reversal. (Andi Kleen) 15607 15608Revert a change having to do with control method calling 15609semantics. 15610 156112) Linux: 15612 15613acpiphp update (Takayoshi Kochi) 15614 15615Export acpi_disabled for sonypi (Stelian Pop) 15616 15617Mention acpismp=force in config help 15618 15619Re-add acpitable.c and acpismp=force. This improves backwards 15620 15621compatibility and also cleans up the code to a significant degree. 15622 15623Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 15624 15625---------------------------------------- 1562622 May 2003. Summary of changes for version 20030522: 15627 156281) ACPI CA Core Subsystem: 15629 15630Found and fixed a reported problem where an AE_NOT_FOUND error 15631occurred occasionally during _BST evaluation. This turned out to 15632be an Owner ID allocation issue where a called method did not get 15633a new ID assigned to it. Eventually, (after 64k calls), the Owner 15634ID UINT16 would wraparound so that the ID would be the same as the 15635caller's and the called method would delete the caller's 15636namespace. 15637 15638Implemented extended error reporting for control methods that are 15639aborted due to a run-time exception. Output includes the exact 15640AML instruction that caused the method abort, a dump of the method 15641locals and arguments at the time of the abort, and a trace of all 15642nested control method calls. 15643 15644Modified the interpreter to allow the creation of buffers of zero 15645length from the AML code. Implemented new code to ensure that no 15646attempt is made to actually allocate a memory buffer (of length 15647zero) - instead, a simple buffer object with a NULL buffer pointer 15648and length zero is created. A warning is no longer issued when 15649the AML attempts to create a zero-length buffer. 15650 15651Implemented a workaround for the "leading asterisk issue" in 15652_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 15653asterisk is automatically removed if present in any HID, UID, or 15654CID strings. The iASL compiler will still flag this asterisk as 15655an error, however. 15656 15657Implemented full support for _CID methods that return a package of 15658multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 15659now additionally returns a device _CID list if present. This 15660required a change to the external interface in order to pass an 15661ACPI_BUFFER object as a parameter since the _CID list is of 15662variable length. 15663 15664Fixed a problem with the new AE_SAME_HANDLER exception where 15665handler initialization code did not know about this exception. 15666 15667Code and Data Size: Current and previous core subsystem library 15668sizes are shown below. These are the code and data sizes for the 15669acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15670these values do not include any ACPI driver or OSPM code. The 15671debug version of the code includes the debug output trace 15672mechanism and has a much larger code and data size. Note that 15673these values will vary depending on the efficiency of the compiler 15674and the compiler options used during generation. 15675 15676 Previous Release (20030509): 15677 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15678 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15679 Current Release: 15680 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15681 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15682 15683 156842) Linux: 15685 15686Fixed a bug in which we would reinitialize the ACPI interrupt 15687after it was already working, thus disabling all ACPI and the IRQs 15688for any other device sharing the interrupt. (Thanks to Stian 15689Jordet) 15690 15691Toshiba driver update (John Belmonte) 15692 15693Return only 0 or 1 for our interrupt handler status (Andrew 15694Morton) 15695 15696 156973) iASL Compiler: 15698 15699Fixed a reported problem where multiple (nested) ElseIf() 15700statements were not handled correctly by the compiler, resulting 15701in incorrect warnings and incorrect AML code. This was a problem 15702in both the ASL parser and the code generator. 15703 15704 157054) Documentation: 15706 15707Added changes to existing interfaces, new exception codes, and new 15708text concerning reference count object management versus garbage 15709collection. 15710 15711---------------------------------------- 1571209 May 2003. Summary of changes for version 20030509. 15713 15714 157151) ACPI CA Core Subsystem: 15716 15717Changed the subsystem initialization sequence to hold off 15718installation of address space handlers until the hardware has been 15719initialized and the system has entered ACPI mode. This is because 15720the installation of space handlers can cause _REG methods to be 15721run. Previously, the _REG methods could potentially be run before 15722ACPI mode was enabled. 15723 15724Fixed some memory leak issues related to address space handler and 15725notify handler installation. There were some problems with the 15726reference count mechanism caused by the fact that the handler 15727objects are shared across several namespace objects. 15728 15729Fixed a reported problem where reference counts within the 15730namespace were not properly updated when named objects created by 15731method execution were deleted. 15732 15733Fixed a reported problem where multiple SSDTs caused a deletion 15734issue during subsystem termination. Restructured the table data 15735structures to simplify the linked lists and the related code. 15736 15737Fixed a problem where the table ID associated with secondary 15738tables (SSDTs) was not being propagated into the namespace objects 15739created by those tables. This would only present a problem for 15740tables that are unloaded at run-time, however. 15741 15742Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 15743type as the length parameter (instead of UINT32). 15744 15745Solved a long-standing problem where an ALREADY_EXISTS error 15746appears on various systems. This problem could happen when there 15747are multiple PCI_Config operation regions under a single PCI root 15748bus. This doesn't happen very frequently, but there are some 15749systems that do this in the ASL. 15750 15751Fixed a reported problem where the internal DeleteNode function 15752was incorrectly handling the case where a namespace node was the 15753first in the parent's child list, and had additional peers (not 15754the only child, but first in the list of children.) 15755 15756Code and Data Size: Current core subsystem library sizes are shown 15757below. These are the code and data sizes for the acpica.lib 15758produced by the Microsoft Visual C++ 6.0 compiler, and these 15759values do not include any ACPI driver or OSPM code. The debug 15760version of the code includes the debug output trace mechanism and 15761has a much larger code and data size. Note that these values will 15762vary depending on the efficiency of the compiler and the compiler 15763options used during generation. 15764 15765 Previous Release 15766 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15767 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15768 Current Release: 15769 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15770 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15771 15772 157732) Linux: 15774 15775Allow ":" in OS override string (Ducrot Bruno) 15776 15777Kobject fix (Greg KH) 15778 15779 157803 iASL Compiler/Disassembler: 15781 15782Fixed a problem in the generation of the C source code files (AML 15783is emitted in C source statements for BIOS inclusion) where the 15784Ascii dump that appears within a C comment at the end of each line 15785could cause a compile time error if the AML sequence happens to 15786have an open comment or close comment sequence embedded. 15787 15788 15789---------------------------------------- 1579024 April 2003. Summary of changes for version 20030424. 15791 15792 157931) ACPI CA Core Subsystem: 15794 15795Support for big-endian systems has been implemented. Most of the 15796support has been invisibly added behind big-endian versions of the 15797ACPI_MOVE_* macros. 15798 15799Fixed a problem in AcpiHwDisableGpeBlock() and 15800AcpiHwClearGpeBlock() where an incorrect offset was passed to the 15801low level hardware write routine. The offset parameter was 15802actually eliminated from the low level read/write routines because 15803they had become obsolete. 15804 15805Fixed a problem where a handler object was deleted twice during 15806the removal of a fixed event handler. 15807 15808 158092) Linux: 15810 15811A fix for SMP systems with link devices was contributed by 15812 15813Compaq's Dan Zink. 15814 15815(2.5) Return whether we handled the interrupt in our IRQ handler. 15816(Linux ISRs no longer return void, so we can propagate the handler 15817return value from the ACPI CA core back to the OS.) 15818 15819 15820 158213) Documentation: 15822 15823The ACPI CA Programmer Reference has been updated to reflect new 15824interfaces and changes to existing interfaces. 15825 15826---------------------------------------- 1582728 March 2003. Summary of changes for version 20030328. 15828 158291) ACPI CA Core Subsystem: 15830 15831The GPE Block Device support has been completed. New interfaces 15832are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 15833interfaces (enable, disable, clear, getstatus) have been split 15834into separate interfaces for Fixed Events and General Purpose 15835Events (GPEs) in order to support GPE Block Devices properly. 15836 15837Fixed a problem where the error message "Failed to acquire 15838semaphore" would appear during operations on the embedded 15839controller (EC). 15840 15841Code and Data Size: Current core subsystem library sizes are shown 15842below. These are the code and data sizes for the acpica.lib 15843produced by the Microsoft Visual C++ 6.0 compiler, and these 15844values do not include any ACPI driver or OSPM code. The debug 15845version of the code includes the debug output trace mechanism and 15846has a much larger code and data size. Note that these values will 15847vary depending on the efficiency of the compiler and the compiler 15848options used during generation. 15849 15850 Previous Release 15851 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15852 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15853 Current Release: 15854 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15855 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15856 15857 15858---------------------------------------- 1585928 February 2003. Summary of changes for version 20030228. 15860 15861 158621) ACPI CA Core Subsystem: 15863 15864The GPE handling and dispatch code has been completely overhauled 15865in preparation for support of GPE Block Devices (ID ACPI0006). 15866This affects internal data structures and code only; there should 15867be no differences visible externally. One new file has been 15868added, evgpeblk.c 15869 15870The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 15871fields that are used to determine the GPE block lengths. The 15872REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15873structures are ignored. This is per the ACPI specification but it 15874isn't very clear. The full 256 Block 0/1 GPEs are now supported 15875(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 15876 15877In the SCI interrupt handler, removed the read of the PM1_CONTROL 15878register to look at the SCI_EN bit. On some machines, this read 15879causes an SMI event and greatly slows down SCI events. (This may 15880in fact be the cause of slow battery status response on some 15881systems.) 15882 15883Fixed a problem where a store of a NULL string to a package object 15884could cause the premature deletion of the object. This was seen 15885during execution of the battery _BIF method on some systems, 15886resulting in no battery data being returned. 15887 15888Added AcpiWalkResources interface to simplify parsing of resource 15889lists. 15890 15891Code and Data Size: Current core subsystem library sizes are shown 15892below. These are the code and data sizes for the acpica.lib 15893produced by the Microsoft Visual C++ 6.0 compiler, and these 15894values do not include any ACPI driver or OSPM code. The debug 15895version of the code includes the debug output trace mechanism and 15896has a much larger code and data size. Note that these values will 15897vary depending on the efficiency of the compiler and the compiler 15898options used during generation. 15899 15900 Previous Release 15901 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15902 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15903 Current Release: 15904 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15905 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15906 15907 159082) Linux 15909 15910S3 fixes (Ole Rohne) 15911 15912Update ACPI PHP driver with to use new acpi_walk_resource API 15913(Bjorn Helgaas) 15914 15915Add S4BIOS support (Pavel Machek) 15916 15917Map in entire table before performing checksum (John Stultz) 15918 15919Expand the mem= cmdline to allow the specification of reserved and 15920ACPI DATA blocks (Pavel Machek) 15921 15922Never use ACPI on VISWS 15923 15924Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 15925 15926Revert a change that allowed P_BLK lengths to be 4 or 5. This is 15927causing us to think that some systems support C2 when they really 15928don't. 15929 15930Do not count processor objects for non-present CPUs (Thanks to 15931Dominik Brodowski) 15932 15933 159343) iASL Compiler: 15935 15936Fixed a problem where ASL include files could not be found and 15937opened. 15938 15939Added support for the _PDC reserved name. 15940 15941 15942---------------------------------------- 1594322 January 2003. Summary of changes for version 20030122. 15944 15945 159461) ACPI CA Core Subsystem: 15947 15948Added a check for constructs of the form: Store (Local0, Local0) 15949where Local0 is not initialized. Apparently, some BIOS 15950programmers believe that this is a NOOP. Since this store doesn't 15951do anything anyway, the new prototype behavior will ignore this 15952error. This is a case where we can relax the strict checking in 15953the interpreter in the name of compatibility. 15954 15955 159562) Linux 15957 15958The AcpiSrc Source Conversion Utility has been released with the 15959Linux package for the first time. This is the utility that is 15960used to convert the ACPI CA base source code to the Linux version. 15961 15962(Both) Handle P_BLK lengths shorter than 6 more gracefully 15963 15964(Both) Move more headers to include/acpi, and delete an unused 15965header. 15966 15967(Both) Move drivers/acpi/include directory to include/acpi 15968 15969(Both) Boot functions don't use cmdline, so don't pass it around 15970 15971(Both) Remove include of unused header (Adrian Bunk) 15972 15973(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 15974the 15975former now also includes the latter, acpiphp.h only needs the one, 15976now. 15977 15978(2.5) Make it possible to select method of bios restoring after S3 15979resume. [=> no more ugly ifdefs] (Pavel Machek) 15980 15981(2.5) Make proc write interfaces work (Pavel Machek) 15982 15983(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 15984 15985(2.5) Break out ACPI Perf code into its own module, under cpufreq 15986(Dominik Brodowski) 15987 15988(2.4) S4BIOS support (Ducrot Bruno) 15989 15990(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 15991Visinoni) 15992 15993 159943) iASL Compiler: 15995 15996Added support to disassemble SSDT and PSDTs. 15997 15998Implemented support to obtain SSDTs from the Windows registry if 15999available. 16000 16001 16002---------------------------------------- 1600309 January 2003. Summary of changes for version 20030109. 16004 160051) ACPI CA Core Subsystem: 16006 16007Changed the behavior of the internal Buffer-to-String conversion 16008function. The current ACPI specification states that the contents 16009of the buffer are "converted to a string of two-character 16010hexadecimal numbers, each separated by a space". Unfortunately, 16011this definition is not backwards compatible with existing ACPI 1.0 16012implementations (although the behavior was not defined in the ACPI 160131.0 specification). The new behavior simply copies data from the 16014buffer to the string until a null character is found or the end of 16015the buffer is reached. The new String object is always null 16016terminated. This problem was seen during the generation of _BIF 16017battery data where incorrect strings were returned for battery 16018type, etc. This will also require an errata to the ACPI 16019specification. 16020 16021Renamed all instances of NATIVE_UINT and NATIVE_INT to 16022ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 16023 16024Copyright in all module headers (both Linux and non-Linux) has be 16025updated to 2003. 16026 16027Code and Data Size: Current core subsystem library sizes are shown 16028below. These are the code and data sizes for the acpica.lib 16029produced by the Microsoft Visual C++ 6.0 compiler, and these 16030values do not include any ACPI driver or OSPM code. The debug 16031version of the code includes the debug output trace mechanism and 16032has a much larger code and data size. Note that these values will 16033vary depending on the efficiency of the compiler and the compiler 16034options used during generation. 16035 16036 Previous Release 16037 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16038 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16039 Current Release: 16040 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16041 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16042 16043 160442) Linux 16045 16046Fixed an oops on module insertion/removal (Matthew Tippett) 16047 16048(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 16049 16050(2.5) Replace pr_debug (Randy Dunlap) 16051 16052(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 16053 16054(Both) Eliminate spawning of thread from timer callback, in favor 16055of schedule_work() 16056 16057(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 16058 16059(Both) Added define for Fixed Function HW region (Matthew Wilcox) 16060 16061(Both) Add missing statics to button.c (Pavel Machek) 16062 16063Several changes have been made to the source code translation 16064utility that generates the Linux Code in order to make the code 16065more "Linux-like": 16066 16067All typedefs on structs and unions have been removed in keeping 16068with the Linux coding style. 16069 16070Removed the non-Linux SourceSafe module revision number from each 16071module header. 16072 16073Completed major overhaul of symbols to be lowercase for linux. 16074Doubled the number of symbols that are lowercase. 16075 16076Fixed a problem where identifiers within procedure headers and 16077within quotes were not fully lower cased (they were left with a 16078starting capital.) 16079 16080Some C macros whose only purpose is to allow the generation of 16- 16081bit code are now completely removed in the Linux code, increasing 16082readability and maintainability. 16083 16084---------------------------------------- 16085 1608612 December 2002. Summary of changes for version 20021212. 16087 16088 160891) ACPI CA Core Subsystem: 16090 16091Fixed a problem where the creation of a zero-length AML Buffer 16092would cause a fault. 16093 16094Fixed a problem where a Buffer object that pointed to a static AML 16095buffer (in an ACPI table) could inadvertently be deleted, causing 16096memory corruption. 16097 16098Fixed a problem where a user buffer (passed in to the external 16099ACPI CA interfaces) could be overwritten if the buffer was too 16100small to complete the operation, causing memory corruption. 16101 16102Fixed a problem in the Buffer-to-String conversion code where a 16103string of length one was always returned, regardless of the size 16104of the input Buffer object. 16105 16106Removed the NATIVE_CHAR data type across the entire source due to 16107lack of need and lack of consistent use. 16108 16109Code and Data Size: Current core subsystem library sizes are shown 16110below. These are the code and data sizes for the acpica.lib 16111produced by the Microsoft Visual C++ 6.0 compiler, and these 16112values do not include any ACPI driver or OSPM code. The debug 16113version of the code includes the debug output trace mechanism and 16114has a much larger code and data size. Note that these values will 16115vary depending on the efficiency of the compiler and the compiler 16116options used during generation. 16117 16118 Previous Release 16119 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16120 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16121 Current Release: 16122 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16123 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16124 16125 16126---------------------------------------- 1612705 December 2002. Summary of changes for version 20021205. 16128 161291) ACPI CA Core Subsystem: 16130 16131Fixed a problem where a store to a String or Buffer object could 16132cause corruption of the DSDT if the object type being stored was 16133the same as the target object type and the length of the object 16134being stored was equal to or smaller than the original (existing) 16135target object. This was seen to cause corruption of battery _BIF 16136buffers if the _BIF method modified the buffer on the fly. 16137 16138Fixed a problem where an internal error was generated if a control 16139method invocation was used in an OperationRegion, Buffer, or 16140Package declaration. This was caused by the deferred parsing of 16141the control method and thus the deferred creation of the internal 16142method object. The solution to this problem was to create the 16143internal method object at the moment the method is encountered in 16144the first pass - so that subsequent references to the method will 16145able to obtain the required parameter count and thus properly 16146parse the method invocation. This problem presented itself as an 16147AE_AML_INTERNAL during the pass 1 parse phase during table load. 16148 16149Fixed a problem where the internal String object copy routine did 16150not always allocate sufficient memory for the target String object 16151and caused memory corruption. This problem was seen to cause 16152"Allocation already present in list!" errors as memory allocation 16153became corrupted. 16154 16155Implemented a new function for the evaluation of namespace objects 16156that allows the specification of the allowable return object 16157types. This simplifies a lot of code that checks for a return 16158object of one or more specific objects returned from the 16159evaluation (such as _STA, etc.) This may become and external 16160function if it would be useful to ACPI-related drivers. 16161 16162Completed another round of prefixing #defines with "ACPI_" for 16163clarity. 16164 16165Completed additional code restructuring to allow more modular 16166linking for iASL compiler and AcpiExec. Several files were split 16167creating new files. New files: nsparse.c dsinit.c evgpe.c 16168 16169Implemented an abort mechanism to terminate an executing control 16170method via the AML debugger. This feature is useful for debugging 16171control methods that depend (wait) for specific hardware 16172responses. 16173 16174Code and Data Size: Current core subsystem library sizes are shown 16175below. These are the code and data sizes for the acpica.lib 16176produced by the Microsoft Visual C++ 6.0 compiler, and these 16177values do not include any ACPI driver or OSPM code. The debug 16178version of the code includes the debug output trace mechanism and 16179has a much larger code and data size. Note that these values will 16180vary depending on the efficiency of the compiler and the compiler 16181options used during generation. 16182 16183 Previous Release 16184 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16185 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16186 Current Release: 16187 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16188 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16189 16190 161912) iASL Compiler/Disassembler 16192 16193Fixed a compiler code generation problem for "Interrupt" Resource 16194Descriptors. If specified in the ASL, the optional "Resource 16195Source Index" and "Resource Source" fields were not inserted into 16196the correct location within the AML resource descriptor, creating 16197an invalid descriptor. 16198 16199Fixed a disassembler problem for "Interrupt" resource descriptors. 16200The optional "Resource Source Index" and "Resource Source" fields 16201were ignored. 16202 16203 16204---------------------------------------- 1620522 November 2002. Summary of changes for version 20021122. 16206 16207 162081) ACPI CA Core Subsystem: 16209 16210Fixed a reported problem where an object stored to a Method Local 16211or Arg was not copied to a new object during the store - the 16212object pointer was simply copied to the Local/Arg. This caused 16213all subsequent operations on the Local/Arg to also affect the 16214original source of the store operation. 16215 16216Fixed a problem where a store operation to a Method Local or Arg 16217was not completed properly if the Local/Arg contained a reference 16218(from RefOf) to a named field. The general-purpose store-to- 16219namespace-node code is now used so that this case is handled 16220automatically. 16221 16222Fixed a problem where the internal object copy routine would cause 16223a protection fault if the object being copied was a Package and 16224contained either 1) a NULL package element or 2) a nested sub- 16225package. 16226 16227Fixed a problem with the GPE initialization that resulted from an 16228ambiguity in the ACPI specification. One section of the 16229specification states that both the address and length of the GPE 16230block must be zero if the block is not supported. Another section 16231implies that only the address need be zero if the block is not 16232supported. The code has been changed so that both the address and 16233the length must be non-zero to indicate a valid GPE block (i.e., 16234if either the address or the length is zero, the GPE block is 16235invalid.) 16236 16237Code and Data Size: Current core subsystem library sizes are shown 16238below. These are the code and data sizes for the acpica.lib 16239produced by the Microsoft Visual C++ 6.0 compiler, and these 16240values do not include any ACPI driver or OSPM code. The debug 16241version of the code includes the debug output trace mechanism and 16242has a much larger code and data size. Note that these values will 16243vary depending on the efficiency of the compiler and the compiler 16244options used during generation. 16245 16246 Previous Release 16247 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16248 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16249 Current Release: 16250 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16251 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16252 16253 162542) Linux 16255 16256Cleaned up EC driver. Exported an external EC read/write 16257interface. By going through this, other drivers (most notably 16258sonypi) will be able to serialize access to the EC. 16259 16260 162613) iASL Compiler/Disassembler 16262 16263Implemented support to optionally generate include files for both 16264ASM and C (the -i switch). This simplifies BIOS development by 16265automatically creating include files that contain external 16266declarations for the symbols that are created within the 16267 16268(optionally generated) ASM and C AML source files. 16269 16270 16271---------------------------------------- 1627215 November 2002. Summary of changes for version 20021115. 16273 162741) ACPI CA Core Subsystem: 16275 16276Fixed a memory leak problem where an error during resolution of 16277 16278method arguments during a method invocation from another method 16279failed to cleanup properly by deleting all successfully resolved 16280argument objects. 16281 16282Fixed a problem where the target of the Index() operator was not 16283correctly constructed if the source object was a package. This 16284problem has not been detected because the use of a target operand 16285with Index() is very rare. 16286 16287Fixed a problem with the Index() operator where an attempt was 16288made to delete the operand objects twice. 16289 16290Fixed a problem where an attempt was made to delete an operand 16291twice during execution of the CondRefOf() operator if the target 16292did not exist. 16293 16294Implemented the first of perhaps several internal create object 16295functions that create and initialize a specific object type. This 16296consolidates duplicated code wherever the object is created, thus 16297shrinking the size of the subsystem. 16298 16299Implemented improved debug/error messages for errors that occur 16300during nested method invocations. All executing method pathnames 16301are displayed (with the error) as the call stack is unwound - thus 16302simplifying debug. 16303 16304Fixed a problem introduced in the 10/02 release that caused 16305premature deletion of a buffer object if a buffer was used as an 16306ASL operand where an integer operand is required (Thus causing an 16307implicit object conversion from Buffer to Integer.) The change in 16308the 10/02 release was attempting to fix a memory leak (albeit 16309incorrectly.) 16310 16311Code and Data Size: Current core subsystem library sizes are shown 16312below. These are the code and data sizes for the acpica.lib 16313produced by the Microsoft Visual C++ 6.0 compiler, and these 16314values do not include any ACPI driver or OSPM code. The debug 16315version of the code includes the debug output trace mechanism and 16316has a much larger code and data size. Note that these values will 16317vary depending on the efficiency of the compiler and the compiler 16318options used during generation. 16319 16320 Previous Release 16321 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16322 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16323 Current Release: 16324 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16325 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16326 16327 163282) Linux 16329 16330Changed the implementation of the ACPI semaphores to use down() 16331instead of down_interruptable(). It is important that the 16332execution of ACPI control methods not be interrupted by signals. 16333Methods must run to completion, or the system may be left in an 16334unknown/unstable state. 16335 16336Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16337(Shawn Starr) 16338 16339 163403) iASL Compiler/Disassembler 16341 16342 16343Changed the default location of output files. All output files 16344are now placed in the current directory by default instead of in 16345the directory of the source file. This change may affect some 16346existing makefiles, but it brings the behavior of the compiler in 16347line with other similar tools. The location of the output files 16348can be overridden with the -p command line switch. 16349 16350 16351---------------------------------------- 1635211 November 2002. Summary of changes for version 20021111. 16353 16354 163550) ACPI Specification 2.0B is released and is now available at: 16356http://www.acpi.info/index.html 16357 16358 163591) ACPI CA Core Subsystem: 16360 16361Implemented support for the ACPI 2.0 SMBus Operation Regions. 16362This includes the early detection and handoff of the request to 16363the SMBus region handler (avoiding all of the complex field 16364support code), and support for the bidirectional return packet 16365from an SMBus write operation. This paves the way for the 16366development of SMBus drivers in each host operating system. 16367 16368Fixed a problem where the semaphore WAIT_FOREVER constant was 16369defined as 32 bits, but must be 16 bits according to the ACPI 16370specification. This had the side effect of causing ASL 16371Mutex/Event timeouts even though the ASL code requested a wait 16372forever. Changed all internal references to the ACPI timeout 16373parameter to 16 bits to prevent future problems. Changed the name 16374of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16375 16376Code and Data Size: Current core subsystem library sizes are shown 16377below. These are the code and data sizes for the acpica.lib 16378produced by the Microsoft Visual C++ 6.0 compiler, and these 16379values do not include any ACPI driver or OSPM code. The debug 16380version of the code includes the debug output trace mechanism and 16381has a much larger code and data size. Note that these values will 16382vary depending on the efficiency of the compiler and the compiler 16383options used during generation. 16384 16385 Previous Release 16386 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16387 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16388 Current Release: 16389 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16390 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16391 16392 163932) Linux 16394 16395Module loading/unloading fixes (John Cagle) 16396 16397 163983) iASL Compiler/Disassembler 16399 16400Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 16401 16402Implemented support for the disassembly of all SMBus protocol 16403keywords (SMBQuick, SMBWord, etc.) 16404 16405---------------------------------------- 1640601 November 2002. Summary of changes for version 20021101. 16407 16408 164091) ACPI CA Core Subsystem: 16410 16411Fixed a problem where platforms that have a GPE1 block but no GPE0 16412block were not handled correctly. This resulted in a "GPE 16413overlap" error message. GPE0 is no longer required. 16414 16415Removed code added in the previous release that inserted nodes 16416into the namespace in alphabetical order. This caused some side- 16417effects on various machines. The root cause of the problem is 16418still under investigation since in theory, the internal ordering 16419of the namespace nodes should not matter. 16420 16421 16422Enhanced error reporting for the case where a named object is not 16423found during control method execution. The full ACPI namepath 16424(name reference) of the object that was not found is displayed in 16425this case. 16426 16427Note: as a result of the overhaul of the namespace object types in 16428the previous release, the namespace nodes for the predefined 16429scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 16430instead of ACPI_TYPE_ANY. This simplifies the namespace 16431management code but may affect code that walks the namespace tree 16432looking for specific object types. 16433 16434Code and Data Size: Current core subsystem library sizes are shown 16435below. These are the code and data sizes for the acpica.lib 16436produced by the Microsoft Visual C++ 6.0 compiler, and these 16437values do not include any ACPI driver or OSPM code. The debug 16438version of the code includes the debug output trace mechanism and 16439has a much larger code and data size. Note that these values will 16440vary depending on the efficiency of the compiler and the compiler 16441options used during generation. 16442 16443 Previous Release 16444 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16445 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16446 Current Release: 16447 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16448 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16449 16450 164512) Linux 16452 16453Fixed a problem introduced in the previous release where the 16454Processor and Thermal objects were not recognized and installed in 16455/proc. This was related to the scope type change described above. 16456 16457 164583) iASL Compiler/Disassembler 16459 16460Implemented the -g option to get all of the required ACPI tables 16461from the registry and save them to files (Windows version of the 16462compiler only.) The required tables are the FADT, FACS, and DSDT. 16463 16464Added ACPI table checksum validation during table disassembly in 16465order to catch corrupted tables. 16466 16467 16468---------------------------------------- 1646922 October 2002. Summary of changes for version 20021022. 16470 164711) ACPI CA Core Subsystem: 16472 16473Implemented a restriction on the Scope operator that the target 16474must already exist in the namespace at the time the operator is 16475encountered (during table load or method execution). In other 16476words, forward references are not allowed and Scope() cannot 16477create a new object. This changes the previous behavior where the 16478interpreter would create the name if not found. This new behavior 16479correctly enables the search-to-root algorithm during namespace 16480lookup of the target name. Because of this upsearch, this fixes 16481the known Compaq _SB_.OKEC problem and makes both the AML 16482interpreter and iASL compiler compatible with other ACPI 16483implementations. 16484 16485Completed a major overhaul of the internal ACPI object types for 16486the ACPI Namespace and the associated operand objects. Many of 16487these types had become obsolete with the introduction of the two- 16488pass namespace load. This cleanup simplifies the code and makes 16489the entire namespace load mechanism much clearer and easier to 16490understand. 16491 16492Improved debug output for tracking scope opening/closing to help 16493diagnose scoping issues. The old scope name as well as the new 16494scope name are displayed. Also improved error messages for 16495problems with ASL Mutex objects and error messages for GPE 16496problems. 16497 16498Cleaned up the namespace dump code, removed obsolete code. 16499 16500All string output (for all namespace/object dumps) now uses the 16501common ACPI string output procedure which handles escapes properly 16502and does not emit non-printable characters. 16503 16504Fixed some issues with constants in the 64-bit version of the 16505local C library (utclib.c) 16506 16507 165082) Linux 16509 16510EC Driver: No longer attempts to acquire the Global Lock at 16511interrupt level. 16512 16513 165143) iASL Compiler/Disassembler 16515 16516Implemented ACPI 2.0B grammar change that disallows all Type 1 and 165172 opcodes outside of a control method. This means that the 16518"executable" operators (versus the "namespace" operators) cannot 16519be used at the table level; they can only be used within a control 16520method. 16521 16522Implemented the restriction on the Scope() operator where the 16523target must already exist in the namespace at the time the 16524operator is encountered (during ASL compilation). In other words, 16525forward references are not allowed and Scope() cannot create a new 16526object. This makes the iASL compiler compatible with other ACPI 16527implementations and makes the Scope() implementation adhere to the 16528ACPI specification. 16529 16530Fixed a problem where namepath optimization for the Alias operator 16531was optimizing the wrong path (of the two namepaths.) This caused 16532a "Missing alias link" error message. 16533 16534Fixed a problem where an "unknown reserved name" warning could be 16535incorrectly generated for names like "_SB" when the trailing 16536underscore is not used in the original ASL. 16537 16538Fixed a problem where the reserved name check did not handle 16539NamePaths with multiple NameSegs correctly. The first nameseg of 16540the NamePath was examined instead of the last NameSeg. 16541 16542 16543---------------------------------------- 16544 1654502 October 2002. Summary of changes for this release. 16546 16547 165481) ACPI CA Core Subsystem version 20021002: 16549 16550Fixed a problem where a store/copy of a string to an existing 16551string did not always set the string length properly in the String 16552object. 16553 16554Fixed a reported problem with the ToString operator where the 16555behavior was identical to the ToHexString operator instead of just 16556simply converting a raw buffer to a string data type. 16557 16558Fixed a problem where CopyObject and the other "explicit" 16559conversion operators were not updating the internal namespace node 16560type as part of the store operation. 16561 16562Fixed a memory leak during implicit source operand conversion 16563where the original object was not deleted if it was converted to a 16564new object of a different type. 16565 16566Enhanced error messages for all problems associated with namespace 16567lookups. Common procedure generates and prints the lookup name as 16568well as the formatted status. 16569 16570Completed implementation of a new design for the Alias support 16571within the namespace. The existing design did not handle the case 16572where a new object was assigned to one of the two names due to the 16573use of an explicit conversion operator, resulting in the two names 16574pointing to two different objects. The new design simply points 16575the Alias name to the original name node - not to the object. 16576This results in a level of indirection that must be handled in the 16577name resolution mechanism. 16578 16579Code and Data Size: Current core subsystem library sizes are shown 16580below. These are the code and data sizes for the acpica.lib 16581produced by the Microsoft Visual C++ 6.0 compiler, and these 16582values do not include any ACPI driver or OSPM code. The debug 16583version of the code includes the debug output trace mechanism and 16584has a larger code and data size. Note that these values will vary 16585depending on the efficiency of the compiler and the compiler 16586options used during generation. 16587 16588 Previous Release 16589 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16590 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16591 Current Release: 16592 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16593 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16594 16595 165962) Linux 16597 16598Initialize thermal driver's timer before it is used. (Knut 16599Neumann) 16600 16601Allow handling negative celsius values. (Kochi Takayoshi) 16602 16603Fix thermal management and make trip points. R/W (Pavel Machek) 16604 16605Fix /proc/acpi/sleep. (P. Christeas) 16606 16607IA64 fixes. (David Mosberger) 16608 16609Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 16610 16611Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 16612Brodowski) 16613 16614 166153) iASL Compiler/Disassembler 16616 16617Clarified some warning/error messages. 16618 16619 16620---------------------------------------- 1662118 September 2002. Summary of changes for this release. 16622 16623 166241) ACPI CA Core Subsystem version 20020918: 16625 16626Fixed a reported problem with reference chaining (via the Index() 16627and RefOf() operators) in the ObjectType() and SizeOf() operators. 16628The definition of these operators includes the dereferencing of 16629all chained references to return information on the base object. 16630 16631Fixed a problem with stores to indexed package elements - the 16632existing code would not complete the store if an "implicit 16633conversion" was not performed. In other words, if the existing 16634object (package element) was to be replaced completely, the code 16635didn't handle this case. 16636 16637Relaxed typechecking on the ASL "Scope" operator to allow the 16638target name to refer to an object of type Integer, String, or 16639Buffer, in addition to the scoping object types (Device, 16640predefined Scopes, Processor, PowerResource, and ThermalZone.) 16641This allows existing AML code that has workarounds for a bug in 16642Windows to function properly. A warning is issued, however. This 16643affects both the AML interpreter and the iASL compiler. Below is 16644an example of this type of ASL code: 16645 16646 Name(DEB,0x00) 16647 Scope(DEB) 16648 { 16649 16650Fixed some reported problems with 64-bit integer support in the 16651local implementation of C library functions (clib.c) 16652 16653 166542) Linux 16655 16656Use ACPI fix map region instead of IOAPIC region, since it is 16657undefined in non-SMP. 16658 16659Ensure that the SCI has the proper polarity and trigger, even on 16660systems that do not have an interrupt override entry in the MADT. 16661 166622.5 big driver reorganization (Pat Mochel) 16663 16664Use early table mapping code from acpitable.c (Andi Kleen) 16665 16666New blacklist entries (Andi Kleen) 16667 16668Blacklist improvements. Split blacklist code out into a separate 16669file. Move checking the blacklist to very early. Previously, we 16670would use ACPI tables, and then halfway through init, check the 16671blacklist -- too late. Now, it's early enough to completely fall- 16672back to non-ACPI. 16673 16674 166753) iASL Compiler/Disassembler version 20020918: 16676 16677Fixed a problem where the typechecking code didn't know that an 16678alias could point to a method. In other words, aliases were not 16679being dereferenced during typechecking. 16680 16681 16682---------------------------------------- 1668329 August 2002. Summary of changes for this release. 16684 166851) ACPI CA Core Subsystem Version 20020829: 16686 16687If the target of a Scope() operator already exists, it must be an 16688object type that actually opens a scope -- such as a Device, 16689Method, Scope, etc. This is a fatal runtime error. Similar error 16690check has been added to the iASL compiler also. 16691 16692Tightened up the namespace load to disallow multiple names in the 16693same scope. This previously was allowed if both objects were of 16694the same type. (i.e., a lookup was the same as entering a new 16695name). 16696 16697 166982) Linux 16699 16700Ensure that the ACPI interrupt has the proper trigger and 16701polarity. 16702 16703local_irq_disable is extraneous. (Matthew Wilcox) 16704 16705Make "acpi=off" actually do what it says, and not use the ACPI 16706interpreter *or* the tables. 16707 16708Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 16709Takayoshi) 16710 16711 167123) iASL Compiler/Disassembler Version 20020829: 16713 16714Implemented namepath optimization for name declarations. For 16715example, a declaration like "Method (\_SB_.ABCD)" would get 16716optimized to "Method (ABCD)" if the declaration is within the 16717\_SB_ scope. This optimization is in addition to the named 16718reference path optimization first released in the previous 16719version. This would seem to complete all possible optimizations 16720for namepaths within the ASL/AML. 16721 16722If the target of a Scope() operator already exists, it must be an 16723object type that actually opens a scope -- such as a Device, 16724Method, Scope, etc. 16725 16726Implemented a check and warning for unreachable code in the same 16727block below a Return() statement. 16728 16729Fixed a problem where the listing file was not generated if the 16730compiler aborted if the maximum error count was exceeded (200). 16731 16732Fixed a problem where the typechecking of method return values was 16733broken. This includes the check for a return value when the 16734method is invoked as a TermArg (a return value is expected.) 16735 16736Fixed a reported problem where EOF conditions during a quoted 16737string or comment caused a fault. 16738 16739 16740---------------------------------------- 1674115 August 2002. Summary of changes for this release. 16742 167431) ACPI CA Core Subsystem Version 20020815: 16744 16745Fixed a reported problem where a Store to a method argument that 16746contains a reference did not perform the indirect store correctly. 16747This problem was created during the conversion to the new 16748reference object model - the indirect store to a method argument 16749code was not updated to reflect the new model. 16750 16751Reworked the ACPI mode change code to better conform to ACPI 2.0, 16752handle corner cases, and improve code legibility (Kochi Takayoshi) 16753 16754Fixed a problem with the pathname parsing for the carat (^) 16755prefix. The heavy use of the carat operator by the new namepath 16756optimization in the iASL compiler uncovered a problem with the AML 16757interpreter handling of this prefix. In the case where one or 16758more carats precede a single nameseg, the nameseg was treated as 16759standalone and the search rule (to root) was inadvertently 16760applied. This could cause both the iASL compiler and the 16761interpreter to find the wrong object or to miss the error that 16762should occur if the object does not exist at that exact pathname. 16763 16764Found and fixed the problem where the HP Pavilion DSDT would not 16765load. This was a relatively minor tweak to the table loading code 16766(a problem caused by the unexpected encounter with a method 16767invocation not within a control method), but it does not solve the 16768overall issue of the execution of AML code at the table level. 16769This investigation is still ongoing. 16770 16771Code and Data Size: Current core subsystem library sizes are shown 16772below. These are the code and data sizes for the acpica.lib 16773produced by the Microsoft Visual C++ 6.0 compiler, and these 16774values do not include any ACPI driver or OSPM code. The debug 16775version of the code includes the debug output trace mechanism and 16776has a larger code and data size. Note that these values will vary 16777depending on the efficiency of the compiler and the compiler 16778options used during generation. 16779 16780 Previous Release 16781 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16782 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16783 Current Release: 16784 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16785 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16786 16787 167882) Linux 16789 16790Remove redundant slab.h include (Brad Hards) 16791 16792Fix several bugs in thermal.c (Herbert Nachtnebel) 16793 16794Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 16795 16796Change acpi_system_suspend to use updated irq functions (Pavel 16797Machek) 16798 16799Export acpi_get_firmware_table (Matthew Wilcox) 16800 16801Use proper root proc entry for ACPI (Kochi Takayoshi) 16802 16803Fix early-boot table parsing (Bjorn Helgaas) 16804 16805 168063) iASL Compiler/Disassembler 16807 16808Reworked the compiler options to make them more consistent and to 16809use two-letter options where appropriate. We were running out of 16810sensible letters. This may break some makefiles, so check the 16811current options list by invoking the compiler with no parameters. 16812 16813Completed the design and implementation of the ASL namepath 16814optimization option for the compiler. This option optimizes all 16815references to named objects to the shortest possible path. The 16816first attempt tries to utilize a single nameseg (4 characters) and 16817the "search-to-root" algorithm used by the interpreter. If that 16818cannot be used (because either the name is not in the search path 16819or there is a conflict with another object with the same name), 16820the pathname is optimized using the carat prefix (usually a 16821shorter string than specifying the entire path from the root.) 16822 16823Implemented support to obtain the DSDT from the Windows registry 16824(when the disassembly option is specified with no input file). 16825Added this code as the implementation for AcpiOsTableOverride in 16826the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 16827utility) to scan memory for the DSDT to the AcpiOsTableOverride 16828function in the DOS OSL to make the disassembler truly OS 16829independent. 16830 16831Implemented a new option to disassemble and compile in one step. 16832When used without an input filename, this option will grab the 16833DSDT from the local machine, disassemble it, and compile it in one 16834step. 16835 16836Added a warning message for invalid escapes (a backslash followed 16837by any character other than the allowable escapes). This catches 16838the quoted string error "\_SB_" (which should be "\\_SB_" ). 16839 16840Also, there are numerous instances in the ACPI specification where 16841this error occurs. 16842 16843Added a compiler option to disable all optimizations. This is 16844basically the "compatibility mode" because by using this option, 16845the AML code will come out exactly the same as other ASL 16846compilers. 16847 16848Added error messages for incorrectly ordered dependent resource 16849functions. This includes: missing EndDependentFn macro at end of 16850dependent resource list, nested dependent function macros (both 16851start and end), and missing StartDependentFn macro. These are 16852common errors that should be caught at compile time. 16853 16854Implemented _OSI support for the disassembler and compiler. _OSI 16855must be included in the namespace for proper disassembly (because 16856the disassembler must know the number of arguments.) 16857 16858Added an "optimization" message type that is optional (off by 16859default). This message is used for all optimizations - including 16860constant folding, integer optimization, and namepath optimization. 16861 16862---------------------------------------- 1686325 July 2002. Summary of changes for this release. 16864 16865 168661) ACPI CA Core Subsystem Version 20020725: 16867 16868The AML Disassembler has been enhanced to produce compilable ASL 16869code and has been integrated into the iASL compiler (see below) as 16870well as the single-step disassembly for the AML debugger and the 16871disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 16872resource templates and macros are fully supported. The 16873disassembler has been tested on over 30 different AML files, 16874producing identical AML when the resulting disassembled ASL file 16875is recompiled with the same ASL compiler. 16876 16877Modified the Resource Manager to allow zero interrupts and zero 16878dma channels during the GetCurrentResources call. This was 16879causing problems on some platforms. 16880 16881Added the AcpiOsRedirectOutput interface to the OSL to simplify 16882output redirection for the AcpiOsPrintf and AcpiOsVprintf 16883interfaces. 16884 16885Code and Data Size: Current core subsystem library sizes are shown 16886below. These are the code and data sizes for the acpica.lib 16887produced by the Microsoft Visual C++ 6.0 compiler, and these 16888values do not include any ACPI driver or OSPM code. The debug 16889version of the code includes the debug output trace mechanism and 16890has a larger code and data size. Note that these values will vary 16891depending on the efficiency of the compiler and the compiler 16892options used during generation. 16893 16894 Previous Release 16895 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16896 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16897 Current Release: 16898 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16899 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16900 16901 169022) Linux 16903 16904Fixed a panic in the EC driver (Dominik Brodowski) 16905 16906Implemented checksum of the R/XSDT itself during Linux table scan 16907(Richard Schaal) 16908 16909 169103) iASL compiler 16911 16912The AML disassembler is integrated into the compiler. The "-d" 16913option invokes the disassembler to completely disassemble an 16914input AML file, producing as output a text ASL file with the 16915extension ".dsl" (to avoid name collisions with existing .asl 16916source files.) A future enhancement will allow the disassembler 16917to obtain the BIOS DSDT from the registry under Windows. 16918 16919Fixed a problem with the VendorShort and VendorLong resource 16920descriptors where an invalid AML sequence was created. 16921 16922Implemented a fix for BufferData term in the ASL parser. It was 16923inadvertently defined twice, allowing invalid syntax to pass and 16924causing reduction conflicts. 16925 16926Fixed a problem where the Ones opcode could get converted to a 16927value of zero if "Ones" was used where a byte, word or dword value 16928was expected. The 64-bit value is now truncated to the correct 16929size with the correct value. 16930 16931 16932 16933---------------------------------------- 1693402 July 2002. Summary of changes for this release. 16935 16936 169371) ACPI CA Core Subsystem Version 20020702: 16938 16939The Table Manager code has been restructured to add several new 16940features. Tables that are not required by the core subsystem 16941(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 16942validated in any way and are returned from AcpiGetFirmwareTable if 16943requested. The AcpiOsTableOverride interface is now called for 16944each table that is loaded by the subsystem in order to allow the 16945host to override any table it chooses. Previously, only the DSDT 16946could be overridden. Added one new files, tbrsdt.c and 16947tbgetall.c. 16948 16949Fixed a problem with the conversion of internal package objects to 16950external objects (when a package is returned from a control 16951method.) The return buffer length was set to zero instead of the 16952proper length of the package object. 16953 16954Fixed a reported problem with the use of the RefOf and DeRefOf 16955operators when passing reference arguments to control methods. A 16956new type of Reference object is used internally for references 16957produced by the RefOf operator. 16958 16959Added additional error messages in the Resource Manager to explain 16960AE_BAD_DATA errors when they occur during resource parsing. 16961 16962Split the AcpiEnableSubsystem into two primitives to enable a 16963finer granularity initialization sequence. These two calls should 16964be called in this order: AcpiEnableSubsystem (flags), 16965AcpiInitializeObjects (flags). The flags parameter remains the 16966same. 16967 16968 169692) Linux 16970 16971Updated the ACPI utilities module to understand the new style of 16972fully resolved package objects that are now returned from the core 16973subsystem. This eliminates errors of the form: 16974 16975 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 16976 acpi_utils-0430 [145] acpi_evaluate_reference: 16977 Invalid element in package (not a device reference) 16978 16979The method evaluation utility uses the new buffer allocation 16980scheme instead of calling AcpiEvaluate Object twice. 16981 16982Added support for ECDT. This allows the use of the Embedded 16983 16984Controller before the namespace has been fully initialized, which 16985is necessary for ACPI 2.0 support, and for some laptops to 16986initialize properly. (Laptops using ECDT are still rare, so only 16987limited testing was performed of the added functionality.) 16988 16989Fixed memory leaks in the EC driver. 16990 16991Eliminated a brittle code structure in acpi_bus_init(). 16992 16993Eliminated the acpi_evaluate() helper function in utils.c. It is 16994no longer needed since acpi_evaluate_object can optionally 16995allocate memory for the return object. 16996 16997Implemented fix for keyboard hang when getting battery readings on 16998some systems (Stephen White) 16999 17000PCI IRQ routing update (Dominik Brodowski) 17001 17002Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 17003support 17004 17005---------------------------------------- 1700611 June 2002. Summary of changes for this release. 17007 17008 170091) ACPI CA Core Subsystem Version 20020611: 17010 17011Fixed a reported problem where constants such as Zero and One 17012appearing within _PRT packages were not handled correctly within 17013the resource manager code. Originally reported against the ASL 17014compiler because the code generator now optimizes integers to 17015their minimal AML representation (i.e. AML constants if possible.) 17016The _PRT code now handles all AML constant opcodes correctly 17017(Zero, One, Ones, Revision). 17018 17019Fixed a problem with the Concatenate operator in the AML 17020interpreter where a buffer result object was incorrectly marked as 17021not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 17022 17023All package sub-objects are now fully resolved before they are 17024returned from the external ACPI interfaces. This means that name 17025strings are resolved to object handles, and constant operators 17026(Zero, One, Ones, Revision) are resolved to Integers. 17027 17028Implemented immediate resolution of the AML Constant opcodes 17029(Zero, One, Ones, Revision) to Integer objects upon detection 17030within the AML stream. This has simplified and reduced the 17031generated code size of the subsystem by eliminating about 10 17032switch statements for these constants (which previously were 17033contained in Reference objects.) The complicating issues are that 17034the Zero opcode is used as a "placeholder" for unspecified 17035optional target operands and stores to constants are defined to be 17036no-ops. 17037 17038Code and Data Size: Current core subsystem library sizes are shown 17039below. These are the code and data sizes for the acpica.lib 17040produced by the Microsoft Visual C++ 6.0 compiler, and these 17041values do not include any ACPI driver or OSPM code. The debug 17042version of the code includes the debug output trace mechanism and 17043has a larger code and data size. Note that these values will vary 17044depending on the efficiency of the compiler and the compiler 17045options used during generation. 17046 17047 Previous Release 17048 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17049 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17050 Current Release: 17051 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17052 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17053 17054 170552) Linux 17056 17057 17058Added preliminary support for obtaining _TRA data for PCI root 17059bridges (Bjorn Helgaas). 17060 17061 170623) iASL Compiler Version X2046: 17063 17064Fixed a problem where the "_DDN" reserved name was defined to be a 17065control method with one argument. There are no arguments, and 17066_DDN does not have to be a control method. 17067 17068Fixed a problem with the Linux version of the compiler where the 17069source lines printed with error messages were the wrong lines. 17070This turned out to be the "LF versus CR/LF" difference between 17071Windows and Unix. This appears to be the longstanding issue 17072concerning listing output and error messages. 17073 17074Fixed a problem with the Linux version of compiler where opcode 17075names within error messages were wrong. This was caused by a 17076slight difference in the output of the Flex tool on Linux versus 17077Windows. 17078 17079Fixed a problem with the Linux compiler where the hex output files 17080contained some garbage data caused by an internal buffer overrun. 17081 17082 17083---------------------------------------- 1708417 May 2002. Summary of changes for this release. 17085 17086 170871) ACPI CA Core Subsystem Version 20020517: 17088 17089Implemented a workaround to an BIOS bug discovered on the HP 17090OmniBook where the FADT revision number and the table size are 17091inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 17092behavior is to fallback to using only the ACPI 1.0 fields of the 17093FADT if the table is too small to be a ACPI 2.0 table as claimed 17094by the revision number. Although this is a BIOS bug, this is a 17095case where the workaround is simple enough and with no side 17096effects, so it seemed prudent to add it. A warning message is 17097issued, however. 17098 17099Implemented minimum size checks for the fixed-length ACPI tables - 17100- the FADT and FACS, as well as consistency checks between the 17101revision number and the table size. 17102 17103Fixed a reported problem in the table override support where the 17104new table pointer was incorrectly treated as a physical address 17105instead of a logical address. 17106 17107Eliminated the use of the AE_AML_ERROR exception and replaced it 17108with more descriptive codes. 17109 17110Fixed a problem where an exception would occur if an ASL Field was 17111defined with no named Field Units underneath it (used by some 17112index fields). 17113 17114Code and Data Size: Current core subsystem library sizes are shown 17115below. These are the code and data sizes for the acpica.lib 17116produced by the Microsoft Visual C++ 6.0 compiler, and these 17117values do not include any ACPI driver or OSPM code. The debug 17118version of the code includes the debug output trace mechanism and 17119has a larger code and data size. Note that these values will vary 17120depending on the efficiency of the compiler and the compiler 17121options used during generation. 17122 17123 Previous Release 17124 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17125 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17126 Current Release: 17127 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17128 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17129 17130 17131 171322) Linux 17133 17134Much work done on ACPI init (MADT and PCI IRQ routing support). 17135(Paul D. and Dominik Brodowski) 17136 17137Fix PCI IRQ-related panic on boot (Sam Revitch) 17138 17139Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 17140 17141Fix "MHz" typo (Dominik Brodowski) 17142 17143Fix RTC year 2000 issue (Dominik Brodowski) 17144 17145Preclude multiple button proc entries (Eric Brunet) 17146 17147Moved arch-specific code out of include/platform/aclinux.h 17148 171493) iASL Compiler Version X2044: 17150 17151Implemented error checking for the string used in the EISAID macro 17152(Usually used in the definition of the _HID object.) The code now 17153strictly enforces the PnP format - exactly 7 characters, 3 17154uppercase letters and 4 hex digits. 17155 17156If a raw string is used in the definition of the _HID object 17157(instead of the EISAID macro), the string must contain all 17158alphanumeric characters (e.g., "*PNP0011" is not allowed because 17159of the asterisk.) 17160 17161Implemented checking for invalid use of ACPI reserved names for 17162most of the name creation operators (Name, Device, Event, Mutex, 17163OperationRegion, PowerResource, Processor, and ThermalZone.) 17164Previously, this check was only performed for control methods. 17165 17166Implemented an additional check on the Name operator to emit an 17167error if a reserved name that must be implemented in ASL as a 17168control method is used. We know that a reserved name must be a 17169method if it is defined with input arguments. 17170 17171The warning emitted when a namespace object reference is not found 17172during the cross reference phase has been changed into an error. 17173The "External" directive should be used for names defined in other 17174modules. 17175 17176 171774) Tools and Utilities 17178 17179The 16-bit tools (adump16 and aexec16) have been regenerated and 17180tested. 17181 17182Fixed a problem with the output of both acpidump and adump16 where 17183the indentation of closing parentheses and brackets was not 17184 17185aligned properly with the parent block. 17186 17187 17188---------------------------------------- 1718903 May 2002. Summary of changes for this release. 17190 17191 171921) ACPI CA Core Subsystem Version 20020503: 17193 17194Added support a new OSL interface that allows the host operating 17195 17196system software to override the DSDT found in the firmware - 17197AcpiOsTableOverride. With this interface, the OSL can examine the 17198version of the firmware DSDT and replace it with a different one 17199if desired. 17200 17201Added new external interfaces for accessing ACPI registers from 17202device drivers and other system software - AcpiGetRegister and 17203AcpiSetRegister. This was simply an externalization of the 17204existing AcpiHwBitRegister interfaces. 17205 17206Fixed a regression introduced in the previous build where the 17207ASL/AML CreateField operator always returned an error, 17208"destination must be a NS Node". 17209 17210Extended the maximum time (before failure) to successfully enable 17211ACPI mode to 3 seconds. 17212 17213Code and Data Size: Current core subsystem library sizes are shown 17214below. These are the code and data sizes for the acpica.lib 17215produced by the Microsoft Visual C++ 6.0 compiler, and these 17216values do not include any ACPI driver or OSPM code. The debug 17217version of the code includes the debug output trace mechanism and 17218has a larger code and data size. Note that these values will vary 17219depending on the efficiency of the compiler and the compiler 17220options used during generation. 17221 17222 Previous Release 17223 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17224 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17225 Current Release: 17226 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17227 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17228 17229 172302) Linux 17231 17232Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 17233free. While 3 out of 4 of our in-house systems work fine, the last 17234one still hangs when testing the LAPIC timer. 17235 17236Renamed many files in 2.5 kernel release to omit "acpi_" from the 17237name. 17238 17239Added warning on boot for Presario 711FR. 17240 17241Sleep improvements (Pavel Machek) 17242 17243ACPI can now be built without CONFIG_PCI enabled. 17244 17245IA64: Fixed memory map functions (JI Lee) 17246 17247 172483) iASL Compiler Version X2043: 17249 17250Added support to allow the compiler to be integrated into the MS 17251VC++ development environment for one-button compilation of single 17252files or entire projects -- with error-to-source-line mapping. 17253 17254Implemented support for compile-time constant folding for the 17255Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 17256specification. This allows the ASL writer to use expressions 17257instead of Integer/Buffer/String constants in terms that must 17258evaluate to constants at compile time and will also simplify the 17259emitted AML in any such sub-expressions that can be folded 17260(evaluated at compile-time.) This increases the size of the 17261compiler significantly because a portion of the ACPI CA AML 17262interpreter is included within the compiler in order to pre- 17263evaluate constant expressions. 17264 17265 17266Fixed a problem with the "Unicode" ASL macro that caused the 17267compiler to fault. (This macro is used in conjunction with the 17268_STR reserved name.) 17269 17270Implemented an AML opcode optimization to use the Zero, One, and 17271Ones opcodes where possible to further reduce the size of integer 17272constants and thus reduce the overall size of the generated AML 17273code. 17274 17275Implemented error checking for new reserved terms for ACPI version 172762.0A. 17277 17278Implemented the -qr option to display the current list of ACPI 17279reserved names known to the compiler. 17280 17281Implemented the -qc option to display the current list of ASL 17282operators that are allowed within constant expressions and can 17283therefore be folded at compile time if the operands are constants. 17284 17285 172864) Documentation 17287 17288Updated the Programmer's Reference for new interfaces, data types, 17289and memory allocation model options. 17290 17291Updated the iASL Compiler User Reference to apply new format and 17292add information about new features and options. 17293 17294---------------------------------------- 1729519 April 2002. Summary of changes for this release. 17296 172971) ACPI CA Core Subsystem Version 20020419: 17298 17299The source code base for the Core Subsystem has been completely 17300cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17301versions. The Lint option files used are included in the 17302/acpi/generate/lint directory. 17303 17304Implemented enhanced status/error checking across the entire 17305Hardware manager subsystem. Any hardware errors (reported from 17306the OSL) are now bubbled up and will abort a running control 17307method. 17308 17309 17310Fixed a problem where the per-ACPI-table integer width (32 or 64) 17311was stored only with control method nodes, causing a fault when 17312non-control method code was executed during table loading. The 17313solution implemented uses a global variable to indicate table 17314width across the entire ACPI subsystem. Therefore, ACPI CA does 17315not support mixed integer widths across different ACPI tables 17316(DSDT, SSDT). 17317 17318Fixed a problem where NULL extended fields (X fields) in an ACPI 173192.0 ACPI FADT caused the table load to fail. Although the 17320existing ACPI specification is a bit fuzzy on this topic, the new 17321behavior is to fall back on a ACPI 1.0 field if the corresponding 17322ACPI 2.0 X field is zero (even though the table revision indicates 17323a full ACPI 2.0 table.) The ACPI specification will be updated to 17324clarify this issue. 17325 17326Fixed a problem with the SystemMemory operation region handler 17327where memory was always accessed byte-wise even if the AML- 17328specified access width was larger than a byte. This caused 17329problems on systems with memory-mapped I/O. Memory is now 17330accessed with the width specified. On systems that do not support 17331non-aligned transfers, a check is made to guarantee proper address 17332alignment before proceeding in order to avoid an AML-caused 17333alignment fault within the kernel. 17334 17335 17336Fixed a problem with the ExtendedIrq resource where only one byte 17337of the 4-byte Irq field was extracted. 17338 17339Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17340function was out of date and required a rewrite. 17341 17342Code and Data Size: Current core subsystem library sizes are shown 17343below. These are the code and data sizes for the acpica.lib 17344produced by the Microsoft Visual C++ 6.0 compiler, and these 17345values do not include any ACPI driver or OSPM code. The debug 17346version of the code includes the debug output trace mechanism and 17347has a larger code and data size. Note that these values will vary 17348depending on the efficiency of the compiler and the compiler 17349options used during generation. 17350 17351 Previous Release 17352 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17353 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17354 Current Release: 17355 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17356 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17357 17358 173592) Linux 17360 17361PCI IRQ routing fixes (Dominik Brodowski) 17362 17363 173643) iASL Compiler Version X2042: 17365 17366Implemented an additional compile-time error check for a field 17367unit whose size + minimum access width would cause a run-time 17368access beyond the end-of-region. Previously, only the field size 17369itself was checked. 17370 17371The Core subsystem and iASL compiler now share a common parse 17372object in preparation for compile-time evaluation of the type 173733/4/5 ASL operators. 17374 17375 17376---------------------------------------- 17377Summary of changes for this release: 03_29_02 17378 173791) ACPI CA Core Subsystem Version 20020329: 17380 17381Implemented support for late evaluation of TermArg operands to 17382Buffer and Package objects. This allows complex expressions to be 17383used in the declarations of these object types. 17384 17385Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 173861.0, if the field was larger than 32 bits, it was returned as a 17387buffer - otherwise it was returned as an integer. In ACPI 2.0, 17388the field is returned as a buffer only if the field is larger than 1738964 bits. The TableRevision is now considered when making this 17390conversion to avoid incompatibility with existing ASL code. 17391 17392Implemented logical addressing for AcpiOsGetRootPointer. This 17393allows an RSDP with either a logical or physical address. With 17394this support, the host OS can now override all ACPI tables with 17395one logical RSDP. Includes implementation of "typed" pointer 17396support to allow a common data type for both physical and logical 17397pointers internally. This required a change to the 17398AcpiOsGetRootPointer interface. 17399 17400Implemented the use of ACPI 2.0 Generic Address Structures for all 17401GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 17402mapped I/O for these ACPI features. 17403 17404Initialization now ignores not only non-required tables (All 17405tables other than the FADT, FACS, DSDT, and SSDTs), but also does 17406not validate the table headers of unrecognized tables. 17407 17408Fixed a problem where a notify handler could only be 17409installed/removed on an object of type Device. All "notify" 17410 17411objects are now supported -- Devices, Processor, Power, and 17412Thermal. 17413 17414Removed most verbosity from the ACPI_DB_INFO debug level. Only 17415critical information is returned when this debug level is enabled. 17416 17417Code and Data Size: Current core subsystem library sizes are shown 17418below. These are the code and data sizes for the acpica.lib 17419produced by the Microsoft Visual C++ 6.0 compiler, and these 17420values do not include any ACPI driver or OSPM code. The debug 17421version of the code includes the debug output trace mechanism and 17422has a larger code and data size. Note that these values will vary 17423depending on the efficiency of the compiler and the compiler 17424options used during generation. 17425 17426 Previous Release 17427 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17428 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17429 Current Release: 17430 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17431 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17432 17433 174342) Linux: 17435 17436The processor driver (acpi_processor.c) now fully supports ACPI 174372.0-based processor performance control (e.g. Intel(R) 17438SpeedStep(TM) technology) Note that older laptops that only have 17439the Intel "applet" interface are not supported through this. The 17440'limit' and 'performance' interface (/proc) are fully functional. 17441[Note that basic policy for controlling performance state 17442transitions will be included in the next version of ospmd.] The 17443idle handler was modified to more aggressively use C2, and PIIX4 17444errata handling underwent a complete overhaul (big thanks to 17445Dominik Brodowski). 17446 17447Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 17448based devices in the ACPI namespace are now dynamically bound 17449(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 17450This allows, among other things, ACPI to resolve bus numbers for 17451subordinate PCI bridges. 17452 17453Enhanced PCI IRQ routing to get the proper bus number for _PRT 17454entries defined underneath PCI bridges. 17455 17456Added IBM 600E to bad bios list due to invalid _ADR value for 17457PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 17458 17459In the process of adding full MADT support (e.g. IOAPIC) for IA32 17460(acpi.c, mpparse.c) -- stay tuned. 17461 17462Added back visual differentiation between fixed-feature and 17463control-method buttons in dmesg. Buttons are also subtyped (e.g. 17464button/power/PWRF) to simplify button identification. 17465 17466We no longer use -Wno-unused when compiling debug. Please ignore 17467any "_THIS_MODULE defined but not used" messages. 17468 17469Can now shut down the system using "magic sysrq" key. 17470 17471 174723) iASL Compiler version 2041: 17473 17474Fixed a problem where conversion errors for hex/octal/decimal 17475constants were not reported. 17476 17477Implemented a fix for the General Register template Address field. 17478This field was 8 bits when it should be 64. 17479 17480Fixed a problem where errors/warnings were no longer being emitted 17481within the listing output file. 17482 17483Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 17484exactly 4 characters, alphanumeric only. 17485 17486 17487 17488 17489---------------------------------------- 17490Summary of changes for this release: 03_08_02 17491 17492 174931) ACPI CA Core Subsystem Version 20020308: 17494 17495Fixed a problem with AML Fields where the use of the "AccessAny" 17496keyword could cause an interpreter error due to attempting to read 17497or write beyond the end of the parent Operation Region. 17498 17499Fixed a problem in the SystemMemory Operation Region handler where 17500an attempt was made to map memory beyond the end of the region. 17501This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 17502errors on some Linux systems. 17503 17504Fixed a problem where the interpreter/namespace "search to root" 17505algorithm was not functioning for some object types. Relaxed the 17506internal restriction on the search to allow upsearches for all 17507external object types as well as most internal types. 17508 17509 175102) Linux: 17511 17512We now use safe_halt() macro versus individual calls to sti | hlt. 17513 17514Writing to the processor limit interface should now work. "echo 1" 17515will increase the limit, 2 will decrease, and 0 will reset to the 17516 17517default. 17518 17519 175203) ASL compiler: 17521 17522Fixed segfault on Linux version. 17523 17524 17525---------------------------------------- 17526Summary of changes for this release: 02_25_02 17527 175281) ACPI CA Core Subsystem: 17529 17530 17531Fixed a problem where the GPE bit masks were not initialized 17532properly, causing erratic GPE behavior. 17533 17534Implemented limited support for multiple calling conventions. The 17535code can be generated with either the VPL (variable parameter 17536list, or "C") convention, or the FPL (fixed parameter list, or 17537"Pascal") convention. The core subsystem is about 3.4% smaller 17538when generated with FPL. 17539 17540 175412) Linux 17542 17543Re-add some /proc/acpi/event functionality that was lost during 17544the rewrite 17545 17546Resolved issue with /proc events for fixed-feature buttons showing 17547up as the system device. 17548 17549Fixed checks on C2/C3 latencies to be inclusive of maximum values. 17550 17551Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 17552 17553Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 17554 17555Fixed limit interface & usage to fix bugs with passive cooling 17556hysterisis. 17557 17558Restructured PRT support. 17559 17560 17561---------------------------------------- 17562Summary of changes for this label: 02_14_02 17563 17564 175651) ACPI CA Core Subsystem: 17566 17567Implemented support in AcpiLoadTable to allow loading of FACS and 17568FADT tables. 17569 17570Support for the now-obsolete interim 0.71 64-bit ACPI tables has 17571been removed. All 64-bit platforms should be migrated to the ACPI 175722.0 tables. The actbl71.h header has been removed from the source 17573tree. 17574 17575All C macros defined within the subsystem have been prefixed with 17576"ACPI_" to avoid collision with other system include files. 17577 17578Removed the return value for the two AcpiOsPrint interfaces, since 17579it is never used and causes lint warnings for ignoring the return 17580value. 17581 17582Added error checking to all internal mutex acquire and release 17583calls. Although a failure from one of these interfaces is 17584probably a fatal system error, these checks will cause the 17585immediate abort of the currently executing method or interface. 17586 17587Fixed a problem where the AcpiSetCurrentResources interface could 17588fault. This was a side effect of the deployment of the new memory 17589allocation model. 17590 17591Fixed a couple of problems with the Global Lock support introduced 17592in the last major build. The "common" (1.0/2.0) internal FACS was 17593being overwritten with the FACS signature and clobbering the 17594Global Lock pointer. Also, the actual firmware FACS was being 17595unmapped after construction of the "common" FACS, preventing 17596access to the actual Global Lock field within it. The "common" 17597internal FACS is no longer installed as an actual ACPI table; it 17598is used simply as a global. 17599 17600Code and Data Size: Current core subsystem library sizes are shown 17601below. These are the code and data sizes for the acpica.lib 17602produced by the Microsoft Visual C++ 6.0 compiler, and these 17603values do not include any ACPI driver or OSPM code. The debug 17604version of the code includes the debug output trace mechanism and 17605has a larger code and data size. Note that these values will vary 17606depending on the efficiency of the compiler and the compiler 17607options used during generation. 17608 17609 Previous Release (02_07_01) 17610 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17611 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17612 Current Release: 17613 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17614 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17615 17616 176172) Linux 17618 17619Updated Linux-specific code for core macro and OSL interface 17620changes described above. 17621 17622Improved /proc/acpi/event. It now can be opened only once and has 17623proper poll functionality. 17624 17625Fixed and restructured power management (acpi_bus). 17626 17627Only create /proc "view by type" when devices of that class exist. 17628 17629Fixed "charging/discharging" bug (and others) in acpi_battery. 17630 17631Improved thermal zone code. 17632 17633 176343) ASL Compiler, version X2039: 17635 17636 17637Implemented the new compiler restriction on ASL String hex/octal 17638escapes to non-null, ASCII values. An error results if an invalid 17639value is used. (This will require an ACPI 2.0 specification 17640change.) 17641 17642AML object labels that are output to the optional C and ASM source 17643are now prefixed with both the ACPI table signature and table ID 17644to help guarantee uniqueness within a large BIOS project. 17645 17646 17647---------------------------------------- 17648Summary of changes for this label: 02_01_02 17649 176501) ACPI CA Core Subsystem: 17651 17652ACPI 2.0 support is complete in the entire Core Subsystem and the 17653ASL compiler. All new ACPI 2.0 operators are implemented and all 17654other changes for ACPI 2.0 support are complete. With 17655simultaneous code and data optimizations throughout the subsystem, 17656ACPI 2.0 support has been implemented with almost no additional 17657cost in terms of code and data size. 17658 17659Implemented a new mechanism for allocation of return buffers. If 17660the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 17661be allocated on behalf of the caller. Consolidated all return 17662buffer validation and allocation to a common procedure. Return 17663buffers will be allocated via the primary OSL allocation interface 17664since it appears that a separate pool is not needed by most users. 17665If a separate pool is required for these buffers, the caller can 17666still use the original mechanism and pre-allocate the buffer(s). 17667 17668Implemented support for string operands within the DerefOf 17669operator. 17670 17671Restructured the Hardware and Event managers to be table driven, 17672simplifying the source code and reducing the amount of generated 17673code. 17674 17675Split the common read/write low-level ACPI register bitfield 17676procedure into a separate read and write, simplifying the code 17677considerably. 17678 17679Obsoleted the AcpiOsCallocate OSL interface. This interface was 17680used only a handful of times and didn't have enough critical mass 17681for a separate interface. Replaced with a common calloc procedure 17682in the core. 17683 17684Fixed a reported problem with the GPE number mapping mechanism 17685that allows GPE1 numbers to be non-contiguous with GPE0. 17686Reorganized the GPE information and shrunk a large array that was 17687originally large enough to hold info for all possible GPEs (256) 17688to simply large enough to hold all GPEs up to the largest GPE 17689number on the machine. 17690 17691Fixed a reported problem with resource structure alignment on 64- 17692bit platforms. 17693 17694Changed the AcpiEnableEvent and AcpiDisableEvent external 17695interfaces to not require any flags for the common case of 17696enabling/disabling a GPE. 17697 17698Implemented support to allow a "Notify" on a Processor object. 17699 17700Most TBDs in comments within the source code have been resolved 17701and eliminated. 17702 17703 17704Fixed a problem in the interpreter where a standalone parent 17705prefix (^) was not handled correctly in the interpreter and 17706debugger. 17707 17708Removed obsolete and unnecessary GPE save/restore code. 17709 17710Implemented Field support in the ASL Load operator. This allows a 17711table to be loaded from a named field, in addition to loading a 17712table directly from an Operation Region. 17713 17714Implemented timeout and handle support in the external Global Lock 17715interfaces. 17716 17717Fixed a problem in the AcpiDump utility where pathnames were no 17718longer being generated correctly during the dump of named objects. 17719 17720Modified the AML debugger to give a full display of if/while 17721predicates instead of just one AML opcode at a time. (The 17722predicate can have several nested ASL statements.) The old method 17723was confusing during single stepping. 17724 17725Code and Data Size: Current core subsystem library sizes are shown 17726below. These are the code and data sizes for the acpica.lib 17727produced by the Microsoft Visual C++ 6.0 compiler, and these 17728values do not include any ACPI driver or OSPM code. The debug 17729version of the code includes the debug output trace mechanism and 17730has a larger code and data size. Note that these values will vary 17731depending on the efficiency of the compiler and the compiler 17732options used during generation. 17733 17734 Previous Release (12_18_01) 17735 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17736 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17737 Current Release: 17738 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17739 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17740 177412) Linux 17742 17743 Implemented fix for PIIX reverse throttling errata (Processor 17744driver) 17745 17746Added new Limit interface (Processor and Thermal drivers) 17747 17748New thermal policy (Thermal driver) 17749 17750Many updates to /proc 17751 17752Battery "low" event support (Battery driver) 17753 17754Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 17755 17756IA32 - IA64 initialization unification, no longer experimental 17757 17758Menuconfig options redesigned 17759 177603) ASL Compiler, version X2037: 17761 17762Implemented several new output features to simplify integration of 17763AML code into firmware: 1) Output the AML in C source code with 17764labels for each named ASL object. The original ASL source code 17765is interleaved as C comments. 2) Output the AML in ASM source code 17766with labels and interleaved ASL source. 3) Output the AML in 17767raw hex table form, in either C or ASM. 17768 17769Implemented support for optional string parameters to the 17770LoadTable operator. 17771 17772Completed support for embedded escape sequences within string 17773literals. The compiler now supports all single character escapes 17774as well as the Octal and Hex escapes. Note: the insertion of a 17775null byte into a string literal (via the hex/octal escape) causes 17776the string to be immediately terminated. A warning is issued. 17777 17778Fixed a problem where incorrect AML was generated for the case 17779where an ASL namepath consists of a single parent prefix ( 17780 17781) with no trailing name segments. 17782 17783The compiler has been successfully generated with a 64-bit C 17784compiler. 17785 17786 17787 17788 17789---------------------------------------- 17790Summary of changes for this label: 12_18_01 17791 177921) Linux 17793 17794Enhanced blacklist with reason and severity fields. Any table's 17795signature may now be used to identify a blacklisted system. 17796 17797Call _PIC control method to inform the firmware which interrupt 17798model the OS is using. Turn on any disabled link devices. 17799 17800Cleaned up busmgr /proc error handling (Andreas Dilger) 17801 17802 2) ACPI CA Core Subsystem: 17803 17804Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 17805while loop) 17806 17807Completed implementation of the ACPI 2.0 "Continue", 17808"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 17809operators. All new ACPI 2.0 operators are now implemented in both 17810the ASL compiler and the AML interpreter. The only remaining ACPI 178112.0 task is support for the String data type in the DerefOf 17812operator. Fixed a problem with AcquireMutex where the status code 17813was lost if the caller had to actually wait for the mutex. 17814 17815Increased the maximum ASL Field size from 64K bits to 4G bits. 17816 17817Completed implementation of the external Global Lock interfaces -- 17818AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 17819Handler parameters were added. 17820 17821Completed another pass at removing warnings and issues when 17822compiling with 64-bit compilers. The code now compiles cleanly 17823with the Intel 64-bit C/C++ compiler. Most notably, the pointer 17824add and subtract (diff) macros have changed considerably. 17825 17826 17827Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1782864-bit platforms, 32-bits on all others. This type is used 17829wherever memory allocation and/or the C sizeof() operator is used, 17830and affects the OSL memory allocation interfaces AcpiOsAllocate 17831and AcpiOsCallocate. 17832 17833Implemented sticky user breakpoints in the AML debugger. 17834 17835Code and Data Size: Current core subsystem library sizes are shown 17836below. These are the code and data sizes for the acpica.lib 17837produced by the Microsoft Visual C++ 6.0 compiler, and these 17838values do not include any ACPI driver or OSPM code. The debug 17839version of the code includes the debug output trace mechanism and 17840has a larger code and data size. Note that these values will vary 17841depending on the efficiency of the compiler and the compiler 17842options used during generation. 17843 17844 Previous Release (12_05_01) 17845 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17846 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17847 Current Release: 17848 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17849 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17850 17851 3) ASL Compiler, version X2034: 17852 17853Now checks for (and generates an error if detected) the use of a 17854Break or Continue statement without an enclosing While statement. 17855 17856 17857Successfully generated the compiler with the Intel 64-bit C 17858compiler. 17859 17860 ---------------------------------------- 17861Summary of changes for this label: 12_05_01 17862 17863 1) ACPI CA Core Subsystem: 17864 17865The ACPI 2.0 CopyObject operator is fully implemented. This 17866operator creates a new copy of an object (and is also used to 17867bypass the "implicit conversion" mechanism of the Store operator.) 17868 17869The ACPI 2.0 semantics for the SizeOf operator are fully 17870implemented. The change is that performing a SizeOf on a 17871reference object causes an automatic dereference of the object to 17872the actual value before the size is evaluated. This behavior was 17873undefined in ACPI 1.0. 17874 17875The ACPI 2.0 semantics for the Extended IRQ resource descriptor 17876have been implemented. The interrupt polarity and mode are now 17877independently set. 17878 17879Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 17880appearing in Package objects were not properly converted to 17881integers when the internal Package was converted to an external 17882object (via the AcpiEvaluateObject interface.) 17883 17884Fixed a problem with the namespace object deletion mechanism for 17885objects created by control methods. There were two parts to this 17886problem: 1) Objects created during the initialization phase method 17887parse were not being deleted, and 2) The object owner ID mechanism 17888to track objects was broken. 17889 17890Fixed a problem where the use of the ASL Scope operator within a 17891control method would result in an invalid opcode exception. 17892 17893Fixed a problem introduced in the previous label where the buffer 17894length required for the _PRT structure was not being returned 17895correctly. 17896 17897Code and Data Size: Current core subsystem library sizes are shown 17898below. These are the code and data sizes for the acpica.lib 17899produced by the Microsoft Visual C++ 6.0 compiler, and these 17900values do not include any ACPI driver or OSPM code. The debug 17901version of the code includes the debug output trace mechanism and 17902has a larger code and data size. Note that these values will vary 17903depending on the efficiency of the compiler and the compiler 17904options used during generation. 17905 17906 Previous Release (11_20_01) 17907 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17908 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17909 17910 Current Release: 17911 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17912 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17913 17914 2) Linux: 17915 17916Updated all files to apply cleanly against 2.4.16. 17917 17918Added basic PCI Interrupt Routing Table (PRT) support for IA32 17919(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 17920version supports both static and dynamic PRT entries, but dynamic 17921entries are treated as if they were static (not yet 17922reconfigurable). Architecture- specific code to use this data is 17923absent on IA32 but should be available shortly. 17924 17925Changed the initialization sequence to start the ACPI interpreter 17926(acpi_init) prior to initialization of the PCI driver (pci_init) 17927in init/main.c. This ordering is required to support PRT and 17928facilitate other (future) enhancement. A side effect is that the 17929ACPI bus driver and certain device drivers can no longer be loaded 17930as modules. 17931 17932Modified the 'make menuconfig' options to allow PCI Interrupt 17933Routing support to be included without the ACPI Bus and other 17934device drivers. 17935 17936 3) ASL Compiler, version X2033: 17937 17938Fixed some issues with the use of the new CopyObject and 17939DataTableRegion operators. Both are fully functional. 17940 17941 ---------------------------------------- 17942Summary of changes for this label: 11_20_01 17943 17944 20 November 2001. Summary of changes for this release. 17945 17946 1) ACPI CA Core Subsystem: 17947 17948Updated Index support to match ACPI 2.0 semantics. Storing a 17949Integer, String, or Buffer to an Index of a Buffer will store only 17950the least-significant byte of the source to the Indexed buffer 17951byte. Multiple writes are not performed. 17952 17953Fixed a problem where the access type used in an AccessAs ASL 17954operator was not recorded correctly into the field object. 17955 17956Fixed a problem where ASL Event objects were created in a 17957signalled state. Events are now created in an unsignalled state. 17958 17959The internal object cache is now purged after table loading and 17960initialization to reduce the use of dynamic kernel memory -- on 17961the assumption that object use is greatest during the parse phase 17962of the entire table (versus the run-time use of individual control 17963methods.) 17964 17965ACPI 2.0 variable-length packages are now fully operational. 17966 17967Code and Data Size: Code and Data optimizations have permitted new 17968feature development with an actual reduction in the library size. 17969Current core subsystem library sizes are shown below. These are 17970the code and data sizes for the acpica.lib produced by the 17971Microsoft Visual C++ 6.0 compiler, and these values do not include 17972any ACPI driver or OSPM code. The debug version of the code 17973includes the debug output trace mechanism and has a larger code 17974and data size. Note that these values will vary depending on the 17975efficiency of the compiler and the compiler options used during 17976generation. 17977 17978 Previous Release (11_09_01): 17979 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17980 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17981 17982 Current Release: 17983 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17984 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17985 17986 2) Linux: 17987 17988Enhanced the ACPI boot-time initialization code to allow the use 17989of Local APIC tables for processor enumeration on IA-32, and to 17990pave the way for a fully MPS-free boot (on SMP systems) in the 17991near future. This functionality replaces 17992arch/i386/kernel/acpitables.c, which was introduced in an earlier 179932.4.15-preX release. To enable this feature you must add 17994"acpi_boot=on" to the kernel command line -- see the help entry 17995for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 17996the works... 17997 17998Restructured the configuration options to allow boot-time table 17999parsing support without inclusion of the ACPI Interpreter (and 18000other) code. 18001 18002NOTE: This release does not include fixes for the reported events, 18003power-down, and thermal passive cooling issues (coming soon). 18004 18005 3) ASL Compiler: 18006 18007Added additional typechecking for Fields within restricted access 18008Operation Regions. All fields within EC and CMOS regions must be 18009declared with ByteAcc. All fields within SMBus regions must be 18010declared with the BufferAcc access type. 18011 18012Fixed a problem where the listing file output of control methods 18013no longer interleaved the actual AML code with the ASL source 18014code. 18015 18016 18017 18018 18019---------------------------------------- 18020Summary of changes for this label: 11_09_01 18021 180221) ACPI CA Core Subsystem: 18023 18024Implemented ACPI 2.0-defined support for writes to fields with a 18025Buffer, String, or Integer source operand that is smaller than the 18026target field. In these cases, the source operand is zero-extended 18027to fill the target field. 18028 18029Fixed a problem where a Field starting bit offset (within the 18030parent operation region) was calculated incorrectly if the 18031 18032alignment of the field differed from the access width. This 18033affected CreateWordField, CreateDwordField, CreateQwordField, and 18034possibly other fields that use the "AccessAny" keyword. 18035 18036Fixed a problem introduced in the 11_02_01 release where indirect 18037stores through method arguments did not operate correctly. 18038 180392) Linux: 18040 18041Implemented boot-time ACPI table parsing support 18042(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 18043facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 18044legacy BIOS interfaces (e.g. MPS) for the configuration of system 18045processors, memory, and interrupts during setup_arch(). Note that 18046this patch does not include the required architecture-specific 18047changes required to apply this information -- subsequent patches 18048will be posted for both IA32 and IA64 to achieve this. 18049 18050Added low-level sleep support for IA32 platforms, courtesy of Pat 18051Mochel. This allows IA32 systems to transition to/from various 18052sleeping states (e.g. S1, S3), although the lack of a centralized 18053driver model and power-manageable drivers will prevent its 18054(successful) use on most systems. 18055 18056Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 18057submenu, unified IA32 and IA64 options, added new "Boot using ACPI 18058tables" option, etc. 18059 18060Increased the default timeout for the EC driver from 1ms to 10ms 18061(1000 cycles of 10us) to try to address AE_TIME errors during EC 18062transactions. 18063 18064 ---------------------------------------- 18065Summary of changes for this label: 11_02_01 18066 180671) ACPI CA Core Subsystem: 18068 18069ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 18070(QWordAcc keyword). All ACPI 2.0 64-bit support is now 18071implemented. 18072 18073OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 18074changes to support ACPI 2.0 Qword field access. Read/Write 18075PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 18076accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 18077the value parameter for the address space handler interface is now 18078an ACPI_INTEGER. OSL implementations of these interfaces must now 18079handle the case where the Width parameter is 64. 18080 18081Index Fields: Fixed a problem where unaligned bit assembly and 18082disassembly for IndexFields was not supported correctly. 18083 18084Index and Bank Fields: Nested Index and Bank Fields are now 18085supported. During field access, a check is performed to ensure 18086that the value written to an Index or Bank register is not out of 18087the range of the register. The Index (or Bank) register is 18088written before each access to the field data. Future support will 18089include allowing individual IndexFields to be wider than the 18090DataRegister width. 18091 18092Fields: Fixed a problem where the AML interpreter was incorrectly 18093attempting to write beyond the end of a Field/OpRegion. This was 18094a boundary case that occurred when a DWORD field was written to a 18095BYTE access OpRegion, forcing multiple writes and causing the 18096interpreter to write one datum too many. 18097 18098Fields: Fixed a problem with Field/OpRegion access where the 18099starting bit address of a field was incorrectly calculated if the 18100current access type was wider than a byte (WordAcc, DwordAcc, or 18101QwordAcc). 18102 18103Fields: Fixed a problem where forward references to individual 18104FieldUnits (individual Field names within a Field definition) were 18105not resolved during the AML table load. 18106 18107Fields: Fixed a problem where forward references from a Field 18108definition to the parent Operation Region definition were not 18109resolved during the AML table load. 18110 18111Fields: Duplicate FieldUnit names within a scope are now detected 18112during AML table load. 18113 18114Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 18115returned an incorrect name for the root node. 18116 18117Code and Data Size: Code and Data optimizations have permitted new 18118feature development with an actual reduction in the library size. 18119Current core subsystem library sizes are shown below. These are 18120the code and data sizes for the acpica.lib produced by the 18121Microsoft Visual C++ 6.0 compiler, and these values do not include 18122any ACPI driver or OSPM code. The debug version of the code 18123includes the debug output trace mechanism and has a larger code 18124and data size. Note that these values will vary depending on the 18125efficiency of the compiler and the compiler options used during 18126generation. 18127 18128 Previous Release (10_18_01): 18129 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18130 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18131 18132 Current Release: 18133 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18134 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18135 18136 2) Linux: 18137 18138Improved /proc processor output (Pavel Machek) Re-added 18139MODULE_LICENSE("GPL") to all modules. 18140 18141 3) ASL Compiler version X2030: 18142 18143Duplicate FieldUnit names within a scope are now detected and 18144flagged as errors. 18145 18146 4) Documentation: 18147 18148Programmer Reference updated to reflect OSL and address space 18149handler interface changes described above. 18150 18151---------------------------------------- 18152Summary of changes for this label: 10_18_01 18153 18154ACPI CA Core Subsystem: 18155 18156Fixed a problem with the internal object reference count mechanism 18157that occasionally caused premature object deletion. This resolves 18158all of the outstanding problem reports where an object is deleted 18159in the middle of an interpreter evaluation. Although this problem 18160only showed up in rather obscure cases, the solution to the 18161problem involved an adjustment of all reference counts involving 18162objects attached to namespace nodes. 18163 18164Fixed a problem with Field support in the interpreter where 18165writing to an aligned field whose length is an exact multiple (2 18166or greater) of the field access granularity would cause an attempt 18167to write beyond the end of the field. 18168 18169The top level AML opcode execution functions within the 18170interpreter have been renamed with a more meaningful and 18171consistent naming convention. The modules exmonad.c and 18172exdyadic.c were eliminated. New modules are exoparg1.c, 18173exoparg2.c, exoparg3.c, and exoparg6.c. 18174 18175Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 18176 18177Fixed a problem where the AML debugger was causing some internal 18178objects to not be deleted during subsystem termination. 18179 18180Fixed a problem with the external AcpiEvaluateObject interface 18181where the subsystem would fault if the named object to be 18182evaluated referred to a constant such as Zero, Ones, etc. 18183 18184Fixed a problem with IndexFields and BankFields where the 18185subsystem would fault if the index, data, or bank registers were 18186not defined in the same scope as the field itself. 18187 18188Added printf format string checking for compilers that support 18189this feature. Corrected more than 50 instances of issues with 18190format specifiers within invocations of ACPI_DEBUG_PRINT 18191throughout the core subsystem code. 18192 18193The ASL "Revision" operator now returns the ACPI support level 18194implemented in the core - the value "2" since the ACPI 2.0 support 18195is more than 50% implemented. 18196 18197Enhanced the output of the AML debugger "dump namespace" command 18198to output in a more human-readable form. 18199 18200Current core subsystem library code sizes are shown below. These 18201 18202are the code and data sizes for the acpica.lib produced by the 18203Microsoft Visual C++ 6.0 compiler, and these values do not include 18204any ACPI driver or OSPM code. The debug version of the code 18205includes the full debug trace mechanism -- leading to a much 18206 18207larger code and data size. Note that these values will vary 18208depending on the efficiency of the compiler and the compiler 18209options used during generation. 18210 18211 Previous Label (09_20_01): 18212 Non-Debug Version: 65K Code, 5K Data, 70K Total 18213 Debug Version: 138K Code, 58K Data, 196K Total 18214 18215 This Label: 18216 18217 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18218 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18219 18220Linux: 18221 18222Implemented a "Bad BIOS Blacklist" to track machines that have 18223known ASL/AML problems. 18224 18225Enhanced the /proc interface for the thermal zone driver and added 18226support for _HOT (the critical suspend trip point). The 'info' 18227file now includes threshold/policy information, and allows setting 18228of _SCP (cooling preference) and _TZP (polling frequency) values 18229to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 18230frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 18231preference to the passive/quiet mode (if supported by the ASL). 18232 18233Implemented a workaround for a gcc bug that resuted in an OOPs 18234when loading the control method battery driver. 18235 18236 ---------------------------------------- 18237Summary of changes for this label: 09_20_01 18238 18239 ACPI CA Core Subsystem: 18240 18241The AcpiEnableEvent and AcpiDisableEvent interfaces have been 18242modified to allow individual GPE levels to be flagged as wake- 18243enabled (i.e., these GPEs are to remain enabled when the platform 18244sleeps.) 18245 18246The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 18247support wake-enabled GPEs. This means that upon entering the 18248sleep state, all GPEs that are not wake-enabled are disabled. 18249When leaving the sleep state, these GPEs are re-enabled. 18250 18251A local double-precision divide/modulo module has been added to 18252enhance portability to OS kernels where a 64-bit math library is 18253not available. The new module is "utmath.c". 18254 18255Several optimizations have been made to reduce the use of CPU 18256stack. Originally over 2K, the maximum stack usage is now below 182572K at 1860 bytes (1.82k) 18258 18259Fixed a problem with the AcpiGetFirmwareTable interface where the 18260root table pointer was not mapped into a logical address properly. 18261 18262Fixed a problem where a NULL pointer was being dereferenced in the 18263interpreter code for the ASL Notify operator. 18264 18265Fixed a problem where the use of the ASL Revision operator 18266returned an error. This operator now returns the current version 18267of the ACPI CA core subsystem. 18268 18269Fixed a problem where objects passed as control method parameters 18270to AcpiEvaluateObject were always deleted at method termination. 18271However, these objects may end up being stored into the namespace 18272by the called method. The object reference count mechanism was 18273applied to these objects instead of a force delete. 18274 18275Fixed a problem where static strings or buffers (contained in the 18276AML code) that are declared as package elements within the ASL 18277code could cause a fault because the interpreter would attempt to 18278delete them. These objects are now marked with the "static 18279object" flag to prevent any attempt to delete them. 18280 18281Implemented an interpreter optimization to use operands directly 18282from the state object instead of extracting the operands to local 18283variables. This reduces stack use and code size, and improves 18284performance. 18285 18286The module exxface.c was eliminated as it was an unnecessary extra 18287layer of code. 18288 18289Current core subsystem library code sizes are shown below. These 18290are the code and data sizes for the acpica.lib produced by the 18291Microsoft Visual C++ 6.0 compiler, and these values do not include 18292any ACPI driver or OSPM code. The debug version of the code 18293includes the full debug trace mechanism -- leading to a much 18294larger code and data size. Note that these values will vary 18295depending on the efficiency of the compiler and the compiler 18296options used during generation. 18297 18298 Non-Debug Version: 65K Code, 5K Data, 70K Total 18299(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18300Total (Previously 195K) 18301 18302Linux: 18303 18304Support for ACPI 2.0 64-bit integers has been added. All ACPI 18305Integer objects are now 64 bits wide 18306 18307All Acpi data types and structures are now in lower case. Only 18308Acpi macros are upper case for differentiation. 18309 18310 Documentation: 18311 18312Changes to the external interfaces as described above. 18313 18314 ---------------------------------------- 18315Summary of changes for this label: 08_31_01 18316 18317 ACPI CA Core Subsystem: 18318 18319A bug with interpreter implementation of the ASL Divide operator 18320was found and fixed. The implicit function return value (not the 18321explicit store operands) was returning the remainder instead of 18322the quotient. This was a longstanding bug and it fixes several 18323known outstanding issues on various platforms. 18324 18325The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18326been further optimized for size. There are 700 invocations of the 18327DEBUG_PRINT macro alone, so each optimization reduces the size of 18328the debug version of the subsystem significantly. 18329 18330A stack trace mechanism has been implemented. The maximum stack 18331usage is about 2K on 32-bit platforms. The debugger command "stat 18332stack" will display the current maximum stack usage. 18333 18334All public symbols and global variables within the subsystem are 18335now prefixed with the string "Acpi". This keeps all of the 18336symbols grouped together in a kernel map, and avoids conflicts 18337with other kernel subsystems. 18338 18339Most of the internal fixed lookup tables have been moved into the 18340code segment via the const operator. 18341 18342Several enhancements have been made to the interpreter to both 18343reduce the code size and improve performance. 18344 18345Current core subsystem library code sizes are shown below. These 18346are the code and data sizes for the acpica.lib produced by the 18347Microsoft Visual C++ 6.0 compiler, and these values do not include 18348any ACPI driver or OSPM code. The debug version of the code 18349includes the full debug trace mechanism which contains over 700 18350invocations of the DEBUG_PRINT macro, 500 function entry macro 18351invocations, and over 900 function exit macro invocations -- 18352leading to a much larger code and data size. Note that these 18353values will vary depending on the efficiency of the compiler and 18354the compiler options used during generation. 18355 18356 Non-Debug Version: 64K Code, 5K Data, 69K Total 18357Debug Version: 137K Code, 58K Data, 195K Total 18358 18359 Linux: 18360 18361Implemented wbinvd() macro, pending a kernel-wide definition. 18362 18363Fixed /proc/acpi/event to handle poll() and short reads. 18364 18365 ASL Compiler, version X2026: 18366 18367Fixed a problem introduced in the previous label where the AML 18368 18369code emitted for package objects produced packages with zero 18370length. 18371 18372 ---------------------------------------- 18373Summary of changes for this label: 08_16_01 18374 18375ACPI CA Core Subsystem: 18376 18377The following ACPI 2.0 ASL operators have been implemented in the 18378AML interpreter (These are already supported by the Intel ASL 18379compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18380ToBuffer. Support for 64-bit AML constants is implemented in the 18381AML parser, debugger, and disassembler. 18382 18383The internal memory tracking mechanism (leak detection code) has 18384been upgraded to reduce the memory overhead (a separate tracking 18385block is no longer allocated for each memory allocation), and now 18386supports all of the internal object caches. 18387 18388The data structures and code for the internal object caches have 18389been coelesced and optimized so that there is a single cache and 18390memory list data structure and a single group of functions that 18391implement generic cache management. This has reduced the code 18392size in both the debug and release versions of the subsystem. 18393 18394The DEBUG_PRINT macro(s) have been optimized for size and replaced 18395by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 18396different, because it generates a single call to an internal 18397function. This results in a savings of about 90 bytes per 18398invocation, resulting in an overall code and data savings of about 1839916% in the debug version of the subsystem. 18400 18401 Linux: 18402 18403Fixed C3 disk corruption problems and re-enabled C3 on supporting 18404machines. 18405 18406Integrated low-level sleep code by Patrick Mochel. 18407 18408Further tweaked source code Linuxization. 18409 18410Other minor fixes. 18411 18412 ASL Compiler: 18413 18414Support for ACPI 2.0 variable length packages is fixed/completed. 18415 18416Fixed a problem where the optional length parameter for the ACPI 184172.0 ToString operator. 18418 18419Fixed multiple extraneous error messages when a syntax error is 18420detected within the declaration line of a control method. 18421 18422 ---------------------------------------- 18423Summary of changes for this label: 07_17_01 18424 18425ACPI CA Core Subsystem: 18426 18427Added a new interface named AcpiGetFirmwareTable to obtain any 18428ACPI table via the ACPI signature. The interface can be called at 18429any time during kernel initialization, even before the kernel 18430virtual memory manager is initialized and paging is enabled. This 18431allows kernel subsystems to obtain ACPI tables very early, even 18432before the ACPI CA subsystem is initialized. 18433 18434Fixed a problem where Fields defined with the AnyAcc attribute 18435could be resolved to the incorrect address under the following 18436conditions: 1) the field width is larger than 8 bits and 2) the 18437parent operation region is not defined on a DWORD boundary. 18438 18439Fixed a problem where the interpreter is not being locked during 18440namespace initialization (during execution of the _INI control 18441methods), causing an error when an attempt is made to release it 18442later. 18443 18444ACPI 2.0 support in the AML Interpreter has begun and will be 18445ongoing throughout the rest of this year. In this label, The Mod 18446operator is implemented. 18447 18448Added a new data type to contain full PCI addresses named 18449ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 18450and Function values. 18451 18452 Linux: 18453 18454Enhanced the Linux version of the source code to change most 18455capitalized ACPI type names to lowercase. For example, all 18456instances of ACPI_STATUS are changed to acpi_status. This will 18457result in a large diff, but the change is strictly cosmetic and 18458aligns the CA code closer to the Linux coding standard. 18459 18460OSL Interfaces: 18461 18462The interfaces to the PCI configuration space have been changed to 18463add the PCI Segment number and to split the single 32-bit combined 18464DeviceFunction field into two 16-bit fields. This was 18465accomplished by moving the four values that define an address in 18466PCI configuration space (segment, bus, device, and function) to 18467the new ACPI_PCI_ID structure. 18468 18469The changes to the PCI configuration space interfaces led to a 18470reexamination of the complete set of address space access 18471interfaces for PCI, I/O, and Memory. The previously existing 18 18472interfaces have proven difficult to maintain (any small change 18473must be propagated across at least 6 interfaces) and do not easily 18474allow for future expansion to 64 bits if necessary. Also, on some 18475systems, it would not be appropriate to demultiplex the access 18476width (8, 16, 32,or 64) before calling the OSL if the 18477corresponding native OS interfaces contain a similar access width 18478parameter. For these reasons, the 18 address space interfaces 18479have been replaced by these 6 new ones: 18480 18481AcpiOsReadPciConfiguration 18482AcpiOsWritePciConfiguration 18483AcpiOsReadMemory 18484AcpiOsWriteMemory 18485AcpiOsReadPort 18486AcpiOsWritePort 18487 18488Added a new interface named AcpiOsGetRootPointer to allow the OSL 18489to perform the platform and/or OS-specific actions necessary to 18490obtain the ACPI RSDP table pointer. On IA-32 platforms, this 18491interface will simply call down to the CA core to perform the low- 18492memory search for the table. On IA-64, the RSDP is obtained from 18493EFI. Migrating this interface to the OSL allows the CA core to 18494 18495remain OS and platform independent. 18496 18497Added a new interface named AcpiOsSignal to provide a generic 18498"function code and pointer" interface for various miscellaneous 18499signals and notifications that must be made to the host OS. The 18500first such signals are intended to support the ASL Fatal and 18501Breakpoint operators. In the latter case, the AcpiOsBreakpoint 18502interface has been obsoleted. 18503 18504The definition of the AcpiFormatException interface has been 18505changed to simplify its use. The caller no longer must supply a 18506buffer to the call; A pointer to a const string is now returned 18507directly. This allows the call to be easily used in printf 18508statements, etc. since the caller does not have to manage a local 18509buffer. 18510 18511 18512 ASL Compiler, Version X2025: 18513 18514The ACPI 2.0 Switch/Case/Default operators have been implemented 18515and are fully functional. They will work with all ACPI 1.0 18516interpreters, since the operators are simply translated to If/Else 18517pairs. 18518 18519The ACPI 2.0 ElseIf operator is implemented and will also work 18520with 1.0 interpreters, for the same reason. 18521 18522Implemented support for ACPI 2.0 variable-length packages. These 18523packages have a separate opcode, and their size is determined by 18524the interpreter at run-time. 18525 18526Documentation The ACPI CA Programmer Reference has been updated to 18527reflect the new interfaces and changes to existing interfaces. 18528 18529 ------------------------------------------ 18530Summary of changes for this label: 06_15_01 18531 18532 ACPI CA Core Subsystem: 18533 18534Fixed a problem where a DWORD-accessed field within a Buffer 18535object would get its byte address inadvertently rounded down to 18536the nearest DWORD. Buffers are always Byte-accessible. 18537 18538 ASL Compiler, version X2024: 18539 18540Fixed a problem where the Switch() operator would either fault or 18541hang the compiler. Note however, that the AML code for this ACPI 185422.0 operator is not yet implemented. 18543 18544Compiler uses the new AcpiOsGetTimer interface to obtain compile 18545timings. 18546 18547Implementation of the CreateField operator automatically converts 18548a reference to a named field within a resource descriptor from a 18549byte offset to a bit offset if required. 18550 18551Added some missing named fields from the resource descriptor 18552support. These are the names that are automatically created by the 18553compiler to reference fields within a descriptor. They are only 18554valid at compile time and are not passed through to the AML 18555interpreter. 18556 18557Resource descriptor named fields are now typed as Integers and 18558subject to compile-time typechecking when used in expressions. 18559 18560 ------------------------------------------ 18561Summary of changes for this label: 05_18_01 18562 18563 ACPI CA Core Subsystem: 18564 18565Fixed a couple of problems in the Field support code where bits 18566from adjacent fields could be returned along with the proper field 18567bits. Restructured the field support code to improve performance, 18568readability and maintainability. 18569 18570New DEBUG_PRINTP macro automatically inserts the procedure name 18571into the output, saving hundreds of copies of procedure name 18572strings within the source, shrinking the memory footprint of the 18573debug version of the core subsystem. 18574 18575 Source Code Structure: 18576 18577The source code directory tree was restructured to reflect the 18578current organization of the component architecture. Some files 18579and directories have been moved and/or renamed. 18580 18581 Linux: 18582 18583Fixed leaking kacpidpc processes. 18584 18585Fixed queueing event data even when /proc/acpi/event is not 18586opened. 18587 18588 ASL Compiler, version X2020: 18589 18590Memory allocation performance enhancement - over 24X compile time 18591improvement on large ASL files. Parse nodes and namestring 18592buffers are now allocated from a large internal compiler buffer. 18593 18594The temporary .SRC file is deleted unless the "-s" option is 18595specified 18596 18597The "-d" debug output option now sends all output to the .DBG file 18598instead of the console. 18599 18600"External" second parameter is now optional 18601 18602"ElseIf" syntax now properly allows the predicate 18603 18604Last operand to "Load" now recognized as a Target operand 18605 18606Debug object can now be used anywhere as a normal object. 18607 18608ResourceTemplate now returns an object of type BUFFER 18609 18610EISAID now returns an object of type INTEGER 18611 18612"Index" now works with a STRING operand 18613 18614"LoadTable" now accepts optional parameters 18615 18616"ToString" length parameter is now optional 18617 18618"Interrupt (ResourceType," parse error fixed. 18619 18620"Register" with a user-defined region space parse error fixed 18621 18622Escaped backslash at the end of a string ("\\") scan/parse error 18623fixed 18624 18625"Revision" is now an object of type INTEGER. 18626 18627 18628 18629------------------------------------------ 18630Summary of changes for this label: 05_02_01 18631 18632Linux: 18633 18634/proc/acpi/event now blocks properly. 18635 18636Removed /proc/sys/acpi. You can still dump your DSDT from 18637/proc/acpi/dsdt. 18638 18639 ACPI CA Core Subsystem: 18640 18641Fixed a problem introduced in the previous label where some of the 18642"small" resource descriptor types were not recognized. 18643 18644Improved error messages for the case where an ASL Field is outside 18645the range of the parent operation region. 18646 18647 ASL Compiler, version X2018: 18648 18649 18650Added error detection for ASL Fields that extend beyond the length 18651of the parent operation region (only if the length of the region 18652is known at compile time.) This includes fields that have a 18653minimum access width that is smaller than the parent region, and 18654individual field units that are partially or entirely beyond the 18655extent of the parent. 18656 18657 18658 18659------------------------------------------ 18660Summary of changes for this label: 04_27_01 18661 18662 ACPI CA Core Subsystem: 18663 18664Fixed a problem where the namespace mutex could be released at the 18665wrong time during execution of AcpiRemoveAddressSpaceHandler. 18666 18667Added optional thread ID output for debug traces, to simplify 18668debugging of multiple threads. Added context switch notification 18669when the debug code realizes that a different thread is now 18670executing ACPI code. 18671 18672Some additional external data types have been prefixed with the 18673string "ACPI_" for consistency. This may effect existing code. 18674The data types affected are the external callback typedefs - e.g., 18675 18676WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 18677 18678 Linux: 18679 18680Fixed an issue with the OSL semaphore implementation where a 18681thread was waking up with an error from receiving a SIGCHLD 18682signal. 18683 18684Linux version of ACPI CA now uses the system C library for string 18685manipulation routines instead of a local implementation. 18686 18687Cleaned up comments and removed TBDs. 18688 18689 ASL Compiler, version X2017: 18690 18691Enhanced error detection and reporting for all file I/O 18692operations. 18693 18694 Documentation: 18695 18696Programmer Reference updated to version 1.06. 18697 18698 18699 18700------------------------------------------ 18701Summary of changes for this label: 04_13_01 18702 18703 ACPI CA Core Subsystem: 18704 18705Restructured support for BufferFields and RegionFields. 18706BankFields support is now fully operational. All known 32-bit 18707limitations on field sizes have been removed. Both BufferFields 18708and (Operation) RegionFields are now supported by the same field 18709management code. 18710 18711Resource support now supports QWORD address and IO resources. The 1871216/32/64 bit address structures and the Extended IRQ structure 18713have been changed to properly handle Source Resource strings. 18714 18715A ThreadId of -1 is now used to indicate a "mutex not acquired" 18716condition internally and must never be returned by AcpiOsThreadId. 18717This reserved value was changed from 0 since Unix systems allow a 18718thread ID of 0. 18719 18720Linux: 18721 18722Driver code reorganized to enhance portability 18723 18724Added a kernel configuration option to control ACPI_DEBUG 18725 18726Fixed the EC driver to honor _GLK. 18727 18728ASL Compiler, version X2016: 18729 18730Fixed support for the "FixedHw" keyword. Previously, the FixedHw 18731address space was set to 0, not 0x7f as it should be. 18732 18733 ------------------------------------------ 18734Summary of changes for this label: 03_13_01 18735 18736 ACPI CA Core Subsystem: 18737 18738During ACPI initialization, the _SB_._INI method is now run if 18739present. 18740 18741Notify handler fix - notifies are deferred until the parent method 18742completes execution. This fixes the "mutex already acquired" 18743issue seen occasionally. 18744 18745Part of the "implicit conversion" rules in ACPI 2.0 have been 18746found to cause compatibility problems with existing ASL/AML. The 18747convert "result-to-target-type" implementation has been removed 18748for stores to method Args and Locals. Source operand conversion 18749is still fully implemented. Possible changes to ACPI 2.0 18750specification pending. 18751 18752Fix to AcpiRsCalculatePciRoutingTableLength to return correct 18753length. 18754 18755Fix for compiler warnings for 64-bit compiles. 18756 18757 Linux: 18758 18759/proc output aligned for easier parsing. 18760 18761Release-version compile problem fixed. 18762 18763New kernel configuration options documented in Configure.help. 18764 18765IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 18766context" message. 18767 18768 OSPM: 18769 18770Power resource driver integrated with bus manager. 18771 18772Fixed kernel fault during active cooling for thermal zones. 18773 18774Source Code: 18775 18776The source code tree has been restructured. 18777 18778 18779 18780------------------------------------------ 18781Summary of changes for this label: 03_02_01 18782 18783 Linux OS Services Layer (OSL): 18784 18785Major revision of all Linux-specific code. 18786 18787Modularized all ACPI-specific drivers. 18788 18789Added new thermal zone and power resource drivers. 18790 18791Revamped /proc interface (new functionality is under /proc/acpi). 18792 18793New kernel configuration options. 18794 18795 Linux known issues: 18796 18797New kernel configuration options not documented in Configure.help 18798yet. 18799 18800 18801Module dependencies not currently implemented. If used, they 18802should be loaded in this order: busmgr, power, ec, system, 18803processor, battery, ac_adapter, button, thermal. 18804 18805Modules will not load if CONFIG_MODVERSION is set. 18806 18807IBM 600E - entering S5 may reboot instead of shutting down. 18808 18809IBM 600E - Sleep button may generate "Invalid <NULL> context" 18810message. 18811 18812Some systems may fail with "execution mutex already acquired" 18813message. 18814 18815 ACPI CA Core Subsystem: 18816 18817Added a new OSL Interface, AcpiOsGetThreadId. This was required 18818for the deadlock detection code. Defined to return a non-zero, 32- 18819bit thread ID for the currently executing thread. May be a non- 18820zero constant integer on single-thread systems. 18821 18822Implemented deadlock detection for internal subsystem mutexes. We 18823may add conditional compilation for this code (debug only) later. 18824 18825ASL/AML Mutex object semantics are now fully supported. This 18826includes multiple acquires/releases by owner and support for the 18827 18828Mutex SyncLevel parameter. 18829 18830A new "Force Release" mechanism automatically frees all ASL 18831Mutexes that have been acquired but not released when a thread 18832exits the interpreter. This forces conformance to the ACPI spec 18833("All mutexes must be released when an invocation exits") and 18834prevents deadlocked ASL threads. This mechanism can be expanded 18835(later) to monitor other resource acquisitions if OEM ASL code 18836continues to misbehave (which it will). 18837 18838Several new ACPI exception codes have been added for the Mutex 18839support. 18840 18841Recursive method calls are now allowed and supported (the ACPI 18842spec does in fact allow recursive method calls.) The number of 18843recursive calls is subject to the restrictions imposed by the 18844SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 18845parameter. 18846 18847Implemented support for the SyncLevel parameter for control 18848methods (ACPI 2.0 feature) 18849 18850Fixed a deadlock problem when multiple threads attempted to use 18851the interpreter. 18852 18853Fixed a problem where the string length of a String package 18854element was not always set in a package returned from 18855AcpiEvaluateObject. 18856 18857Fixed a problem where the length of a String package element was 18858not always included in the length of the overall package returned 18859from AcpiEvaluateObject. 18860 18861Added external interfaces (Acpi*) to the ACPI debug memory 18862manager. This manager keeps a list of all outstanding 18863allocations, and can therefore detect memory leaks and attempts to 18864free memory blocks more than once. Useful for code such as the 18865power manager, etc. May not be appropriate for device drivers. 18866Performance with the debug code enabled is slow. 18867 18868The ACPI Global Lock is now an optional hardware element. 18869 18870 ASL Compiler Version X2015: 18871 18872Integrated changes to allow the compiler to be generated on 18873multiple platforms. 18874 18875Linux makefile added to generate the compiler on Linux 18876 18877 Source Code: 18878 18879All platform-specific headers have been moved to their own 18880subdirectory, Include/Platform. 18881 18882New source file added, Interpreter/ammutex.c 18883 18884New header file, Include/acstruct.h 18885 18886 Documentation: 18887 18888The programmer reference has been updated for the following new 18889interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 18890 18891 ------------------------------------------ 18892Summary of changes for this label: 02_08_01 18893 18894Core ACPI CA Subsystem: Fixed a problem where an error was 18895incorrectly returned if the return resource buffer was larger than 18896the actual data (in the resource interfaces). 18897 18898References to named objects within packages are resolved to the 18899 18900full pathname string before packages are returned directly (via 18901the AcpiEvaluateObject interface) or indirectly via the resource 18902interfaces. 18903 18904Linux OS Services Layer (OSL): 18905 18906Improved /proc battery interface. 18907 18908 18909Added C-state debugging output and other miscellaneous fixes. 18910 18911ASL Compiler Version X2014: 18912 18913All defined method arguments can now be used as local variables, 18914including the ones that are not actually passed in as parameters. 18915The compiler tracks initialization of the arguments and issues an 18916exception if they are used without prior assignment (just like 18917locals). 18918 18919The -o option now specifies a filename prefix that is used for all 18920output files, including the AML output file. Otherwise, the 18921default behavior is as follows: 1) the AML goes to the file 18922specified in the DSDT. 2) all other output files use the input 18923source filename as the base. 18924 18925 ------------------------------------------ 18926Summary of changes for this label: 01_25_01 18927 18928Core ACPI CA Subsystem: Restructured the implementation of object 18929store support within the interpreter. This includes support for 18930the Store operator as well as any ASL operators that include a 18931target operand. 18932 18933Partially implemented support for Implicit Result-to-Target 18934conversion. This is when a result object is converted on the fly 18935to the type of an existing target object. Completion of this 18936support is pending further analysis of the ACPI specification 18937concerning this matter. 18938 18939CPU-specific code has been removed from the subsystem (hardware 18940directory). 18941 18942New Power Management Timer functions added 18943 18944Linux OS Services Layer (OSL): Moved system state transition code 18945to the core, fixed it, and modified Linux OSL accordingly. 18946 18947Fixed C2 and C3 latency calculations. 18948 18949 18950We no longer use the compilation date for the version message on 18951initialization, but retrieve the version from AcpiGetSystemInfo(). 18952 18953Incorporated for fix Sony VAIO machines. 18954 18955Documentation: The Programmer Reference has been updated and 18956reformatted. 18957 18958 18959ASL Compiler: Version X2013: Fixed a problem where the line 18960numbering and error reporting could get out of sync in the 18961presence of multiple include files. 18962 18963 ------------------------------------------ 18964Summary of changes for this label: 01_15_01 18965 18966Core ACPI CA Subsystem: 18967 18968Implemented support for type conversions in the execution of the 18969ASL Concatenate operator (The second operand is converted to 18970match the type of the first operand before concatenation.) 18971 18972Support for implicit source operand conversion is partially 18973implemented. The ASL source operand types Integer, Buffer, and 18974String are freely interchangeable for most ASL operators and are 18975converted by the interpreter on the fly as required. Implicit 18976Target operand conversion (where the result is converted to the 18977target type before storing) is not yet implemented. 18978 18979Support for 32-bit and 64-bit BCD integers is implemented. 18980 18981Problem fixed where a field read on an aligned field could cause a 18982read past the end of the field. 18983 18984New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 18985does not return a value, but the caller expects one. (The ASL 18986compiler flags this as a warning.) 18987 18988ASL Compiler: 18989 18990Version X2011: 189911. Static typechecking of all operands is implemented. This 18992prevents the use of invalid objects (such as using a Package where 18993an Integer is required) at compile time instead of at interpreter 18994run-time. 189952. The ASL source line is printed with ALL errors and warnings. 189963. Bug fix for source EOF without final linefeed. 189974. Debug option is split into a parse trace and a namespace trace. 189985. Namespace output option (-n) includes initial values for 18999integers and strings. 190006. Parse-only option added for quick syntax checking. 190017. Compiler checks for duplicate ACPI name declarations 19002 19003Version X2012: 190041. Relaxed typechecking to allow interchangeability between 19005strings, integers, and buffers. These types are now converted by 19006the interpreter at runtime. 190072. Compiler reports time taken by each internal subsystem in the 19008debug output file. 19009 19010 19011 ------------------------------------------ 19012Summary of changes for this label: 12_14_00 19013 19014ASL Compiler: 19015 19016This is the first official release of the compiler. Since the 19017compiler requires elements of the Core Subsystem, this label 19018synchronizes everything. 19019 19020------------------------------------------ 19021Summary of changes for this label: 12_08_00 19022 19023 19024Fixed a problem where named references within the ASL definition 19025of both OperationRegions and CreateXXXFields did not work 19026properly. The symptom was an AE_AML_OPERAND_TYPE during 19027initialization of the region/field. This is similar (but not 19028related internally) to the problem that was fixed in the last 19029label. 19030 19031Implemented both 32-bit and 64-bit support for the BCD ASL 19032functions ToBCD and FromBCD. 19033 19034Updated all legal headers to include "2000" in the copyright 19035years. 19036 19037 ------------------------------------------ 19038Summary of changes for this label: 12_01_00 19039 19040Fixed a problem where method invocations within the ASL definition 19041of both OperationRegions and CreateXXXFields did not work 19042properly. The symptom was an AE_AML_OPERAND_TYPE during 19043initialization of the region/field: 19044 19045 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 19046[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 19047(0x3005) 19048 19049Fixed a problem where operators with more than one nested 19050subexpression would fail. The symptoms were varied, by mostly 19051AE_AML_OPERAND_TYPE errors. This was actually a rather serious 19052problem that has gone unnoticed until now. 19053 19054 Subtract (Add (1,2), Multiply (3,4)) 19055 19056Fixed a problem where AcpiGetHandle didn't quite get fixed in the 19057previous build (The prefix part of a relative path was handled 19058incorrectly). 19059 19060Fixed a problem where Operation Region initialization failed if 19061the operation region name was a "namepath" instead of a simple 19062"nameseg". Symptom was an AE_NO_OPERAND error. 19063 19064Fixed a problem where an assignment to a local variable via the 19065indirect RefOf mechanism only worked for the first such 19066assignment. Subsequent assignments were ignored. 19067 19068 ------------------------------------------ 19069Summary of changes for this label: 11_15_00 19070 19071ACPI 2.0 table support with backwards support for ACPI 1.0 and the 190720.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 19073the AML interpreter does NOT have support for the new 2.0 ASL 19074grammar terms at this time. 19075 19076All ACPI hardware access is via the GAS structures in the ACPI 2.0 19077FADT. 19078 19079All physical memory addresses across all platforms are now 64 bits 19080wide. Logical address width remains dependent on the platform 19081(i.e., "void *"). 19082 19083AcpiOsMapMemory interface changed to a 64-bit physical address. 19084 19085The AML interpreter integer size is now 64 bits, as per the ACPI 190862.0 specification. 19087 19088For backwards compatibility with ACPI 1.0, ACPI tables with a 19089revision number less than 2 use 32-bit integers only. 19090 19091Fixed a problem where the evaluation of OpRegion operands did not 19092always resolve them to numbers properly. 19093 19094------------------------------------------ 19095Summary of changes for this label: 10_20_00 19096 19097Fix for CBN_._STA issue. This fix will allow correct access to 19098CBN_ OpRegions when the _STA returns 0x8. 19099 19100Support to convert ACPI constants (Ones, Zeros, One) to actual 19101values before a package object is returned 19102 19103Fix for method call as predicate to if/while construct causing 19104incorrect if/while behavior 19105 19106Fix for Else block package lengths sometimes calculated wrong (if 19107block > 63 bytes) 19108 19109Fix for Processor object length field, was always zero 19110 19111Table load abort if FACP sanity check fails 19112 19113Fix for problem with Scope(name) if name already exists 19114 19115Warning emitted if a named object referenced cannot be found 19116(resolved) during method execution. 19117 19118 19119 19120 19121 19122------------------------------------------ 19123Summary of changes for this label: 9_29_00 19124 19125New table initialization interfaces: AcpiInitializeSubsystem no 19126longer has any parameters AcpiFindRootPointer - Find the RSDP (if 19127necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 19128>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 19129AcpiLoadTables 19130 19131Note: These interface changes require changes to all existing OSDs 19132 19133The PCI_Config default address space handler is always installed 19134at the root namespace object. 19135 19136------------------------------------------- 19137Summary of changes for this label: 09_15_00 19138 19139The new initialization architecture is implemented. New 19140interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 19141AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 19142 19143(Namespace is automatically loaded when a table is loaded) 19144 19145The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1914652 bytes to 32 bytes. There is usually one of these for every 19147namespace object, so the memory savings is significant. 19148 19149Implemented just-in-time evaluation of the CreateField operators. 19150 19151Bug fixes for IA-64 support have been integrated. 19152 19153Additional code review comments have been implemented 19154 19155The so-called "third pass parse" has been replaced by a final walk 19156through the namespace to initialize all operation regions (address 19157spaces) and fields that have not yet been initialized during the 19158execution of the various _INI and REG methods. 19159 19160New file - namespace/nsinit.c 19161 19162------------------------------------------- 19163Summary of changes for this label: 09_01_00 19164 19165Namespace manager data structures have been reworked to change the 19166primary object from a table to a single object. This has 19167resulted in dynamic memory savings of 3X within the namespace and 191682X overall in the ACPI CA subsystem. 19169 19170Fixed problem where the call to AcpiEvFindPciRootBuses was 19171inadvertently left commented out. 19172 19173Reduced the warning count when generating the source with the GCC 19174compiler. 19175 19176Revision numbers added to each module header showing the 19177SourceSafe version of the file. Please refer to this version 19178number when giving us feedback or comments on individual modules. 19179 19180The main object types within the subsystem have been renamed to 19181clarify their purpose: 19182 19183ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 19184ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 19185ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 19186 19187NOTE: no changes to the initialization sequence are included in 19188this label. 19189 19190------------------------------------------- 19191Summary of changes for this label: 08_23_00 19192 19193Fixed problem where TerminateControlMethod was being called 19194multiple times per method 19195 19196Fixed debugger problem where single stepping caused a semaphore to 19197be oversignalled 19198 19199Improved performance through additional parse object caching - 19200added ACPI_EXTENDED_OP type 19201 19202------------------------------------------- 19203Summary of changes for this label: 08_10_00 19204 19205Parser/Interpreter integration: Eliminated the creation of 19206complete parse trees for ACPI tables and control methods. 19207Instead, parse subtrees are created and then deleted as soon as 19208they are processed (Either entered into the namespace or executed 19209by the interpreter). This reduces the use of dynamic kernel 19210memory significantly. (about 10X) 19211 19212Exception codes broken into classes and renumbered. Be sure to 19213recompile all code that includes acexcep.h. Hopefully we won't 19214have to renumber the codes again now that they are split into 19215classes (environment, programmer, AML code, ACPI table, and 19216internal). 19217 19218Fixed some additional alignment issues in the Resource Manager 19219subcomponent 19220 19221Implemented semaphore tracking in the AcpiExec utility, and fixed 19222several places where mutexes/semaphores were being unlocked 19223without a corresponding lock operation. There are no known 19224semaphore or mutex "leaks" at this time. 19225 19226Fixed the case where an ASL Return operator is used to return an 19227unnamed package. 19228 19229------------------------------------------- 19230Summary of changes for this label: 07_28_00 19231 19232Fixed a problem with the way addresses were calculated in 19233AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 19234manifested itself when a Field was created with WordAccess or 19235DwordAccess, but the field unit defined within the Field was less 19236 19237than a Word or Dword. 19238 19239Fixed a problem in AmlDumpOperands() module's loop to pull 19240operands off of the operand stack to display information. The 19241problem manifested itself as a TLB error on 64-bit systems when 19242accessing an operand stack with two or more operands. 19243 19244Fixed a problem with the PCI configuration space handlers where 19245context was getting confused between accesses. This required a 19246change to the generic address space handler and address space 19247setup definitions. Handlers now get both a global handler context 19248(this is the one passed in by the user when executing 19249AcpiInstallAddressSpaceHandler() and a specific region context 19250that is unique to each region (For example, the _ADR, _SEG and 19251_BBN values associated with a specific region). The generic 19252function definitions have changed to the following: 19253 19254typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 19255UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 19256*HandlerContext, // This used to be void *Context void 19257*RegionContext); // This is an additional parameter 19258 19259typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 19260RegionHandle, UINT32 Function, void *HandlerContext, void 19261**RegionContext); // This used to be **ReturnContext 19262 19263------------------------------------------- 19264Summary of changes for this label: 07_21_00 19265 19266Major file consolidation and rename. All files within the 19267interpreter have been renamed as well as most header files. This 19268was done to prevent collisions with existing files in the host 19269OSs -- filenames such as "config.h" and "global.h" seem to be 19270quite common. The VC project files have been updated. All 19271makefiles will require modification. 19272 19273The parser/interpreter integration continues in Phase 5 with the 19274implementation of a complete 2-pass parse (the AML is parsed 19275twice) for each table; This avoids the construction of a huge 19276parse tree and therefore reduces the amount of dynamic memory 19277required by the subsystem. Greater use of the parse object cache 19278means that performance is unaffected. 19279 19280Many comments from the two code reviews have been rolled in. 19281 19282The 64-bit alignment support is complete. 19283 19284------------------------------------------- 19285Summary of changes for this label: 06_30_00 19286 19287With a nod and a tip of the hat to the technology of yesteryear, 19288we've added support in the source code for 80 column output 19289devices. The code is now mostly constrained to 80 columns or 19290less to support environments and editors that 1) cannot display 19291or print more than 80 characters on a single line, and 2) cannot 19292disable line wrapping. 19293 19294A major restructuring of the namespace data structure has been 19295completed. The result is 1) cleaner and more 19296understandable/maintainable code, and 2) a significant reduction 19297in the dynamic memory requirement for each named ACPI object 19298(almost half). 19299 19300------------------------------------------- 19301Summary of changes for this label: 06_23_00 19302 19303Linux support has been added. In order to obtain approval to get 19304the ACPI CA subsystem into the Linux kernel, we've had to make 19305quite a few changes to the base subsystem that will affect all 19306users (all the changes are generic and OS- independent). The 19307effects of these global changes have been somewhat far reaching. 19308Files have been merged and/or renamed and interfaces have been 19309renamed. The major changes are described below. 19310 19311Osd* interfaces renamed to AcpiOs* to eliminate namespace 19312pollution/confusion within our target kernels. All OSD 19313interfaces must be modified to match the new naming convention. 19314 19315Files merged across the subsystem. A number of the smaller source 19316and header files have been merged to reduce the file count and 19317increase the density of the existing files. There are too many 19318to list here. In general, makefiles that call out individual 19319files will require rebuilding. 19320 19321Interpreter files renamed. All interpreter files now have the 19322prefix am* instead of ie* and is*. 19323 19324Header files renamed: The acapi.h file is now acpixf.h. The 19325acpiosd.h file is now acpiosxf.h. We are removing references to 19326the acronym "API" since it is somewhat windowsy. The new name is 19327"external interface" or xface or xf in the filenames.j 19328 19329 19330All manifest constants have been forced to upper case (some were 19331mixed case.) Also, the string "ACPI_" has been prepended to many 19332(not all) of the constants, typedefs, and structs. 19333 19334The globals "DebugLevel" and "DebugLayer" have been renamed 19335"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19336 19337All other globals within the subsystem are now prefixed with 19338"AcpiGbl_" Internal procedures within the subsystem are now 19339prefixed with "Acpi" (with only a few exceptions). The original 19340two-letter abbreviation for the subcomponent remains after "Acpi" 19341- for example, CmCallocate became AcpiCmCallocate. 19342 19343Added a source code translation/conversion utility. Used to 19344generate the Linux source code, it can be modified to generate 19345other types of source as well. Can also be used to cleanup 19346existing source by removing extraneous spaces and blank lines. 19347Found in tools/acpisrc/* 19348 19349OsdUnMapMemory was renamed to OsdUnmapMemory and then 19350AcpiOsUnmapMemory. (UnMap became Unmap). 19351 19352A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19353When set to one, this indicates that the caller wants to use the 19354 19355semaphore as a mutex, not a counting semaphore. ACPI CA uses 19356both types. However, implementers of this call may want to use 19357different OS primitives depending on the type of semaphore 19358requested. For example, some operating systems provide separate 19359 19360"mutex" and "semaphore" interfaces - where the mutex interface is 19361much faster because it doesn't have all the overhead of a full 19362semaphore implementation. 19363 19364Fixed a deadlock problem where a method that accesses the PCI 19365address space can block forever if it is the first access to the 19366space. 19367 19368------------------------------------------- 19369Summary of changes for this label: 06_02_00 19370 19371Support for environments that cannot handle unaligned data 19372accesses (e.g. firmware and OS environments devoid of alignment 19373handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19374been added (via configurable macros) in these three areas: - 19375Transfer of data from the raw AML byte stream is done via byte 19376moves instead of word/dword/qword moves. - External objects are 19377aligned within the user buffer, including package elements (sub- 19378objects). - Conversion of name strings to UINT32 Acpi Names is now 19379done byte-wise. 19380 19381The Store operator was modified to mimic Microsoft's 19382implementation when storing to a Buffer Field. 19383 19384Added a check of the BM_STS bit before entering C3. 19385 19386The methods subdirectory has been obsoleted and removed. A new 19387file, cmeval.c subsumes the functionality. 19388 19389A 16-bit (DOS) version of AcpiExec has been developed. The 19390makefile is under the acpiexec directory. 19391