1---------------------------------------- 229 August 2008. Summary of changes for version 20080829: 3 41) ACPI CA Core Subsystem: 5 6Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 7Reference. Changes include the elimination of cheating on the Object field 8for the DdbHandle subtype, addition of a reference class field to 9differentiate the various reference types (instead of an AML opcode), and the 10cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 11 12Reduce an error to a warning for an incorrect method argument count. 13Previously aborted with an error if too few arguments were passed to a 14control method via the external ACPICA interface. Now issue a warning instead 15and continue. Handles the case where the method inadvertently declares too 16many arguments, but does not actually use the extra ones. Applies mainly to 17the predefined methods. Lin Ming. Linux BZ 11032. 18 19Disallow the evaluation of named object types with no intrinsic value. Return 20AE_TYPE for objects that have no value and therefore evaluation is undefined: 21Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of 22these types were allowed, but an exception would be generated at some point 23during the evaluation. Now, the error is generated up front. 24 25Fixed a possible memory leak in the AcpiNsGetExternalPathname function 26(nsnames.c). Fixes a leak in the error exit path. 27 28Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug 29levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION 30interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 31ACPI_LV_EVENTS. 32 33Removed obsolete and/or unused exception codes from the acexcep.h header. 34There is the possibility that certain device drivers may be affected if they 35use any of these exceptions. 36 37The ACPICA documentation has been added to the public git source tree, under 38acpica/documents. Included are the ACPICA programmer reference, the iASL 39compiler reference, and the changes.txt release logfile. 40 41Example Code and Data Size: These are the sizes for the OS-independent 42acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 43debug version of the code includes the debug output trace mechanism and has a 44much larger code and data size. 45 46 Previous Release: 47 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 48 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 49 Current Release: 50 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 51 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 52 532) iASL Compiler/Disassembler and Tools: 54 55Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 56defines _SCP with 3 arguments. Previous versions defined it with only 1 57argument. iASL now allows both definitions. 58 59iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero- 60length subtables when disassembling ACPI tables. Also fixed a couple of 61errors where a full 16-bit table type field was not extracted from the input 62properly. 63 64acpisrc: Improve comment counting mechanism for generating source code 65statistics. Count first and last lines of multi-line comments as whitespace, 66not comment lines. Handle Linux legal header in addition to standard acpica 67header. 68 69---------------------------------------- 70 7129 July 2008. Summary of changes for version 20080729: 72 73This release is available at http://acpica.org/downloads 74Direct git access via http://www.acpica.org/repos/acpica.git 75 761) ACPI CA Core Subsystem: 77 78Fix a possible deadlock in the GPE dispatch. Remove call to 79AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt 80to acquire the GPE lock but can deadlock since the GPE lock is already held 81at dispatch time. This code was introduced in version 20060831 as a response 82to Linux BZ 6881 and has since been removed from Linux. 83 84Add a function to dereference returned reference objects. Examines the return 85object from a call to AcpiEvaluateObject. Any Index or RefOf references are 86automatically dereferenced in an attempt to return something useful (these 87reference types cannot be converted into an external ACPI_OBJECT.) Provides 88MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 89 90x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 91subtables for the MADT and one new subtable for the SRAT. Includes 92disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC 93Specification, June 2008. 94 95Additional error checking for pathname utilities. Add error check after all 96calls to AcpiNsGetPathnameLength. Add status return from 97AcpiNsBuildExternalPath and check after all calls. Add parameter validation 98to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 99 100Return status from the global init function AcpiUtGlobalInitialize. This is 101used by both the kernel subsystem and the utilities such as iASL compiler. 102The function could possibly fail when the caches are initialized. Yang Yi. 103 104Add a function to decode reference object types to strings. Created for 105improved error messages. 106 107Improve object conversion error messages. Better error messages during object 108conversion from internal to the external ACPI_OBJECT. Used for external calls 109to AcpiEvaluateObject. 110 111Example Code and Data Size: These are the sizes for the OS-independent 112acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 113debug version of the code includes the debug output trace mechanism and has a 114much larger code and data size. 115 116 Previous Release: 117 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 118 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 119 Current Release: 120 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 121 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 122 1232) iASL Compiler/Disassembler and Tools: 124 125Debugger: fix a possible hang when evaluating non-methods. Fixes a problem 126introduced in version 20080701. If the object being evaluated (via execute 127command) is not a method, the debugger can hang while trying to obtain non- 128existent parameters. 129 130iASL: relax error for using reserved "_T_x" identifiers. These names can 131appear in a disassembled ASL file if they were emitted by the original 132compiler. Instead of issuing an error or warning and forcing the user to 133manually change these names, issue a remark instead. 134 135iASL: error if named object created in while loop. Emit an error if any named 136object is created within a While loop. If allowed, this code will generate a 137run-time error on the second iteration of the loop when an attempt is made to 138create the same named object twice. ACPICA bugzilla 730. 139 140iASL: Support absolute pathnames for include files. Add support for absolute 141pathnames within the Include operator. previously, only relative pathnames 142were supported. 143 144iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor. 145The ACPI spec requires one interrupt minimum. BZ 423 146 147iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 148Handles the case for the Interrupt Resource Descriptor where 149the ResourceSource argument is omitted but ResourceSourceIndex 150is present. Now leave room for the Index. BZ 426 151 152iASL: Prevent error message if CondRefOf target does not exist. Fixes cases 153where an error message is emitted if the target does not exist. BZ 516 154 155iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 156(get ACPI tables on Windows). This was apparently broken in version 20070919. 157 158AcpiXtract: Handle EOF while extracting data. Correctly handle the case where 159the EOF happens immediately after the last table in the input file. Print 160completion message. Previously, no message was displayed in this case. 161 162---------------------------------------- 16301 July 2008. Summary of changes for version 20080701: 164 165This release is available at http://acpica.org/downloads 166Direct git access via http://www.acpica.org/repos/acpica.git 167 1680) Git source tree / acpica.org 169 170Fixed a problem where a git-clone from http would not transfer the entire 171source 172tree. 173 1741) ACPI CA Core Subsystem: 175 176Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 177enable 178bit. Now performs a read-change-write of the enable register instead of 179simply 180writing out the cached enable mask. This will prevent inadvertent enabling of 181GPEs if a rogue GPE is received during initialization (before GPE handlers 182are 183installed.) 184 185Implemented a copy for dynamically loaded tables. Previously, dynamically 186loaded 187tables were simply mapped - but on some machines this memory is corrupted 188after 189suspend. Now copy the table to a local buffer. For the OpRegion case, added 190checksum verify. Use the table length from the table header, not the region 191length. For the Buffer case, use the table length also. Dennis Noordsij, Bob 192Moore. BZ 10734 193 194Fixed a problem where the same ACPI table could not be dynamically loaded and 195unloaded more than once. Without this change, a table cannot be loaded again 196once it has been loaded/unloaded one time. The current mechanism does not 197unregister a table upon an unload. During a load, if the same table is found, 198this no longer returns an exception. BZ 722 199 200Fixed a problem where the wrong descriptor length was calculated for the 201EndTag 202descriptor in 64-bit mode. The "minimal" descriptors such as EndTag are 203calculated as 12 bytes long, but the actual length in the internal descriptor 204is 20516 because of the round-up to 8 on the 64-bit build. Reported by Linn 206Crosetto. 207BZ 728 208 209Fixed a possible memory leak in the Unload operator. The DdbHandle returned 210by 211Load() did not have its reference count decremented during unload, leading to 212a 213memory leak. Lin Ming. BZ 727 214 215Fixed a possible memory leak when deleting thermal/processor objects. Any 216associated notify handlers (and objects) were not being deleted. Fiodor 217Suietov. 218BZ 506 219 220Fixed the ordering of the ASCII names in the global mutex table to match the 221actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only. 222Vegard Nossum. BZ 726 223 224Enhanced the AcpiGetObjectInfo interface to return the number of required 225arguments if the object is a control method. Added this call to the debugger 226so 227the proper number of default arguments are passed to a method. This prevents 228a 229warning when executing methods from AcpiExec. 230 231Added a check for an invalid handle in AcpiGetObjectInfo. Return 232AE_BAD_PARAMETER if input handle is invalid. BZ 474 233 234Fixed an extraneous warning from exconfig.c on the 64-bit build. 235 236Example Code and Data Size: These are the sizes for the OS-independent 237acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 238debug 239version of the code includes the debug output trace mechanism and has a much 240larger code and data size. 241 242 Previous Release: 243 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 244 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 245 Current Release: 246 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 247 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 248 2492) iASL Compiler/Disassembler and Tools: 250 251iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 252resource 253descriptor names. 254 255iASL: Detect invalid ASCII characters in input (windows version). Removed the 256"- 257CF" flag from the flex compile, enables correct detection of non-ASCII 258characters in the input. BZ 441 259 260iASL: Eliminate warning when result of LoadTable is not used. Eliminate the 261"result of operation not used" warning when the DDB handle returned from 262LoadTable is not used. The warning is not needed. BZ 590 263 264AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to 265pass address of table to the AML. Added option to disable OpRegion simulation 266to 267allow creation of an OpRegion with a real address that was passed to _CFG. 268All 269of this allows testing of the Load and Unload operators from AcpiExec. 270 271Debugger: update tables command for unloaded tables. Handle unloaded tables 272and 273use the standard table header output routine. 274 275---------------------------------------- 27609 June 2008. Summary of changes for version 20080609: 277 2781) ACPI CA Core Subsystem: 279 280Implemented a workaround for reversed _PRT entries. A significant number of 281BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 282change dynamically detects and repairs this problem. Provides compatibility 283with MS ACPI. BZ 6859 284 285Simplified the internal ACPI hardware interfaces to eliminate the locking 286flag parameter from Register Read/Write. Added a new external interface, 287AcpiGetRegisterUnlocked. 288 289Fixed a problem where the invocation of a GPE control method could hang. This 290was a regression introduced in 20080514. The new method argument count 291validation mechanism can enter an infinite loop when a GPE method is 292dispatched. Problem fixed by removing the obsolete code that passed GPE block 293information to the notify handler via the control method parameter pointer. 294 295Fixed a problem where the _SST execution status was incorrectly returned to 296the caller of AcpiEnterSleepStatePrep. This was a regression introduced in 29720080514. _SST is optional and a NOT_FOUND exception should never be 298returned. BZ 716 299 300Fixed a problem where a deleted object could be accessed from within the AML 301parser. This was a regression introduced in version 20080123 as a fix for the 302Unload operator. Lin Ming. BZ 10669 303 304Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands 305and eliminated the use of a negative index in a loop. Operands are now 306displayed in the correct order, not backwards. This also fixes a regression 307introduced in 20080514 on 64-bit systems where the elimination of 308ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715 309 310Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit 311path did not delete a locally allocated structure. 312 313Updated definitions for the DMAR and SRAT tables to synchronize with the 314current specifications. Includes disassembler support. 315 316Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 317loop termination value was used. Loop terminated on iteration early, missing 318one mutex. Linn Crosetto 319 320Example Code and Data Size: These are the sizes for the OS-independent 321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 322debug version of the code includes the debug output trace mechanism and has a 323much larger code and data size. 324 325 Previous Release: 326 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 327 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 328 Current Release: 329 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 330 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 331 3322) iASL Compiler/Disassembler and Tools: 333 334Disassembler: Implemented support for EisaId() within _CID objects. Now 335disassemble integer _CID objects back to EisaId invocations, including 336multiple integers within _CID packages. Includes single-step support for 337debugger also. 338 339Disassembler: Added support for DMAR and SRAT table definition changes. 340 341---------------------------------------- 34214 May 2008. Summary of changes for version 20080514: 343 3441) ACPI CA Core Subsystem: 345 346Fixed a problem where GPEs were enabled too early during the ACPICA 347initialization. This could lead to "handler not installed" errors on some 348machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This 349ensures that all operation regions and devices throughout the namespace have 350been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 351 352Implemented a change to the enter sleep code. Moved execution of the _GTS 353method to just before setting sleep enable bit. The execution was moved from 354AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 355immediately before the SLP_EN bit is set, as per the ACPI specification. 356Luming Yu, BZ 1653. 357 358Implemented a fix to disable unknown GPEs (2nd version). Now always disable 359the GPE, even if ACPICA thinks that that it is already disabled. It is 360possible that the AML or some other code has enabled the GPE unbeknownst to 361the ACPICA code. 362 363Fixed a problem with the Field operator where zero-length fields would return 364an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL 365field declarations in Field(), BankField(), and IndexField(). BZ 10606. 366 367Implemented a fix for the Load operator, now load the table at the namespace 368root. This reverts a change introduced in version 20071019. The table is now 369loaded at the namespace root even though this goes against the ACPI 370specification. This provides compatibility with other ACPI implementations. 371The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming. 372 373Fixed a problem where ACPICA would not Load() tables with unusual signatures. 374Now ignore ACPI table signature for Load() operator. Only "SSDT" is 375acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 376Therefore, signature validation is worthless. Apparently MS ACPI accepts such 377signatures, ACPICA must be compatible. BZ 10454. 378 379Fixed a possible negative array index in AcpiUtValidateException. Added NULL 380fields to the exception string arrays to eliminate a -1 subtraction on the 381SubStatus field. 382 383Updated the debug tracking macros to reduce overall code and data size. 384Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 385instead of pointers to static strings. Jan Beulich and Bob Moore. 386 387Implemented argument count checking in control method invocation via 388AcpiEvaluateObject. Now emit an error if too few arguments, warning if too 389many. This applies only to extern programmatic control method execution, not 390method-to-method calls within the AML. Lin Ming. 391 392Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no 393longer needed, especially with the removal of 16-bit support. It was replaced 394mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on 39532/64-bit platforms is required. 396 397Added the C const qualifier for appropriate string constants -- mostly 398MODULE_NAME and printf format strings. Jan Beulich. 399 400Example Code and Data Size: These are the sizes for the OS-independent 401acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 402debug version of the code includes the debug output trace mechanism and has a 403much larger code and data size. 404 405 Previous Release: 406 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 407 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 408 Current Release: 409 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 410 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 411 4122) iASL Compiler/Disassembler and Tools: 413 414Implemented ACPI table revision ID validation in the disassembler. Zero is 415always invalid. For DSDTs, the ID controls the interpreter integer width. 1 416means 32-bit and this is unusual. 2 or greater is 64-bit. 417 418---------------------------------------- 41921 March 2008. Summary of changes for version 20080321: 420 4211) ACPI CA Core Subsystem: 422 423Implemented an additional change to the GPE support in order to suppress 424spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently 425disable incoming GPEs that are neither enabled nor disabled -- meaning that 426the GPE is unknown to the system. This should prevent future interrupt floods 427from that GPE. BZ 6217 (Zhang Rui) 428 429Fixed a problem where NULL package elements were not returned to the 430AcpiEvaluateObject interface correctly. The element was simply ignored 431instead of returning a NULL ACPI_OBJECT package element, potentially causing 432a buffer overflow and/or confusing the caller who expected a fixed number of 433elements. BZ 10132 (Lin Ming, Bob Moore) 434 435Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword, 436Qword), Field, BankField, and IndexField operators when invoked from inside 437an executing control method. In this case, these operators created namespace 438nodes that were incorrectly left marked as permanent nodes instead of 439temporary nodes. This could cause a problem if there is race condition 440between an exiting control method and a running namespace walk. (Reported by 441Linn Crosetto) 442 443Fixed a problem where the CreateField and CreateXXXField operators would 444incorrectly allow duplicate names (the name of the field) with no exception 445generated. 446 447Implemented several changes for Notify handling. Added support for new Notify 448values (ACPI 2.0+) and improved the Notify debug output. Notify on 449PowerResource objects is no longer allowed, as per the ACPI specification. 450(Bob Moore, Zhang Rui) 451 452All Reference Objects returned via the AcpiEvaluateObject interface are now 453marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for 454NULL objects - either NULL package elements or unresolved named references. 455 456Fixed a problem where an extraneous debug message was produced for package 457objects (when debugging enabled). The message "Package List length larger 458than NumElements count" is now produced in the correct case, and is now an 459error message rather than a debug message. Added a debug message for the 460opposite case, where NumElements is larger than the Package List (the package 461will be padded out with NULL elements as per the ACPI spec.) 462 463Implemented several improvements for the output of the ASL "Debug" object to 464clarify and keep all data for a given object on one output line. 465 466Fixed two size calculation issues with the variable-length Start Dependent 467resource descriptor. 468 469Example Code and Data Size: These are the sizes for the OS-independent 470acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 471debug version of the code includes the debug output trace mechanism and has 472a much larger code and data size. 473 474 Previous Release: 475 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 476 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 477 Current Release: 478 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 479 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 480 4812) iASL Compiler/Disassembler and Tools: 482 483Fixed a problem with the use of the Switch operator where execution of the 484containing method by multiple concurrent threads could cause an 485AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 486actual Switch opcode, it must be simulated with local named temporary 487variables and if/else pairs. The solution chosen was to mark any method that 488uses Switch as Serialized, thus preventing multiple thread entries. BZ 469. 489 490---------------------------------------- 49113 February 2008. Summary of changes for version 20080213: 492 4931) ACPI CA Core Subsystem: 494 495Implemented another MS compatibility design change for GPE/Notify handling. 496GPEs are now cleared/enabled asynchronously to allow all pending notifies to 497complete first. It is expected that the OSL will queue the enable request 498behind all pending notify requests (may require changes to the local host OSL 499in AcpiOsExecute). Alexey Starikovskiy. 500 501Fixed a problem where buffer and package objects passed as arguments to a 502control method via the external AcpiEvaluateObject interface could cause an 503AE_AML_INTERNAL exception depending on the order and type of operators 504executed by the target control method. 505 506Fixed a problem where resource descriptor size optimization could cause a 507problem when a _CRS resource template is passed to a _SRS method. The _SRS 508resource template must use the same descriptors (with the same size) as 509returned from _CRS. This change affects the following resource descriptors: 510IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487) 511 512Fixed a problem where a CopyObject to RegionField, BankField, and IndexField 513objects did not perform an implicit conversion as it should. These types must 514retain their initial type permanently as per the ACPI specification. However, 515a CopyObject to all other object types should not perform an implicit 516conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 517 518Fixed a problem with the AcpiGetDevices interface where the mechanism to 519match device CIDs did not examine the entire list of available CIDs, but 520instead aborted on the first non-matching CID. Andrew Patterson. 521 522Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was 523inadvertently changed to return a 16-bit value instead of a 32-bit value, 524truncating the upper dword of a 64-bit value. This macro is only used to 525display debug output, so no incorrect calculations were made. Also, 526reimplemented the macro so that a 64-bit shift is not performed by 527inefficient compilers. 528 529Added missing va_end statements that should correspond with each va_start 530statement. 531 532Example Code and Data Size: These are the sizes for the OS-independent 533acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 534debug version of the code includes the debug output trace mechanism and has 535a much larger code and data size. 536 537 Previous Release: 538 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 539 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 540 Current Release: 541 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 542 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 543 5442) iASL Compiler/Disassembler and Tools: 545 546Implemented full disassembler support for the following new ACPI tables: 547BERT, EINJ, and ERST. Implemented partial disassembler support for the 548complicated HEST table. These tables support the Windows Hardware Error 549Architecture (WHEA). 550 551---------------------------------------- 55223 January 2008. Summary of changes for version 20080123: 553 5541) ACPI CA Core Subsystem: 555 556Added the 2008 copyright to all module headers and signons. This affects 557virtually every file in the ACPICA core subsystem, the iASL compiler, and 558the tools/utilities. 559 560Fixed a problem with the SizeOf operator when used with Package and Buffer 561objects. These objects have deferred execution for some arguments, and the 562execution is now completed before the SizeOf is executed. This problem caused 563unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ 5649558 565 566Implemented an enhancement to the interpreter "slack mode". In the absence of 567an explicit return or an implicitly returned object from the last executed 568opcode, a control method will now implicitly return an integer of value 0 for 569Microsoft compatibility. (Lin Ming) BZ 392 570 571Fixed a problem with the Load operator where an exception was not returned in 572the case where the table is already loaded. (Lin Ming) BZ 463 573 574Implemented support for the use of DDBHandles as an Indexed Reference, as per 575the ACPI spec. (Lin Ming) BZ 486 576 577Implemented support for UserTerm (Method invocation) for the Unload operator 578as per the ACPI spec. (Lin Ming) BZ 580 579 580Fixed a problem with the LoadTable operator where the OemId and OemTableId 581input strings could cause unexpected failures if they were shorter than the 582maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 583 584Implemented support for UserTerm (Method invocation) for the Unload operator 585as per the ACPI spec. (Lin Ming) BZ 580 586 587Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST, 588IBFT, UEFI, WDAT. Disassembler support is forthcoming. 589 590Example Code and Data Size: These are the sizes for the OS-independent 591acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 592debug version of the code includes the debug output trace mechanism and has 593a much larger code and data size. 594 595 Previous Release: 596 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 597 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 598 Current Release: 599 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 600 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 601 6022) iASL Compiler/Disassembler and Tools: 603 604Implemented support in the disassembler for checksum validation on incoming 605binary DSDTs and SSDTs. If incorrect, a message is displayed within the table 606header dump at the start of the disassembly. 607 608Implemented additional debugging information in the namespace listing file 609created during compilation. In addition to the namespace hierarchy, the full 610pathname to each namespace object is displayed. 611 612Fixed a problem with the disassembler where invalid ACPI tables could cause 613faults or infinite loops. 614 615Fixed an unexpected parse error when using the optional "parameter types" 616list in a control method declaration. (Lin Ming) BZ 397 617 618Fixed a problem where two External declarations with the same name did not 619cause an error (Lin Ming) BZ 509 620 621Implemented support for full TermArgs (adding Argx, Localx and method 622invocation) for the ParameterData parameter to the LoadTable operator. (Lin 623Ming) BZ 583,587 624 625---------------------------------------- 62619 December 2007. Summary of changes for version 20071219: 627 6281) ACPI CA Core Subsystem: 629 630Implemented full support for deferred execution for the TermArg string 631arguments for DataTableRegion. This enables forward references and full 632operand resolution for the three string arguments. Similar to OperationRegion 633deferred argument execution.) Lin Ming. BZ 430 634 635Implemented full argument resolution support for the BankValue argument to 636BankField. Previously, only constants were supported, now any TermArg may be 637used. Lin Ming BZ 387, 393 638 639Fixed a problem with AcpiGetDevices where the search of a branch of the 640device tree could be terminated prematurely. In accordance with the ACPI 641specification, the search down the current branch is terminated if a device 642is both not present and not functional (instead of just not present.) Yakui 643Zhao. 644 645Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if 646the underlying AML code changed the GPE enable registers. Now, any unknown 647incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled 648instead of simply ignored. Rui Zhang. 649 650Fixed a problem with Index Fields where the Index register was incorrectly 651limited to a maximum of 32 bits. Now any size may be used. 652 653Fixed a couple memory leaks associated with "implicit return" objects when 654the AML Interpreter slack mode is enabled. Lin Ming BZ 349 655 656Example Code and Data Size: These are the sizes for the OS-independent 657acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 658debug version of the code includes the debug output trace mechanism and has 659a much larger code and data size. 660 661 Previous Release: 662 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 663 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 664 Current Release: 665 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 666 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 667 668---------------------------------------- 66914 November 2007. Summary of changes for version 20071114: 670 6711) ACPI CA Core Subsystem: 672 673Implemented event counters for each of the Fixed Events, the ACPI SCI 674(interrupt) itself, and control methods executed. Named 675AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These 676should be useful for debugging and statistics. 677 678Implemented a new external interface, AcpiGetStatistics, to retrieve the 679contents of the various event counters. Returns the current values for 680AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 681AcpiMethodCount. The interface can be expanded in the future if new counters 682are added. Device drivers should use this interface rather than access the 683counters directly. 684 685Fixed a problem with the FromBCD and ToBCD operators. With some compilers, 686the ShortDivide function worked incorrectly, causing problems with the BCD 687functions with large input values. A truncation from 64-bit to 32-bit 688inadvertently occurred. Internal BZ 435. Lin Ming 689 690Fixed a problem with Index references passed as method arguments. References 691passed as arguments to control methods were dereferenced immediately (before 692control was passed to the called method). The references are now correctly 693passed directly to the called method. BZ 5389. Lin Ming 694 695Fixed a problem with CopyObject used in conjunction with the Index operator. 696The reference was incorrectly dereferenced before the copy. The reference is 697now correctly copied. BZ 5391. Lin Ming 698 699Fixed a problem with Control Method references within Package objects. These 700references are now correctly generated. This completes the package 701construction overhaul that began in version 20071019. 702 703Example Code and Data Size: These are the sizes for the OS-independent 704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 705debug version of the code includes the debug output trace mechanism and has 706a much larger code and data size. 707 708 Previous Release: 709 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 710 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 711 Current Release: 712 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 713 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 714 715 7162) iASL Compiler/Disassembler and Tools: 717 718The AcpiExec utility now installs handlers for all of the predefined 719Operation Region types. New types supported are: PCI_Config, CMOS, and 720PCIBARTarget. 721 722Fixed a problem with the 64-bit version of AcpiExec where the extended (64- 723bit) address fields for the DSDT and FACS within the FADT were not being 724used, causing truncation of the upper 32-bits of these addresses. Lin Ming 725and Bob Moore 726 727---------------------------------------- 72819 October 2007. Summary of changes for version 20071019: 729 7301) ACPI CA Core Subsystem: 731 732Fixed a problem with the Alias operator when the target of the alias is a 733named ASL operator that opens a new scope -- Scope, Device, PowerResource, 734Processor, and ThermalZone. In these cases, any children of the original 735operator could not be accessed via the alias, potentially causing unexpected 736AE_NOT_FOUND exceptions. (BZ 9067) 737 738Fixed a problem with the Package operator where all named references were 739created as object references and left otherwise unresolved. According to the 740ACPI specification, a Package can only contain Data Objects or references to 741control methods. The implication is that named references to Data Objects 742(Integer, Buffer, String, Package, BufferField, Field) should be resolved 743immediately upon package creation. This is the approach taken with this 744change. References to all other named objects (Methods, Devices, Scopes, 745etc.) are all now properly created as reference objects. (BZ 5328) 746 747Reverted a change to Notify handling that was introduced in version 74820070508. This version changed the Notify handling from asynchronous to 749fully synchronous (Device driver Notify handling with respect to the Notify 750ASL operator). It was found that this change caused more problems than it 751solved and was removed by most users. 752 753Fixed a problem with the Increment and Decrement operators where the type of 754the target object could be unexpectedly and incorrectly changed. (BZ 353) 755Lin Ming. 756 757Fixed a problem with the Load and LoadTable operators where the table 758location within the namespace was ignored. Instead, the table was always 759loaded into the root or current scope. Lin Ming. 760 761Fixed a problem with the Load operator when loading a table from a buffer 762object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 763 764Fixed a problem with the Debug object where a store of a DdbHandle reference 765object to the Debug object could cause a fault. 766 767Added a table checksum verification for the Load operator, in the case where 768the load is from a buffer. (BZ 578). 769 770Implemented additional parameter validation for the LoadTable operator. The 771length of the input strings SignatureString, OemIdString, and OemTableId are 772now checked for maximum lengths. (BZ 582) Lin Ming. 773 774Example Code and Data Size: These are the sizes for the OS-independent 775acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 776debug version of the code includes the debug output trace mechanism and has 777a much larger code and data size. 778 779 Previous Release: 780 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 781 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 782 Current Release: 783 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 784 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 785 786 7872) iASL Compiler/Disassembler: 788 789Fixed a problem where if a single file was specified and the file did not 790exist, no error message was emitted. (Introduced with wildcard support in 791version 20070917.) 792 793---------------------------------------- 79419 September 2007. Summary of changes for version 20070919: 795 7961) ACPI CA Core Subsystem: 797 798Designed and implemented new external interfaces to install and remove 799handlers for ACPI table-related events. Current events that are defined are 800LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 801they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 802AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 803 804Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 805(acpi_serialized option on Linux) could cause some systems to hang during 806initialization. (Bob Moore) BZ 8171 807 808Fixed a problem where objects of certain types (Device, ThermalZone, 809Processor, PowerResource) can be not found if they are declared and 810referenced from within the same control method (Lin Ming) BZ 341 811 812Example Code and Data Size: These are the sizes for the OS-independent 813acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 814debug version of the code includes the debug output trace mechanism and has 815a much larger code and data size. 816 817 Previous Release: 818 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 819 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 820 Current Release: 821 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 822 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 823 824 8252) iASL Compiler/Disassembler: 826 827Implemented support to allow multiple files to be compiled/disassembled in a 828single invocation. This includes command line wildcard support for both the 829Windows and Unix versions of the compiler. This feature simplifies the 830disassembly and compilation of multiple ACPI tables in a single directory. 831 832---------------------------------------- 83308 May 2007. Summary of changes for version 20070508: 834 8351) ACPI CA Core Subsystem: 836 837Implemented a Microsoft compatibility design change for the handling of the 838Notify AML operator. Previously, notify handlers were dispatched and 839executed completely asynchronously in a deferred thread. The new design 840still executes the notify handlers in a different thread, but the original 841thread that executed the Notify() now waits at a synchronization point for 842the notify handler to complete. Some machines depend on a synchronous Notify 843operator in order to operate correctly. 844 845Implemented support to allow Package objects to be passed as method 846arguments to the external AcpiEvaluateObject interface. Previously, this 847would return the AE_NOT_IMPLEMENTED exception. This feature had not been 848implemented since there were no reserved control methods that required it 849until recently. 850 851Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that 852contained invalid non-zero values in reserved fields could cause later 853failures because these fields have meaning in later revisions of the FADT. 854For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields 855are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 856 857Fixed a problem where the Global Lock handle was not properly updated if a 858thread that acquired the Global Lock via executing AML code then attempted 859to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe 860Liu. 861 862Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 863could be corrupted if the interrupt being removed was at the head of the 864list. Reported by Linn Crosetto. 865 866Example Code and Data Size: These are the sizes for the OS-independent 867acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 868debug version of the code includes the debug output trace mechanism and has 869a much larger code and data size. 870 871 Previous Release: 872 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 873 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 874 Current Release: 875 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 876 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 877 878---------------------------------------- 87920 March 2007. Summary of changes for version 20070320: 880 8811) ACPI CA Core Subsystem: 882 883Implemented a change to the order of interpretation and evaluation of AML 884operand objects within the AML interpreter. The interpreter now evaluates 885operands in the order that they appear in the AML stream (and the 886corresponding ASL code), instead of in the reverse order (after the entire 887operand list has been parsed). The previous behavior caused several subtle 888incompatibilities with the Microsoft AML interpreter as well as being 889somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 890 891Implemented a change to the ACPI Global Lock support. All interfaces to the 892global lock now allow the same thread to acquire the lock multiple times. 893This affects the AcpiAcquireGlobalLock external interface to the global lock 894as well as the internal use of the global lock to support AML fields -- a 895control method that is holding the global lock can now simultaneously access 896AML fields that require global lock protection. Previously, in both cases, 897this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to 898AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 899Controller. There is no change to the behavior of the AML Acquire operator, 900as this can already be used to acquire a mutex multiple times by the same 901thread. BZ 8066. With assistance from Alexey Starikovskiy. 902 903Fixed a problem where invalid objects could be referenced in the AML 904Interpreter after error conditions. During operand evaluation, ensure that 905the internal "Return Object" field is cleared on error and only valid 906pointers are stored there. Caused occasional access to deleted objects that 907resulted in "large reference count" warning messages. Valery Podrezov. 908 909Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on 910deeply nested control method invocations. BZ 7873, local BZ 487. Valery 911Podrezov. 912 913Fixed an internal problem with the handling of result objects on the 914interpreter result stack. BZ 7872. Valery Podrezov. 915 916Removed obsolete code that handled the case where AML_NAME_OP is the target 917of a reference (Reference.Opcode). This code was no longer necessary. BZ 9187874. Valery Podrezov. 919 920Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a 921remnant from the previously discontinued 16-bit support. 922 923Example Code and Data Size: These are the sizes for the OS-independent 924acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 925debug version of the code includes the debug output trace mechanism and has 926a much larger code and data size. 927 928 Previous Release: 929 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 930 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 931 Current Release: 932 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 933 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 934 935---------------------------------------- 93626 January 2007. Summary of changes for version 20070126: 937 9381) ACPI CA Core Subsystem: 939 940Added the 2007 copyright to all module headers and signons. This affects 941virtually every file in the ACPICA core subsystem, the iASL compiler, and 942the utilities. 943 944Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 945during a table load. A bad pointer was passed in the case where the DSDT is 946overridden, causing a fault in this case. 947 948Example Code and Data Size: These are the sizes for the OS-independent 949acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 950debug version of the code includes the debug output trace mechanism and has 951a much larger code and data size. 952 953 Previous Release: 954 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 955 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 956 Current Release: 957 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 958 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 959 960---------------------------------------- 96115 December 2006. Summary of changes for version 20061215: 962 9631) ACPI CA Core Subsystem: 964 965Support for 16-bit ACPICA has been completely removed since it is no longer 966necessary and it clutters the code. All 16-bit macros, types, and 967conditional compiles have been removed, cleaning up and simplifying the code 968across the entire subsystem. DOS support is no longer needed since the 969bootable Linux firmware kit is now available. 970 971The handler for the Global Lock is now removed during AcpiTerminate to 972enable a clean subsystem restart, via the implementation of the 973AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 974HP) 975 976Implemented enhancements to the multithreading support within the debugger 977to enable improved multithreading debugging and evaluation of the subsystem. 978(Valery Podrezov) 979 980Debugger: Enhanced the Statistics/Memory command to emit the total (maximum) 981memory used during the execution, as well as the maximum memory consumed by 982each of the various object types. (Valery Podrezov) 983 984Example Code and Data Size: These are the sizes for the OS-independent 985acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 986debug version of the code includes the debug output trace mechanism and has 987a much larger code and data size. 988 989 Previous Release: 990 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 991 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 992 Current Release: 993 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 994 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 995 996 9972) iASL Compiler/Disassembler and Tools: 998 999AcpiExec: Implemented a new option (-m) to display full memory use 1000statistics upon subsystem/program termination. (Valery Podrezov) 1001 1002---------------------------------------- 100309 November 2006. Summary of changes for version 20061109: 1004 10051) ACPI CA Core Subsystem: 1006 1007Optimized the Load ASL operator in the case where the source operand is an 1008operation region. Simply map the operation region memory, instead of 1009performing a bytewise read. (Region must be of type SystemMemory, see 1010below.) 1011 1012Fixed the Load ASL operator for the case where the source operand is a 1013region field. A buffer object is also allowed as the source operand. BZ 480 1014 1015Fixed a problem where the Load ASL operator allowed the source operand to be 1016an operation region of any type. It is now restricted to regions of type 1017SystemMemory, as per the ACPI specification. BZ 481 1018 1019Additional cleanup and optimizations for the new Table Manager code. 1020 1021AcpiEnable will now fail if all of the required ACPI tables are not loaded 1022(FADT, FACS, DSDT). BZ 477 1023 1024Added #pragma pack(8/4) to acobject.h to ensure that the structures in this 1025header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 1026manually optimized to be aligned and will not work if it is byte-packed. 1027 1028Example Code and Data Size: These are the sizes for the OS-independent 1029acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1030debug version of the code includes the debug output trace mechanism and has 1031a much larger code and data size. 1032 1033 Previous Release: 1034 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 1035 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 1036 Current Release: 1037 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 1038 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 1039 1040 10412) iASL Compiler/Disassembler and Tools: 1042 1043Fixed a problem where the presence of the _OSI predefined control method 1044within complex expressions could cause an internal compiler error. 1045 1046AcpiExec: Implemented full region support for multiple address spaces. 1047SpaceId is now part of the REGION object. BZ 429 1048 1049---------------------------------------- 105011 October 2006. Summary of changes for version 20061011: 1051 10521) ACPI CA Core Subsystem: 1053 1054Completed an AML interpreter performance enhancement for control method 1055execution. Previously a 2-pass parse/execution, control methods are now 1056completely parsed and executed in a single pass. This improves overall 1057interpreter performance by ~25%, reduces code size, and reduces CPU stack 1058use. (Valery Podrezov + interpreter changes in version 20051202 that 1059eliminated namespace loading during the pass one parse.) 1060 1061Implemented _CID support for PCI Root Bridge detection. If the _HID does not 1062match the predefined PCI Root Bridge IDs, the _CID list (if present) is now 1063obtained and also checked for an ID match. 1064 1065Implemented additional support for the PCI _ADR execution: upsearch until a 1066device scope is found before executing _ADR. This allows PCI_Config 1067operation regions to be declared locally within control methods underneath 1068PCI device objects. 1069 1070Fixed a problem with a possible race condition between threads executing 1071AcpiWalkNamespace and the AML interpreter. This condition was removed by 1072modifying AcpiWalkNamespace to (by default) ignore all temporary namespace 1073entries created during any concurrent control method execution. An 1074additional namespace race condition is known to exist between 1075AcpiWalkNamespace and the Load/Unload ASL operators and is still under 1076investigation. 1077 1078Restructured the AML ParseLoop function, breaking it into several 1079subfunctions in order to reduce CPU stack use and improve maintainability. 1080(Mikhail Kouzmich) 1081 1082AcpiGetHandle: Fix for parameter validation to detect invalid combinations 1083of prefix handle and pathname. BZ 478 1084 1085Example Code and Data Size: These are the sizes for the OS-independent 1086acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1087debug version of the code includes the debug output trace mechanism and has 1088a much larger code and data size. 1089 1090 Previous Release: 1091 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 1092 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 1093 Current Release: 1094 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 1095 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 1096 10972) iASL Compiler/Disassembler and Tools: 1098 1099Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager 1100to restore original behavior. 1101 1102---------------------------------------- 110327 September 2006. Summary of changes for version 20060927: 1104 11051) ACPI CA Core Subsystem: 1106 1107Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 1108These functions now use a spinlock for mutual exclusion and the interrupt 1109level indication flag is not needed. 1110 1111Fixed a problem with the Global Lock where the lock could appear to be 1112obtained before it is actually obtained. The global lock semaphore was 1113inadvertently created with one unit instead of zero units. (BZ 464) Fiodor 1114Suietov. 1115 1116Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during 1117a read from a buffer or region field. (BZ 458) Fiodor Suietov. 1118 1119Example Code and Data Size: These are the sizes for the OS-independent 1120acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1121debug version of the code includes the debug output trace mechanism and has 1122a much larger code and data size. 1123 1124 Previous Release: 1125 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 1126 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 1127 Current Release: 1128 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 1129 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 1130 1131 11322) iASL Compiler/Disassembler and Tools: 1133 1134Fixed a compilation problem with the pre-defined Resource Descriptor field 1135names where an "object does not exist" error could be incorrectly generated 1136if the parent ResourceTemplate pathname places the template within a 1137different namespace scope than the current scope. (BZ 7212) 1138 1139Fixed a problem where the compiler could hang after syntax errors detected 1140in an ElseIf construct. (BZ 453) 1141 1142Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 1143operator. An incorrect output filename was produced when this parameter was 1144a null string (""). Now, the original input filename is used as the AML 1145output filename, with an ".aml" extension. 1146 1147Implemented a generic batch command mode for the AcpiExec utility (execute 1148any AML debugger command) (Valery Podrezov). 1149 1150---------------------------------------- 115112 September 2006. Summary of changes for version 20060912: 1152 11531) ACPI CA Core Subsystem: 1154 1155Enhanced the implementation of the "serialized mode" of the interpreter 1156(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 1157specified, instead of creating a serialization semaphore per control method, 1158the interpreter lock is simply no longer released before a blocking 1159operation during control method execution. This effectively makes the AML 1160Interpreter single-threaded. The overhead of a semaphore per-method is 1161eliminated. 1162 1163Fixed a regression where an error was no longer emitted if a control method 1164attempts to create 2 objects of the same name. This once again returns 1165AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that 1166will dynamically serialize the control method to possible prevent future 1167errors. (BZ 440) 1168 1169Integrated a fix for a problem with PCI Express HID detection in the PCI 1170Config Space setup procedure. (BZ 7145) 1171 1172Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 1173AcpiHwInitialize function - the FADT registers are now validated when the 1174table is loaded. 1175 1176Added two new warnings during FADT verification - 1) if the FADT is larger 1177than the largest known FADT version, and 2) if there is a mismatch between a 117832-bit block address and the 64-bit X counterpart (when both are non-zero.) 1179 1180Example Code and Data Size: These are the sizes for the OS-independent 1181acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1182debug version of the code includes the debug output trace mechanism and has 1183a much larger code and data size. 1184 1185 Previous Release: 1186 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 1187 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 1188 Current Release: 1189 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 1190 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 1191 1192 11932) iASL Compiler/Disassembler and Tools: 1194 1195Fixed a problem with the implementation of the Switch() operator where the 1196temporary variable was declared too close to the actual Switch, instead of 1197at method level. This could cause a problem if the Switch() operator is 1198within a while loop, causing an error on the second iteration. (BZ 460) 1199 1200Disassembler - fix for error emitted for unknown type for target of scope 1201operator. Now, ignore it and continue. 1202 1203Disassembly of an FADT now verifies the input FADT and reports any errors 1204found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 1205 1206Disassembly of raw data buffers with byte initialization data now prefixes 1207each output line with the current buffer offset. 1208 1209Disassembly of ASF! table now includes all variable-length data fields at 1210the end of some of the subtables. 1211 1212The disassembler now emits a comment if a buffer appears to be a 1213ResourceTemplate, but cannot be disassembled as such because the EndTag does 1214not appear at the very end of the buffer. 1215 1216AcpiExec - Added the "-t" command line option to enable the serialized mode 1217of the AML interpreter. 1218 1219---------------------------------------- 122031 August 2006. Summary of changes for version 20060831: 1221 12221) ACPI CA Core Subsystem: 1223 1224Miscellaneous fixes for the Table Manager: 1225- Correctly initialize internal common FADT for all 64-bit "X" fields 1226- Fixed a couple table mapping issues during table load 1227- Fixed a couple alignment issues for IA64 1228- Initialize input array to zero in AcpiInitializeTables 1229- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 1230AcpiGetTableByIndex 1231 1232Change for GPE support: when a "wake" GPE is received, all wake GPEs are now 1233immediately disabled to prevent the waking GPE from firing again and to 1234prevent other wake GPEs from interrupting the wake process. 1235 1236Added the AcpiGpeCount global that tracks the number of processed GPEs, to 1237be used for debugging systems with a large number of ACPI interrupts. 1238 1239Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 1240both the ACPICA headers and the disassembler. 1241 1242Example Code and Data Size: These are the sizes for the OS-independent 1243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1244debug version of the code includes the debug output trace mechanism and has 1245a much larger code and data size. 1246 1247 Previous Release: 1248 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 1249 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 1250 Current Release: 1251 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 1252 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 1253 1254 12552) iASL Compiler/Disassembler and Tools: 1256 1257Disassembler support for the DMAR ACPI table. 1258 1259---------------------------------------- 126023 August 2006. Summary of changes for version 20060823: 1261 12621) ACPI CA Core Subsystem: 1263 1264The Table Manager component has been completely redesigned and 1265reimplemented. The new design is much simpler, and reduces the overall code 1266and data size of the kernel-resident ACPICA by approximately 5%. Also, it is 1267now possible to obtain the ACPI tables very early during kernel 1268initialization, even before dynamic memory management is initialized. 1269(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 1270 1271Obsolete ACPICA interfaces: 1272 1273- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init 1274time). 1275- AcpiLoadTable: Not needed. 1276- AcpiUnloadTable: Not needed. 1277 1278New ACPICA interfaces: 1279 1280- AcpiInitializeTables: Must be called before the table manager can be used. 1281- AcpiReallocateRootTable: Used to transfer the root table to dynamically 1282allocated memory after it becomes available. 1283- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables 1284in the RSDT/XSDT. 1285 1286Other ACPICA changes: 1287 1288- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use 1289AcpiOsUnmapMemory to free this mapping. 1290- AcpiGetTable returns the actual mapped table. The mapping is managed 1291internally and must not be deleted by the caller. Use of this interface 1292causes no additional dynamic memory allocation. 1293- AcpiFindRootPointer: Support for physical addressing has been eliminated, 1294it appeared to be unused. 1295- The interface to AcpiOsMapMemory has changed to be consistent with the 1296other allocation interfaces. 1297- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary 1298parameters. 1299- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64- 1300bit platforms. Was previously 64 bits on all platforms. 1301- The interface to the ACPI Global Lock acquire/release macros have changed 1302slightly since ACPICA no longer keeps a local copy of the FACS with a 1303constructed pointer to the actual global lock. 1304 1305Porting to the new table manager: 1306 1307- AcpiInitializeTables: Must be called once, and can be called anytime 1308during the OS initialization process. It allows the host to specify an area 1309of memory to be used to store the internal version of the RSDT/XSDT (root 1310table). This allows the host to access ACPI tables before memory management 1311is initialized and running. 1312- AcpiReallocateRootTable: Can be called after memory management is running 1313to copy the root table to a dynamically allocated array, freeing up the 1314scratch memory specified in the call to AcpiInitializeTables. 1315- AcpiSubsystemInitialize: This existing interface is independent of the 1316Table Manager, and does not have to be called before the Table Manager can 1317be used, it only must be called before the rest of ACPICA can be used. 1318- ACPI Tables: Some changes have been made to the names and structure of the 1319actbl.h and actbl1.h header files and may require changes to existing code. 1320For example, bitfields have been completely removed because of their lack of 1321portability across C compilers. 1322- Update interfaces to the Global Lock acquire/release macros if local 1323versions are used. (see acwin.h) 1324 1325Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 1326 1327New files: tbfind.c 1328 1329Example Code and Data Size: These are the sizes for the OS-independent 1330acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1331debug version of the code includes the debug output trace mechanism and has 1332a much larger code and data size. 1333 1334 Previous Release: 1335 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 1336 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 1337 Current Release: 1338 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 1339 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 1340 1341 13422) iASL Compiler/Disassembler and Tools: 1343 1344No changes for this release. 1345 1346---------------------------------------- 134721 July 2006. Summary of changes for version 20060721: 1348 13491) ACPI CA Core Subsystem: 1350 1351The full source code for the ASL test suite used to validate the iASL 1352compiler and the ACPICA core subsystem is being released with the ACPICA 1353source for the first time. The source is contained in a separate package and 1354consists of over 1100 files that exercise all ASL/AML operators. The package 1355should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor 1356Suietov) 1357 1358Completed a new design and implementation for support of the ACPI Global 1359Lock. On the OS side, the global lock is now treated as a standard AML 1360mutex. Previously, multiple OS threads could "acquire" the global lock 1361simultaneously. However, this could cause the BIOS to be starved out of the 1362lock - especially in cases such as the Embedded Controller driver where 1363there is a tight coupling between the OS and the BIOS. 1364 1365Implemented an optimization for the ACPI Global Lock interrupt mechanism. 1366The Global Lock interrupt handler no longer queues the execution of a 1367separate thread to signal the global lock semaphore. Instead, the semaphore 1368is signaled directly from the interrupt handler. 1369 1370Implemented support within the AML interpreter for package objects that 1371contain a larger AML length (package list length) than the package element 1372count. In this case, the length of the package is truncated to match the 1373package element count. Some BIOS code apparently modifies the package length 1374on the fly, and this change supports this behavior. Provides compatibility 1375with the MS AML interpreter. (With assistance from Fiodor Suietov) 1376 1377Implemented a temporary fix for the BankValue parameter of a Bank Field to 1378support all constant values, now including the Zero and One opcodes. 1379Evaluation of this parameter must eventually be converted to a full TermArg 1380evaluation. A not-implemented error is now returned (temporarily) for non- 1381constant values for this parameter. 1382 1383Fixed problem reports (Fiodor Suietov) integrated: 1384- Fix for premature object deletion after CopyObject on Operation Region (BZ 1385350) 1386 1387Example Code and Data Size: These are the sizes for the OS-independent 1388acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1389debug version of the code includes the debug output trace mechanism and has 1390a much larger code and data size. 1391 1392 Previous Release: 1393 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 1394 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 1395 Current Release: 1396 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 1397 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 1398 1399 14002) iASL Compiler/Disassembler and Tools: 1401 1402No changes for this release. 1403 1404---------------------------------------- 140507 July 2006. Summary of changes for version 20060707: 1406 14071) ACPI CA Core Subsystem: 1408 1409Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 1410that do not allow the initialization of address pointers within packed 1411structures - even though the hardware itself may support misaligned 1412transfers. Some of the debug data structures are packed by default to 1413minimize size. 1414 1415Added an error message for the case where AcpiOsGetThreadId() returns zero. 1416A non-zero value is required by the core ACPICA code to ensure the proper 1417operation of AML mutexes and recursive control methods. 1418 1419The DSDT is now the only ACPI table that determines whether the AML 1420interpreter is in 32-bit or 64-bit mode. Not really a functional change, but 1421the hooks for per-table 32/64 switching have been removed from the code. A 1422clarification to the ACPI specification is forthcoming in ACPI 3.0B. 1423 1424Fixed a possible leak of an OwnerID in the error path of 1425AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 1426deletion to a single place in AcpiTbUninstallTable to correct possible leaks 1427when using the AcpiTbDeleteTablesByType interface (with assistance from 1428Lance Ortiz.) 1429 1430Fixed a problem with Serialized control methods where the semaphore 1431associated with the method could be over-signaled after multiple method 1432invocations. 1433 1434Fixed two issues with the locking of the internal namespace data structure. 1435Both the Unload() operator and AcpiUnloadTable interface now lock the 1436namespace during the namespace deletion associated with the table unload 1437(with assistance from Linn Crosetto.) 1438 1439Fixed problem reports (Valery Podrezov) integrated: 1440- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 1441 1442Fixed problem reports (Fiodor Suietov) integrated: 1443- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 1444- On Address Space handler deletion, needless deactivation call (BZ 374) 1445- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375) 1446- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone 1447(BZ 376) 1448- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 1449- Minimum Length of RSDT should be validated (BZ 379) 1450- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 1451Handler (BZ (380) 1452- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded 1453(BZ 381) 1454 1455Example Code and Data Size: These are the sizes for the OS-independent 1456acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1457debug version of the code includes the debug output trace mechanism and has 1458a much larger code and data size. 1459 1460 Previous Release: 1461 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 1462 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 1463 Current Release: 1464 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 1465 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 1466 1467 14682) iASL Compiler/Disassembler and Tools: 1469 1470Fixed problem reports: 1471Compiler segfault when ASL contains a long (>1024) String declaration (BZ 1472436) 1473 1474---------------------------------------- 147523 June 2006. Summary of changes for version 20060623: 1476 14771) ACPI CA Core Subsystem: 1478 1479Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 1480allows the type to be customized to the host OS for improved efficiency 1481(since a spinlock is usually a very small object.) 1482 1483Implemented support for "ignored" bits in the ACPI registers. According to 1484the ACPI specification, these bits should be preserved when writing the 1485registers via a read/modify/write cycle. There are 3 bits preserved in this 1486manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 1487 1488Implemented the initial deployment of new OSL mutex interfaces. Since some 1489host operating systems have separate mutex and semaphore objects, this 1490feature was requested. The base code now uses mutexes (and the new mutex 1491interfaces) wherever a binary semaphore was used previously. However, for 1492the current release, the mutex interfaces are defined as macros to map them 1493to the existing semaphore interfaces. Therefore, no OSL changes are required 1494at this time. (See acpiosxf.h) 1495 1496Fixed several problems with the support for the control method SyncLevel 1497parameter. The SyncLevel now works according to the ACPI specification and 1498in concert with the Mutex SyncLevel parameter, since the current SyncLevel 1499is a property of the executing thread. Mutual exclusion for control methods 1500is now implemented with a mutex instead of a semaphore. 1501 1502Fixed three instances of the use of the C shift operator in the bitfield 1503support code (exfldio.c) to avoid the use of a shift value larger than the 1504target data width. The behavior of C compilers is undefined in this case and 1505can cause unpredictable results, and therefore the case must be detected and 1506avoided. (Fiodor Suietov) 1507 1508Added an info message whenever an SSDT or OEM table is loaded dynamically 1509via the Load() or LoadTable() ASL operators. This should improve debugging 1510capability since it will show exactly what tables have been loaded (beyond 1511the tables present in the RSDT/XSDT.) 1512 1513Example Code and Data Size: These are the sizes for the OS-independent 1514acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1515debug version of the code includes the debug output trace mechanism and has 1516a much larger code and data size. 1517 1518 Previous Release: 1519 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 1520 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 1521 Current Release: 1522 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 1523 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 1524 1525 15262) iASL Compiler/Disassembler and Tools: 1527 1528No changes for this release. 1529 1530---------------------------------------- 153108 June 2006. Summary of changes for version 20060608: 1532 15331) ACPI CA Core Subsystem: 1534 1535Converted the locking mutex used for the ACPI hardware to a spinlock. This 1536change should eliminate all problems caused by attempting to acquire a 1537semaphore at interrupt level, and it means that all ACPICA external 1538interfaces that directly access the ACPI hardware can be safely called from 1539interrupt level. OSL code that implements the semaphore interfaces should be 1540able to eliminate any workarounds for being called at interrupt level. 1541 1542Fixed a regression introduced in 20060526 where the ACPI device 1543initialization could be prematurely aborted with an AE_NOT_FOUND if a device 1544did not have an optional _INI method. 1545 1546Fixed an IndexField issue where a write to the Data Register should be 1547limited in size to the AccessSize (width) of the IndexField itself. (BZ 433, 1548Fiodor Suietov) 1549 1550Fixed problem reports (Valery Podrezov) integrated: 1551- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 1552 1553Fixed problem reports (Fiodor Suietov) integrated: 1554- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 1555 1556Removed four global mutexes that were obsolete and were no longer being 1557used. 1558 1559Example Code and Data Size: These are the sizes for the OS-independent 1560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1561debug version of the code includes the debug output trace mechanism and has 1562a much larger code and data size. 1563 1564 Previous Release: 1565 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 1566 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 1567 Current Release: 1568 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 1569 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 1570 1571 15722) iASL Compiler/Disassembler and Tools: 1573 1574Fixed a fault when using -g option (get tables from registry) on Windows 1575machines. 1576 1577Fixed problem reports integrated: 1578- Generate error if CreateField NumBits parameter is zero. (BZ 405) 1579- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 1580Suietov) 1581- Global table revision override (-r) is ignored (BZ 413) 1582 1583---------------------------------------- 158426 May 2006. Summary of changes for version 20060526: 1585 15861) ACPI CA Core Subsystem: 1587 1588Restructured, flattened, and simplified the internal interfaces for 1589namespace object evaluation - resulting in smaller code, less CPU stack use, 1590and fewer interfaces. (With assistance from Mikhail Kouzmich) 1591 1592Fixed a problem with the CopyObject operator where the first parameter was 1593not typed correctly for the parser, interpreter, compiler, and disassembler. 1594Caused various errors and unexpected behavior. 1595 1596Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 1597produced incorrect results with some C compilers. Since the behavior of C 1598compilers when the shift value is larger than the datatype width is 1599apparently not well defined, the interpreter now detects this condition and 1600simply returns zero as expected in all such cases. (BZ 395) 1601 1602Fixed problem reports (Valery Podrezov) integrated: 1603- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 1604- Allow interpreter to handle nested method declarations (BZ 5361) 1605 1606Fixed problem reports (Fiodor Suietov) integrated: 1607- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355) 1608- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356) 1609- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 1610- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 1611- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 1612- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 1613- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 1614- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 1615- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365) 1616- Status of the Global Initialization Handler call not used (BZ 366) 1617- Incorrect object parameter to Global Initialization Handler (BZ 367) 1618 1619Example Code and Data Size: These are the sizes for the OS-independent 1620acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1621debug version of the code includes the debug output trace mechanism and has 1622a much larger code and data size. 1623 1624 Previous Release: 1625 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 1626 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 1627 Current Release: 1628 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 1629 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 1630 1631 16322) iASL Compiler/Disassembler and Tools: 1633 1634Modified the parser to allow the names IO, DMA, and IRQ to be used as 1635namespace identifiers with no collision with existing resource descriptor 1636macro names. This provides compatibility with other ASL compilers and is 1637most useful for disassembly/recompilation of existing tables without parse 1638errors. (With assistance from Thomas Renninger) 1639 1640Disassembler: fixed an incorrect disassembly problem with the 1641DataTableRegion and CopyObject operators. Fixed a possible fault during 1642disassembly of some Alias operators. 1643 1644---------------------------------------- 164512 May 2006. Summary of changes for version 20060512: 1646 16471) ACPI CA Core Subsystem: 1648 1649Replaced the AcpiOsQueueForExecution interface with a new interface named 1650AcpiOsExecute. The major difference is that the new interface does not have 1651a Priority parameter, this appeared to be useless and has been replaced by a 1652Type parameter. The Type tells the host what type of execution is being 1653requested, such as global lock handler, notify handler, GPE handler, etc. 1654This allows the host to queue and execute the request as appropriate for the 1655request type, possibly using different work queues and different priorities 1656for the various request types. This enables fixes for multithreading 1657deadlock problems such as BZ #5534, and will require changes to all existing 1658OS interface layers. (Alexey Starikovskiy and Bob Moore) 1659 1660Fixed a possible memory leak associated with the support for the so-called 1661"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 1662Suietov) 1663 1664Fixed a problem with the Load() operator where a table load from an 1665operation region could overwrite an internal table buffer by up to 7 bytes 1666and cause alignment faults on IPF systems. (With assistance from Luming Yu) 1667 1668Example Code and Data Size: These are the sizes for the OS-independent 1669acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1670debug version of the code includes the debug output trace mechanism and has 1671a much larger code and data size. 1672 1673 Previous Release: 1674 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 1675 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 1676 Current Release: 1677 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 1678 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 1679 1680 1681 16822) iASL Compiler/Disassembler and Tools: 1683 1684Disassembler: Implemented support to cross reference the internal namespace 1685and automatically generate ASL External() statements for symbols not defined 1686within the current table being disassembled. This will simplify the 1687disassembly and recompilation of interdependent tables such as SSDTs since 1688these statements will no longer have to be added manually. 1689 1690Disassembler: Implemented experimental support to automatically detect 1691invocations of external control methods and generate appropriate External() 1692statements. This is problematic because the AML cannot be correctly parsed 1693until the number of arguments for each control method is known. Currently, 1694standalone method invocations and invocations as the source operand of a 1695Store() statement are supported. 1696 1697Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 1698LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 1699LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 1700more readable and likely closer to the original ASL source. 1701 1702---------------------------------------- 170321 April 2006. Summary of changes for version 20060421: 1704 17051) ACPI CA Core Subsystem: 1706 1707Removed a device initialization optimization introduced in 20051216 where 1708the _STA method was not run unless an _INI was also present for the same 1709device. This optimization could cause problems because it could allow _INI 1710methods to be run within a not-present device subtree. (If a not-present 1711device had no _INI, _STA would not be run, the not-present status would not 1712be discovered, and the children of the device would be incorrectly 1713traversed.) 1714 1715Implemented a new _STA optimization where namespace subtrees that do not 1716contain _INI are identified and ignored during device initialization. 1717Selectively running _STA can significantly improve boot time on large 1718machines (with assistance from Len Brown.) 1719 1720Implemented support for the device initialization case where the returned 1721_STA flags indicate a device not-present but functioning. In this case, _INI 1722is not run, but the device children are examined for presence, as per the 1723ACPI specification. 1724 1725Implemented an additional change to the IndexField support in order to 1726conform to MS behavior. The value written to the Index Register is not 1727simply a byte offset, it is a byte offset in units of the access width of 1728the parent Index Field. (Fiodor Suietov) 1729 1730Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 1731interface is called during the creation of all AML operation regions, and 1732allows the host OS to exert control over what addresses it will allow the 1733AML code to access. Operation Regions whose addresses are disallowed will 1734cause a runtime exception when they are actually accessed (will not affect 1735or abort table loading.) See oswinxf or osunixxf for an example 1736implementation. 1737 1738Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 1739interface allows the host OS to match the various "optional" 1740interface/behavior strings for the _OSI predefined control method as 1741appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 1742for an example implementation. 1743 1744Restructured and corrected various problems in the exception handling code 1745paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 1746(with assistance from Takayoshi Kochi.) 1747 1748Modified the Linux source converter to ignore quoted string literals while 1749converting identifiers from mixed to lower case. This will correct problems 1750with the disassembler and other areas where such strings must not be 1751modified. 1752 1753The ACPI_FUNCTION_* macros no longer require quotes around the function 1754name. This allows the Linux source converter to convert the names, now that 1755the converter ignores quoted strings. 1756 1757Example Code and Data Size: These are the sizes for the OS-independent 1758acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1759debug version of the code includes the debug output trace mechanism and has 1760a much larger code and data size. 1761 1762 Previous Release: 1763 1764 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 1765 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 1766 Current Release: 1767 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 1768 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 1769 1770 17712) iASL Compiler/Disassembler and Tools: 1772 1773Implemented 3 new warnings for iASL, and implemented multiple warning levels 1774(w2 flag). 1775 17761) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not 1777WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 1778check for the possible timeout, a warning is issued. 1779 17802) Useless operators: If an ASL operator does not specify an optional target 1781operand and it also does not use the function return value from the 1782operator, a warning is issued since the operator effectively does nothing. 1783 17843) Unreferenced objects: If a namespace object is created, but never 1785referenced, a warning is issued. This is a warning level 2 since there are 1786cases where this is ok, such as when a secondary table is loaded that uses 1787the unreferenced objects. Even so, care is taken to only flag objects that 1788don't look like they will ever be used. For example, the reserved methods 1789(starting with an underscore) are usually not referenced because it is 1790expected that the OS will invoke them. 1791 1792---------------------------------------- 179331 March 2006. Summary of changes for version 20060331: 1794 17951) ACPI CA Core Subsystem: 1796 1797Implemented header file support for the following additional ACPI tables: 1798ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support, 1799all current and known ACPI tables are now defined in the ACPICA headers and 1800are available for use by device drivers and other software. 1801 1802Implemented support to allow tables that contain ACPI names with invalid 1803characters to be loaded. Previously, this would cause the table load to 1804fail, but since there are several known cases of such tables on existing 1805machines, this change was made to enable ACPI support for them. Also, this 1806matches the behavior of the Microsoft ACPI implementation. 1807 1808Fixed a couple regressions introduced during the memory optimization in the 180920060317 release. The namespace node definition required additional 1810reorganization and an internal datatype that had been changed to 8-bit was 1811restored to 32-bit. (Valery Podrezov) 1812 1813Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 1814could be passed through to AcpiOsReleaseObject which is unexpected. Such 1815null pointers are now trapped and ignored, matching the behavior of the 1816previous implementation before the deployment of AcpiOsReleaseObject. 1817(Valery Podrezov, Fiodor Suietov) 1818 1819Fixed a memory mapping leak during the deletion of a SystemMemory operation 1820region where a cached memory mapping was not deleted. This became a 1821noticeable problem for operation regions that are defined within frequently 1822used control methods. (Dana Meyers) 1823 1824Reorganized the ACPI table header files into two main files: one for the 1825ACPI tables consumed by the ACPICA core, and another for the miscellaneous 1826ACPI tables that are consumed by the drivers and other software. The various 1827FADT definitions were merged into one common section and three different 1828tables (ACPI 1.0, 1.0+, and 2.0) 1829 1830Example Code and Data Size: These are the sizes for the OS-independent 1831acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1832debug version of the code includes the debug output trace mechanism and has 1833a much larger code and data size. 1834 1835 Previous Release: 1836 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 1837 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 1838 Current Release: 1839 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 1840 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 1841 1842 18432) iASL Compiler/Disassembler and Tools: 1844 1845Disassembler: Implemented support to decode and format all non-AML ACPI 1846tables (tables other than DSDTs and SSDTs.) This includes the new tables 1847added to the ACPICA headers, therefore all current and known ACPI tables are 1848supported. 1849 1850Disassembler: The change to allow ACPI names with invalid characters also 1851enables the disassembly of such tables. Invalid characters within names are 1852changed to '*' to make the name printable; the iASL compiler will still 1853generate an error for such names, however, since this is an invalid ACPI 1854character. 1855 1856Implemented an option for AcpiXtract (-a) to extract all tables found in the 1857input file. The default invocation extracts only the DSDTs and SSDTs. 1858 1859Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 1860makefile for the AcpiXtract utility. 1861 1862---------------------------------------- 186317 March 2006. Summary of changes for version 20060317: 1864 18651) ACPI CA Core Subsystem: 1866 1867Implemented the use of a cache object for all internal namespace nodes. 1868Since there are about 1000 static nodes in a typical system, this will 1869decrease memory use for cache implementations that minimize per-allocation 1870overhead (such as a slab allocator.) 1871 1872Removed the reference count mechanism for internal namespace nodes, since it 1873was deemed unnecessary. This reduces the size of each namespace node by 1874about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case, 1875and 32 bytes for the 64-bit case. 1876 1877Optimized several internal data structures to reduce object size on 64-bit 1878platforms by packing data within the 64-bit alignment. This includes the 1879frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 1880instances corresponding to the namespace objects. 1881 1882Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1" 1883and "Windows 2006". 1884 1885Split the allocation tracking mechanism out to a separate file, from 1886utalloc.c to uttrack.c. This mechanism appears to be only useful for 1887application-level code. Kernels may wish to not include uttrack.c in 1888distributions. 1889 1890Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated 1891code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 1892macros.) 1893 1894Code and Data Size: These are the sizes for the acpica.lib produced by the 1895Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 1896driver or OSPM code. The debug version of the code includes the debug output 1897trace mechanism and has a much larger code and data size. Note that these 1898values will vary depending on the efficiency of the compiler and the 1899compiler options used during generation. 1900 1901 Previous Release: 1902 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 1903 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 1904 Current Release: 1905 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 1906 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 1907 1908 19092) iASL Compiler/Disassembler and Tools: 1910 1911Implemented an ANSI C version of the acpixtract utility. This version will 1912automatically extract the DSDT and all SSDTs from the input acpidump text 1913file and dump the binary output to separate files. It can also display a 1914summary of the input file including the headers for each table found and 1915will extract any single ACPI table, with any signature. (See 1916source/tools/acpixtract) 1917 1918---------------------------------------- 191910 March 2006. Summary of changes for version 20060310: 1920 19211) ACPI CA Core Subsystem: 1922 1923Tagged all external interfaces to the subsystem with the new 1924ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist 1925kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 1926macro. The default definition is NULL. 1927 1928Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId. 1929This allows the host to define this as necessary to simplify kernel 1930integration. The default definition is ACPI_NATIVE_UINT. 1931 1932Fixed two interpreter problems related to error processing, the deletion of 1933objects, and placing invalid pointers onto the internal operator result 1934stack. BZ 6028, 6151 (Valery Podrezov) 1935 1936Increased the reference count threshold where a warning is emitted for large 1937reference counts in order to eliminate unnecessary warnings on systems with 1938large namespaces (especially 64-bit.) Increased the value from 0x400 to 19390x800. 1940 1941Due to universal disagreement as to the meaning of the 'c' in the calloc() 1942function, the ACPI_MEM_CALLOCATE macro has been renamed to 1943ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 1944ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 1945ACPI_FREE. 1946 1947Code and Data Size: These are the sizes for the acpica.lib produced by the 1948Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 1949driver or OSPM code. The debug version of the code includes the debug output 1950trace mechanism and has a much larger code and data size. Note that these 1951values will vary depending on the efficiency of the compiler and the 1952compiler options used during generation. 1953 1954 Previous Release: 1955 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 1956 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 1957 Current Release: 1958 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 1959 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 1960 1961 19622) iASL Compiler/Disassembler: 1963 1964Disassembler: implemented support for symbolic resource descriptor 1965references. If a CreateXxxxField operator references a fixed offset within a 1966resource descriptor, a name is assigned to the descriptor and the offset is 1967translated to the appropriate resource tag and pathname. The addition of 1968this support brings the disassembled code very close to the original ASL 1969source code and helps eliminate run-time errors when the disassembled code 1970is modified (and recompiled) in such a way as to invalidate the original 1971fixed offsets. 1972 1973Implemented support for a Descriptor Name as the last parameter to the ASL 1974Register() macro. This parameter was inadvertently left out of the ACPI 1975specification, and will be added for ACPI 3.0b. 1976 1977Fixed a problem where the use of the "_OSI" string (versus the full path 1978"\_OSI") caused an internal compiler error. ("No back ptr to op") 1979 1980Fixed a problem with the error message that occurs when an invalid string is 1981used for a _HID object (such as one with an embedded asterisk: "*PNP010A".) 1982The correct message is now displayed. 1983 1984---------------------------------------- 198517 February 2006. Summary of changes for version 20060217: 1986 19871) ACPI CA Core Subsystem: 1988 1989Implemented a change to the IndexField support to match the behavior of the 1990Microsoft AML interpreter. The value written to the Index register is now a 1991byte offset, no longer an index based upon the width of the Data register. 1992This should fix IndexField problems seen on some machines where the Data 1993register is not exactly one byte wide. The ACPI specification will be 1994clarified on this point. 1995 1996Fixed a problem where several resource descriptor types could overrun the 1997internal descriptor buffer due to size miscalculation: VendorShort, 1998VendorLong, and Interrupt. This was noticed on IA64 machines, but could 1999affect all platforms. 2000 2001Fixed a problem where individual resource descriptors were misaligned within 2002the internal buffer, causing alignment faults on IA64 platforms. 2003 2004Code and Data Size: These are the sizes for the acpica.lib produced by the 2005Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 2006driver or OSPM code. The debug version of the code includes the debug output 2007trace mechanism and has a much larger code and data size. Note that these 2008values will vary depending on the efficiency of the compiler and the 2009compiler options used during generation. 2010 2011 Previous Release: 2012 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 2013 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 2014 Current Release: 2015 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 2016 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 2017 2018 20192) iASL Compiler/Disassembler: 2020 2021Implemented support for new reserved names: _WDG and _WED are Microsoft 2022extensions for Windows Instrumentation Management, _TDL is a new ACPI- 2023defined method (Throttling Depth Limit.) 2024 2025Fixed a problem where a zero-length VendorShort or VendorLong resource 2026descriptor was incorrectly emitted as a descriptor of length one. 2027 2028---------------------------------------- 202910 February 2006. Summary of changes for version 20060210: 2030 20311) ACPI CA Core Subsystem: 2032 2033Removed a couple of extraneous ACPI_ERROR messages that appeared during 2034normal execution. These became apparent after the conversion from 2035ACPI_DEBUG_PRINT. 2036 2037Fixed a problem where the CreateField operator could hang if the BitIndex or 2038NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 2039 2040Fixed a problem where a DeRefOf operation on a buffer object incorrectly 2041failed with an exception. This also fixes a couple of related RefOf and 2042DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 2043 2044Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of 2045AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ 20465480) 2047 2048Implemented a memory cleanup at the end of the execution of each iteration 2049of an AML While() loop, preventing the accumulation of outstanding objects. 2050(Valery Podrezov, BZ 5427) 2051 2052Eliminated a chunk of duplicate code in the object resolution code. (Valery 2053Podrezov, BZ 5336) 2054 2055Fixed several warnings during the 64-bit code generation. 2056 2057The AcpiSrc source code conversion tool now inserts one line of whitespace 2058after an if() statement that is followed immediately by a comment, improving 2059readability of the Linux code. 2060 2061Code and Data Size: The current and previous library sizes for the core 2062subsystem are shown below. These are the code and data sizes for the 2063acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2064values do not include any ACPI driver or OSPM code. The debug version of the 2065code includes the debug output trace mechanism and has a much larger code 2066and data size. Note that these values will vary depending on the efficiency 2067of the compiler and the compiler options used during generation. 2068 2069 Previous Release: 2070 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 2071 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 2072 Current Release: 2073 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 2074 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 2075 2076 20772) iASL Compiler/Disassembler: 2078 2079Fixed a problem with the disassembly of a BankField operator with a complex 2080expression for the BankValue parameter. 2081 2082---------------------------------------- 208327 January 2006. Summary of changes for version 20060127: 2084 20851) ACPI CA Core Subsystem: 2086 2087Implemented support in the Resource Manager to allow unresolved namestring 2088references within resource package objects for the _PRT method. This support 2089is in addition to the previously implemented unresolved reference support 2090within the AML parser. If the interpreter slack mode is enabled, these 2091unresolved references will be passed through to the caller as a NULL package 2092entry. 2093 2094Implemented and deployed new macros and functions for error and warning 2095messages across the subsystem. These macros are simpler and generate less 2096code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 2097ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 2098macros remain defined to allow ACPI drivers time to migrate to the new 2099macros. 2100 2101Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the 2102Acquire/Release Lock OSL interfaces. 2103 2104Fixed a problem where Alias ASL operators are sometimes not correctly 2105resolved, in both the interpreter and the iASL compiler. 2106 2107Fixed several problems with the implementation of the ConcatenateResTemplate 2108ASL operator. As per the ACPI specification, zero length buffers are now 2109treated as a single EndTag. One-length buffers always cause a fatal 2110exception. Non-zero length buffers that do not end with a full 2-byte EndTag 2111cause a fatal exception. 2112 2113Fixed a possible structure overwrite in the AcpiGetObjectInfo external 2114interface. (With assistance from Thomas Renninger) 2115 2116Code and Data Size: The current and previous library sizes for the core 2117subsystem are shown below. These are the code and data sizes for the 2118acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2119values do not include any ACPI driver or OSPM code. The debug version of the 2120code includes the debug output trace mechanism and has a much larger code 2121and data size. Note that these values will vary depending on the efficiency 2122of the compiler and the compiler options used during generation. 2123 2124 Previous Release: 2125 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 2126 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 2127 Current Release: 2128 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 2129 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 2130 2131 21322) iASL Compiler/Disassembler: 2133 2134Fixed an internal error that was generated for any forward references to ASL 2135Alias objects. 2136 2137---------------------------------------- 213813 January 2006. Summary of changes for version 20060113: 2139 21401) ACPI CA Core Subsystem: 2141 2142Added 2006 copyright to all module headers and signons. This affects 2143virtually every file in the ACPICA core subsystem, iASL compiler, and the 2144utilities. 2145 2146Enhanced the ACPICA error reporting in order to simplify user migration to 2147the non-debug version of ACPICA. Replaced all instances of the 2148ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug 2149levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 2150respectively. This preserves all error and warning messages in the non-debug 2151version of the ACPICA code (this has been referred to as the "debug lite" 2152option.) Over 200 cases were converted to create a total of over 380 2153error/warning messages across the ACPICA code. This increases the code and 2154data size of the default non-debug version of the code somewhat (about 13K), 2155but all error/warning reporting may be disabled if desired (and code 2156eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 2157configuration option. The size of the debug version of ACPICA remains about 2158the same. 2159 2160Fixed a memory leak within the AML Debugger "Set" command. One object was 2161not properly deleted for every successful invocation of the command. 2162 2163Code and Data Size: The current and previous library sizes for the core 2164subsystem are shown below. These are the code and data sizes for the 2165acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2166values do not include any ACPI driver or OSPM code. The debug version of the 2167code includes the debug output trace mechanism and has a much larger code 2168and data size. Note that these values will vary depending on the efficiency 2169of the compiler and the compiler options used during generation. 2170 2171 Previous Release: 2172 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 2173 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 2174 Current Release: 2175 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 2176 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 2177 2178 21792) iASL Compiler/Disassembler: 2180 2181The compiler now officially supports the ACPI 3.0a specification that was 2182released on December 30, 2005. (Specification is available at www.acpi.info) 2183 2184---------------------------------------- 218516 December 2005. Summary of changes for version 20051216: 2186 21871) ACPI CA Core Subsystem: 2188 2189Implemented optional support to allow unresolved names within ASL Package 2190objects. A null object is inserted in the package when a named reference 2191cannot be located in the current namespace. Enabled via the interpreter 2192slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines 2193that contain such code. 2194 2195Implemented an optimization to the initialization sequence that can improve 2196boot time. During ACPI device initialization, the _STA method is now run if 2197and only if the _INI method exists. The _STA method is used to determine if 2198the device is present; An _INI can only be run if _STA returns present, but 2199it is a waste of time to run the _STA method if the _INI does not exist. 2200(Prototype and assistance from Dong Wei) 2201 2202Implemented use of the C99 uintptr_t for the pointer casting macros if it is 2203available in the current compiler. Otherwise, the default (void *) cast is 2204used as before. 2205 2206Fixed some possible memory leaks found within the execution path of the 2207Break, Continue, If, and CreateField operators. (Valery Podrezov) 2208 2209Fixed a problem introduced in the 20051202 release where an exception is 2210generated during method execution if a control method attempts to declare 2211another method. 2212 2213Moved resource descriptor string constants that are used by both the AML 2214disassembler and AML debugger to the common utilities directory so that 2215these components are independent. 2216 2217Implemented support in the AcpiExec utility (-e switch) to globally ignore 2218exceptions during control method execution (method is not aborted.) 2219 2220Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 2221generation. 2222 2223Code and Data Size: The current and previous library sizes for the core 2224subsystem are shown below. These are the code and data sizes for the 2225acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2226values do not include any ACPI driver or OSPM code. The debug version of the 2227code includes the debug output trace mechanism and has a much larger code 2228and data size. Note that these values will vary depending on the efficiency 2229of the compiler and the compiler options used during generation. 2230 2231 Previous Release: 2232 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 2233 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 2234 Current Release: 2235 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 2236 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 2237 2238 22392) iASL Compiler/Disassembler: 2240 2241Fixed a problem where a CPU stack overflow fault could occur if a recursive 2242method call was made from within a Return statement. 2243 2244---------------------------------------- 224502 December 2005. Summary of changes for version 20051202: 2246 22471) ACPI CA Core Subsystem: 2248 2249Modified the parsing of control methods to no longer create namespace 2250objects during the first pass of the parse. Objects are now created only 2251during the execute phase, at the moment the namespace creation operator is 2252encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This 2253should eliminate ALREADY_EXISTS exceptions seen on some machines where 2254reentrant control methods are protected by an AML mutex. The mutex will now 2255correctly block multiple threads from attempting to create the same object 2256more than once. 2257 2258Increased the number of available Owner Ids for namespace object tracking 2259from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on 2260some machines with a large number of ACPI tables (either static or dynamic). 2261 2262Fixed a problem with the AcpiExec utility where a fault could occur when the 2263-b switch (batch mode) is used. 2264 2265Enhanced the namespace dump routine to output the owner ID for each 2266namespace object. 2267 2268Code and Data Size: The current and previous library sizes for the core 2269subsystem are shown below. These are the code and data sizes for the 2270acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2271values do not include any ACPI driver or OSPM code. The debug version of the 2272code includes the debug output trace mechanism and has a much larger code 2273and data size. Note that these values will vary depending on the efficiency 2274of the compiler and the compiler options used during generation. 2275 2276 Previous Release: 2277 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 2278 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 2279 Current Release: 2280 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 2281 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 2282 2283 22842) iASL Compiler/Disassembler: 2285 2286Fixed a parse error during compilation of certain Switch/Case constructs. To 2287simplify the parse, the grammar now allows for multiple Default statements 2288and this error is now detected and flagged during the analysis phase. 2289 2290Disassembler: The disassembly now includes the contents of the original 2291table header within a comment at the start of the file. This includes the 2292name and version of the original ASL compiler. 2293 2294---------------------------------------- 229517 November 2005. Summary of changes for version 20051117: 2296 22971) ACPI CA Core Subsystem: 2298 2299Fixed a problem in the AML parser where the method thread count could be 2300decremented below zero if any errors occurred during the method parse phase. 2301This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines. 2302This also fixed a related regression with the mechanism that detects and 2303corrects methods that cannot properly handle reentrancy (related to the 2304deployment of the new OwnerId mechanism.) 2305 2306Eliminated the pre-parsing of control methods (to detect errors) during 2307table load. Related to the problem above, this was causing unwind issues if 2308any errors occurred during the parse, and it seemed to be overkill. A table 2309load should not be aborted if there are problems with any single control 2310method, thus rendering this feature rather pointless. 2311 2312Fixed a problem with the new table-driven resource manager where an internal 2313buffer overflow could occur for small resource templates. 2314 2315Implemented a new external interface, AcpiGetVendorResource. This interface 2316will find and return a vendor-defined resource descriptor within a _CRS or 2317_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas. 2318 2319Removed the length limit (200) on string objects as per the upcoming ACPI 23203.0A specification. This affects the following areas of the interpreter: 1) 2321any implicit conversion of a Buffer to a String, 2) a String object result 2322of the ASL Concatentate operator, 3) the String object result of the ASL 2323ToString operator. 2324 2325Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER 2326on a semaphore object would incorrectly timeout. This allows the 2327multithreading features of the AcpiExec utility to work properly under 2328Windows. 2329 2330Updated the Linux makefiles for the iASL compiler and AcpiExec to include 2331the recently added file named "utresrc.c". 2332 2333Code and Data Size: The current and previous library sizes for the core 2334subsystem are shown below. These are the code and data sizes for the 2335acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2336values do not include any ACPI driver or OSPM code. The debug version of the 2337code includes the debug output trace mechanism and has a much larger code 2338and data size. Note that these values will vary depending on the efficiency 2339of the compiler and the compiler options used during generation. 2340 2341 Previous Release: 2342 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 2343 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 2344 Current Release: 2345 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 2346 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 2347 2348 23492) iASL Compiler/Disassembler: 2350 2351Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 2352specification. For the iASL compiler, this means that string literals within 2353the source ASL can be of any length. 2354 2355Enhanced the listing output to dump the AML code for resource descriptors 2356immediately after the ASL code for each descriptor, instead of in a block at 2357the end of the entire resource template. 2358 2359Enhanced the compiler debug output to dump the entire original parse tree 2360constructed during the parse phase, before any transforms are applied to the 2361tree. The transformed tree is dumped also. 2362 2363---------------------------------------- 236402 November 2005. Summary of changes for version 20051102: 2365 23661) ACPI CA Core Subsystem: 2367 2368Modified the subsystem initialization sequence to improve GPE support. The 2369GPE initialization has been split into two parts in order to defer execution 2370of the _PRW methods (Power Resources for Wake) until after the hardware is 2371fully initialized and the SCI handler is installed. This allows the _PRW 2372methods to access fields protected by the Global Lock. This will fix systems 2373where a NO_GLOBAL_LOCK exception has been seen during initialization. 2374 2375Converted the ACPI internal object disassemble and display code within the 2376AML debugger to fully table-driven operation, reducing code size and 2377increasing maintainability. 2378 2379Fixed a regression with the ConcatenateResTemplate() ASL operator introduced 2380in the 20051021 release. 2381 2382Implemented support for "local" internal ACPI object types within the 2383debugger "Object" command and the AcpiWalkNamespace external interfaces. 2384These local types include RegionFields, BankFields, IndexFields, Alias, and 2385reference objects. 2386 2387Moved common AML resource handling code into a new file, "utresrc.c". This 2388code is shared by both the Resource Manager and the AML Debugger. 2389 2390Code and Data Size: The current and previous library sizes for the core 2391subsystem are shown below. These are the code and data sizes for the 2392acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2393values do not include any ACPI driver or OSPM code. The debug version of the 2394code includes the debug output trace mechanism and has a much larger code 2395and data size. Note that these values will vary depending on the efficiency 2396of the compiler and the compiler options used during generation. 2397 2398 Previous Release: 2399 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 2400 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 2401 Current Release: 2402 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 2403 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 2404 2405 24062) iASL Compiler/Disassembler: 2407 2408Fixed a problem with very large initializer lists (more than 4000 elements) 2409for both Buffer and Package objects where the parse stack could overflow. 2410 2411Enhanced the pre-compile source code scan for non-ASCII characters to ignore 2412characters within comment fields. The scan is now always performed and is no 2413longer optional, detecting invalid characters within a source file 2414immediately rather than during the parse phase or later. 2415 2416Enhanced the ASL grammar definition to force early reductions on all list- 2417style grammar elements so that the overall parse stack usage is greatly 2418reduced. This should improve performance and reduce the possibility of parse 2419stack overflow. 2420 2421Eliminated all reduce/reduce conflicts in the iASL parser generation. Also, 2422with the addition of a %expected statement, the compiler generates from 2423source with no warnings. 2424 2425Fixed a possible segment fault in the disassembler if the input filename 2426does not contain a "dot" extension (Thomas Renninger). 2427 2428---------------------------------------- 242921 October 2005. Summary of changes for version 20051021: 2430 24311) ACPI CA Core Subsystem: 2432 2433Implemented support for the EM64T and other x86-64 processors. This 2434essentially entails recognizing that these processors support non-aligned 2435memory transfers. Previously, all 64-bit processors were assumed to lack 2436hardware support for non-aligned transfers. 2437 2438Completed conversion of the Resource Manager to nearly full table-driven 2439operation. Specifically, the resource conversion code (convert AML to 2440internal format and the reverse) and the debug code to dump internal 2441resource descriptors are fully table-driven, reducing code and data size and 2442improving maintainability. 2443 2444The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word 2445on 64-bit processors instead of a fixed 32-bit word. (With assistance from 2446Alexey Starikovskiy) 2447 2448Implemented support within the resource conversion code for the Type- 2449Specific byte within the various ACPI 3.0 *WordSpace macros. 2450 2451Fixed some issues within the resource conversion code for the type-specific 2452flags for both Memory and I/O address resource descriptors. For Memory, 2453implemented support for the MTP and TTP flags. For I/O, split the TRS and 2454TTP flags into two separate fields. 2455 2456Code and Data Size: The current and previous library sizes for the core 2457subsystem are shown below. These are the code and data sizes for the 2458acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2459values do not include any ACPI driver or OSPM code. The debug version of the 2460code includes the debug output trace mechanism and has a much larger code 2461and data size. Note that these values will vary depending on the efficiency 2462of the compiler and the compiler options used during generation. 2463 2464 Previous Release: 2465 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 2466 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 2467 Current Release: 2468 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 2469 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 2470 2471 2472 24732) iASL Compiler/Disassembler: 2474 2475Relaxed a compiler restriction that disallowed a ResourceIndex byte if the 2476corresponding ResourceSource string was not also present in a resource 2477descriptor declaration. This restriction caused problems with existing 2478AML/ASL code that includes the Index byte without the string. When such AML 2479was disassembled, it could not be compiled without modification. Further, 2480the modified code created a resource template with a different size than the 2481original, breaking code that used fixed offsets into the resource template 2482buffer. 2483 2484Removed a recent feature of the disassembler to ignore a lone ResourceIndex 2485byte. This byte is now emitted if present so that the exact AML can be 2486reproduced when the disassembled code is recompiled. 2487 2488Improved comments and text alignment for the resource descriptor code 2489emitted by the disassembler. 2490 2491Implemented disassembler support for the ACPI 3.0 AccessSize field within a 2492Register() resource descriptor. 2493 2494---------------------------------------- 249530 September 2005. Summary of changes for version 20050930: 2496 24971) ACPI CA Core Subsystem: 2498 2499Completed a major overhaul of the Resource Manager code - specifically, 2500optimizations in the area of the AML/internal resource conversion code. The 2501code has been optimized to simplify and eliminate duplicated code, CPU stack 2502use has been decreased by optimizing function parameters and local 2503variables, and naming conventions across the manager have been standardized 2504for clarity and ease of maintenance (this includes function, parameter, 2505variable, and struct/typedef names.) The update may force changes in some 2506driver code, depending on how resources are handled by the host OS. 2507 2508All Resource Manager dispatch and information tables have been moved to a 2509single location for clarity and ease of maintenance. One new file was 2510created, named "rsinfo.c". 2511 2512The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 2513guarantee that the argument is not evaluated twice, making them less prone 2514to macro side-effects. However, since there exists the possibility of 2515additional stack use if a particular compiler cannot optimize them (such as 2516in the debug generation case), the original macros are optionally available. 2517Note that some invocations of the return_VALUE macro may now cause size 2518mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to 2519eliminate these. (From Randy Dunlap) 2520 2521Implemented a new mechanism to enable debug tracing for individual control 2522methods. A new external interface, AcpiDebugTrace, is provided to enable 2523this mechanism. The intent is to allow the host OS to easily enable and 2524disable tracing for problematic control methods. This interface can be 2525easily exposed to a user or debugger interface if desired. See the file 2526psxface.c for details. 2527 2528AcpiUtCallocate will now return a valid pointer if a length of zero is 2529specified - a length of one is used and a warning is issued. This matches 2530the behavior of AcpiUtAllocate. 2531 2532Code and Data Size: The current and previous library sizes for the core 2533subsystem are shown below. These are the code and data sizes for the 2534acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2535values do not include any ACPI driver or OSPM code. The debug version of the 2536code includes the debug output trace mechanism and has a much larger code 2537and data size. Note that these values will vary depending on the efficiency 2538of the compiler and the compiler options used during generation. 2539 2540 Previous Release: 2541 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 2542 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 2543 Current Release: 2544 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 2545 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 2546 2547 25482) iASL Compiler/Disassembler: 2549 2550A remark is issued if the effective compile-time length of a package or 2551buffer is zero. Previously, this was a warning. 2552 2553---------------------------------------- 255416 September 2005. Summary of changes for version 20050916: 2555 25561) ACPI CA Core Subsystem: 2557 2558Fixed a problem within the Resource Manager where support for the Generic 2559Register descriptor was not fully implemented. This descriptor is now fully 2560recognized, parsed, disassembled, and displayed. 2561 2562Completely restructured the Resource Manager code to utilize table-driven 2563dispatch and lookup, eliminating many of the large switch() statements. This 2564reduces overall subsystem code size and code complexity. Affects the 2565resource parsing and construction, disassembly, and debug dump output. 2566 2567Cleaned up and restructured the debug dump output for all resource 2568descriptors. Improved readability of the output and reduced code size. 2569 2570Fixed a problem where changes to internal data structures caused the 2571optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 2572 2573Code and Data Size: The current and previous library sizes for the core 2574subsystem are shown below. These are the code and data sizes for the 2575acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2576values do not include any ACPI driver or OSPM code. The debug version of the 2577code includes the debug output trace mechanism and has a much larger code 2578and data size. Note that these values will vary depending on the efficiency 2579of the compiler and the compiler options used during generation. 2580 2581 Previous Release: 2582 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 2583 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 2584 Current Release: 2585 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 2586 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 2587 2588 25892) iASL Compiler/Disassembler: 2590 2591Updated the disassembler to automatically insert an EndDependentFn() macro 2592into the ASL stream if this macro is missing in the original AML code, 2593simplifying compilation of the resulting ASL module. 2594 2595Fixed a problem in the disassembler where a disassembled ResourceSource 2596string (within a large resource descriptor) was not surrounded by quotes and 2597not followed by a comma, causing errors when the resulting ASL module was 2598compiled. Also, escape sequences within a ResourceSource string are now 2599handled correctly (especially "\\") 2600 2601---------------------------------------- 260202 September 2005. Summary of changes for version 20050902: 2603 26041) ACPI CA Core Subsystem: 2605 2606Fixed a problem with the internal Owner ID allocation and deallocation 2607mechanisms for control method execution and recursive method invocation. 2608This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 2609messages seen on some systems. Recursive method invocation depth is 2610currently limited to 255. (Alexey Starikovskiy) 2611 2612Completely eliminated all vestiges of support for the "module-level 2613executable code" until this support is fully implemented and debugged. This 2614should eliminate the NO_RETURN_VALUE exceptions seen during table load on 2615some systems that invoke this support. 2616 2617Fixed a problem within the resource manager code where the transaction flags 2618for a 64-bit address descriptor were handled incorrectly in the type- 2619specific flag byte. 2620 2621Consolidated duplicate code within the address descriptor resource manager 2622code, reducing overall subsystem code size. 2623 2624Fixed a fault when using the AML debugger "disassemble" command to 2625disassemble individual control methods. 2626 2627Removed references to the "release_current" directory within the Unix 2628release package. 2629 2630Code and Data Size: The current and previous core subsystem library sizes 2631are shown below. These are the code and data sizes for the acpica.lib 2632produced by the Microsoft Visual C++ 6.0 compiler. These values do not 2633include any ACPI driver or OSPM code. The debug version of the code includes 2634the debug output trace mechanism and has a much larger code and data size. 2635Note that these values will vary depending on the efficiency of the compiler 2636and the compiler options used during generation. 2637 2638 Previous Release: 2639 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 2640 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 2641 Current Release: 2642 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 2643 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 2644 2645 26462) iASL Compiler/Disassembler: 2647 2648Implemented an error check for illegal duplicate values in the interrupt and 2649dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 2650Interrupt(). 2651 2652Implemented error checking for the Irq() and IrqNoFlags() macros to detect 2653too many values in the interrupt list (16 max) and invalid values in the 2654list (range 0 - 15) 2655 2656The maximum length string literal within an ASL file is now restricted to 2657200 characters as per the ACPI specification. 2658 2659Fixed a fault when using the -ln option (generate namespace listing). 2660 2661Implemented an error check to determine if a DescriptorName within a 2662resource descriptor has already been used within the current scope. 2663 2664---------------------------------------- 266515 August 2005. Summary of changes for version 20050815: 2666 26671) ACPI CA Core Subsystem: 2668 2669Implemented a full bytewise compare to determine if a table load request is 2670attempting to load a duplicate table. The compare is performed if the table 2671signatures and table lengths match. This will allow different tables with 2672the same OEM Table ID and revision to be loaded - probably against the ACPI 2673specification, but discovered in the field nonetheless. 2674 2675Added the changes.txt logfile to each of the zipped release packages. 2676 2677Code and Data Size: Current and previous core subsystem library sizes are 2678shown below. These are the code and data sizes for the acpica.lib produced 2679by the Microsoft Visual C++ 6.0 compiler, and these values do not include 2680any ACPI driver or OSPM code. The debug version of the code includes the 2681debug output trace mechanism and has a much larger code and data size. Note 2682that these values will vary depending on the efficiency of the compiler and 2683the compiler options used during generation. 2684 2685 Previous Release: 2686 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 2687 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 2688 Current Release: 2689 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 2690 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 2691 2692 26932) iASL Compiler/Disassembler: 2694 2695Fixed a problem where incorrect AML code could be generated for Package 2696objects if optimization is disabled (via the -oa switch). 2697 2698Fixed a problem with where incorrect AML code is generated for variable- 2699length packages when the package length is not specified and the number of 2700initializer values is greater than 255. 2701 2702 2703---------------------------------------- 270429 July 2005. Summary of changes for version 20050729: 2705 27061) ACPI CA Core Subsystem: 2707 2708Implemented support to ignore an attempt to install/load a particular ACPI 2709table more than once. Apparently there exists BIOS code that repeatedly 2710attempts to load the same SSDT upon certain events. With assistance from 2711Venkatesh Pallipadi. 2712 2713Restructured the main interface to the AML parser in order to correctly 2714handle all exceptional conditions. This will prevent leakage of the OwnerId 2715resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some 2716machines. With assistance from Alexey Starikovskiy. 2717 2718Support for "module level code" has been disabled in this version due to a 2719number of issues that have appeared on various machines. The support can be 2720enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 2721compilation. When the issues are fully resolved, the code will be enabled by 2722default again. 2723 2724Modified the internal functions for debug print support to define the 2725FunctionName parameter as a (const char *) for compatibility with compiler 2726built-in macros such as __FUNCTION__, etc. 2727 2728Linted the entire ACPICA source tree for both 32-bit and 64-bit. 2729 2730Implemented support to display an object count summary for the AML Debugger 2731commands Object and Methods. 2732 2733Code and Data Size: Current and previous core subsystem library sizes are 2734shown below. These are the code and data sizes for the acpica.lib produced 2735by the Microsoft Visual C++ 6.0 compiler, and these values do not include 2736any ACPI driver or OSPM code. The debug version of the code includes the 2737debug output trace mechanism and has a much larger code and data size. Note 2738that these values will vary depending on the efficiency of the compiler and 2739the compiler options used during generation. 2740 2741 Previous Release: 2742 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 2743 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 2744 Current Release: 2745 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 2746 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 2747 2748 27492) iASL Compiler/Disassembler: 2750 2751Fixed a regression that appeared in the 20050708 version of the compiler 2752where an error message was inadvertently emitted for invocations of the _OSI 2753reserved control method. 2754 2755---------------------------------------- 275608 July 2005. Summary of changes for version 20050708: 2757 27581) ACPI CA Core Subsystem: 2759 2760The use of the CPU stack in the debug version of the subsystem has been 2761considerably reduced. Previously, a debug structure was declared in every 2762function that used the debug macros. This structure has been removed in 2763favor of declaring the individual elements as parameters to the debug 2764functions. This reduces the cumulative stack use during nested execution of 2765ACPI function calls at the cost of a small increase in the code size of the 2766debug version of the subsystem. With assistance from Alexey Starikovskiy and 2767Len Brown. 2768 2769Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 2770headers to define a macro that will return the current function name at 2771runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by 2772the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 2773compiler-dependent header, the function name is saved on the CPU stack (one 2774pointer per function.) This mechanism is used because apparently there 2775exists no standard ANSI-C defined macro that that returns the function name. 2776 2777Redesigned and reimplemented the "Owner ID" mechanism used to track 2778namespace objects created/deleted by ACPI tables and control method 2779execution. A bitmap is now used to allocate and free the IDs, thus solving 2780the wraparound problem present in the previous implementation. The size of 2781the namespace node descriptor was reduced by 2 bytes as a result (Alexey 2782Starikovskiy). 2783 2784Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield 2785flag definitions within the headers for the predefined ACPI tables. These 2786have been replaced by UINT8_BIT in order to increase the code portability of 2787the subsystem. If the use of UINT8 remains a problem, we may be forced to 2788eliminate bitfields entirely because of a lack of portability. 2789 2790Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This 2791is a frequently used function and this improvement increases the performance 2792of the entire subsystem (Alexey Starikovskiy). 2793 2794Fixed several possible memory leaks and the inverse - premature object 2795deletion (Alexey Starikovskiy). 2796 2797Code and Data Size: Current and previous core subsystem library sizes are 2798shown below. These are the code and data sizes for the acpica.lib produced 2799by the Microsoft Visual C++ 6.0 compiler, and these values do not include 2800any ACPI driver or OSPM code. The debug version of the code includes the 2801debug output trace mechanism and has a much larger code and data size. Note 2802that these values will vary depending on the efficiency of the compiler and 2803the compiler options used during generation. 2804 2805 Previous Release: 2806 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 2807 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 2808 Current Release: 2809 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 2810 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 2811 2812---------------------------------------- 281324 June 2005. Summary of changes for version 20050624: 2814 28151) ACPI CA Core Subsystem: 2816 2817Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 2818the host-defined cache object. This allows the OSL implementation to define 2819and type this object in any manner desired, simplifying the OSL 2820implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 2821Linux, and should be defined in the OS-specific header file for other 2822operating systems as required. 2823 2824Changed the interface to AcpiOsAcquireObject to directly return the 2825requested object as the function return (instead of ACPI_STATUS.) This 2826change was made for performance reasons, since this is the purpose of the 2827interface in the first place. AcpiOsAcquireObject is now similar to the 2828AcpiOsAllocate interface. 2829 2830Implemented a new AML debugger command named Businfo. This command displays 2831information about all devices that have an associate _PRT object. The _ADR, 2832_HID, _UID, and _CID are displayed for these devices. 2833 2834Modified the initialization sequence in AcpiInitializeSubsystem to call the 2835OSL interface AcpiOslInitialize first, before any local initialization. This 2836change was required because the global initialization now calls OSL 2837interfaces. 2838 2839Enhanced the Dump command to display the entire contents of Package objects 2840(including all sub-objects and their values.) 2841 2842Restructured the code base to split some files because of size and/or 2843because the code logically belonged in a separate file. New files are listed 2844below. All makefiles and project files included in the ACPI CA release have 2845been updated. 2846 utilities/utcache.c /* Local cache interfaces */ 2847 utilities/utmutex.c /* Local mutex support */ 2848 utilities/utstate.c /* State object support */ 2849 interpreter/parser/psloop.c /* Main AML parse loop */ 2850 2851Code and Data Size: Current and previous core subsystem library sizes are 2852shown below. These are the code and data sizes for the acpica.lib produced 2853by the Microsoft Visual C++ 6.0 compiler, and these values do not include 2854any ACPI driver or OSPM code. The debug version of the code includes the 2855debug output trace mechanism and has a much larger code and data size. Note 2856that these values will vary depending on the efficiency of the compiler and 2857the compiler options used during generation. 2858 2859 Previous Release: 2860 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 2861 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 2862 Current Release: 2863 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 2864 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 2865 2866 28672) iASL Compiler/Disassembler: 2868 2869Fixed a regression introduced in version 20050513 where the use of a Package 2870object within a Case() statement caused a compile time exception. The 2871original behavior has been restored (a Match() operator is emitted.) 2872 2873---------------------------------------- 287417 June 2005. Summary of changes for version 20050617: 2875 28761) ACPI CA Core Subsystem: 2877 2878Moved the object cache operations into the OS interface layer (OSL) to allow 2879the host OS to handle these operations if desired (for example, the Linux 2880OSL will invoke the slab allocator). This support is optional; the compile 2881time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache 2882code in the ACPI CA core. The new OSL interfaces are shown below. See 2883utalloc.c for an example implementation, and acpiosxf.h for the exact 2884interface definitions. With assistance from Alexey Starikovskiy. 2885 AcpiOsCreateCache 2886 AcpiOsDeleteCache 2887 AcpiOsPurgeCache 2888 AcpiOsAcquireObject 2889 AcpiOsReleaseObject 2890 2891Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return 2892and restore a flags parameter. This fits better with many OS lock models. 2893Note: the current execution state (interrupt handler or not) is no longer 2894passed to these interfaces. If necessary, the OSL must determine this state 2895by itself, a simple and fast operation. With assistance from Alexey 2896Starikovskiy. 2897 2898Fixed a problem in the ACPI table handling where a valid XSDT was assumed 2899present if the revision of the RSDP was 2 or greater. According to the ACPI 2900specification, the XSDT is optional in all cases, and the table manager 2901therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 2902Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain 2903only the RSDT. 2904 2905Fixed an interpreter problem with the Mid() operator in the case of an input 2906string where the resulting output string is of zero length. It now correctly 2907returns a valid, null terminated string object instead of a string object 2908with a null pointer. 2909 2910Fixed a problem with the control method argument handling to allow a store 2911to an Arg object that already contains an object of type Device. The Device 2912object is now correctly overwritten. Previously, an error was returned. 2913 2914 2915Enhanced the debugger Find command to emit object values in addition to the 2916found object pathnames. The output format is the same as the dump namespace 2917command. 2918 2919Enhanced the debugger Set command. It now has the ability to set the value 2920of any Named integer object in the namespace (Previously, only method locals 2921and args could be set.) 2922 2923Code and Data Size: Current and previous core subsystem library sizes are 2924shown below. These are the code and data sizes for the acpica.lib produced 2925by the Microsoft Visual C++ 6.0 compiler, and these values do not include 2926any ACPI driver or OSPM code. The debug version of the code includes the 2927debug output trace mechanism and has a much larger code and data size. Note 2928that these values will vary depending on the efficiency of the compiler and 2929the compiler options used during generation. 2930 2931 Previous Release: 2932 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 2933 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 2934 Current Release: 2935 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 2936 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 2937 2938 29392) iASL Compiler/Disassembler: 2940 2941Fixed a regression in the disassembler where if/else/while constructs were 2942output incorrectly. This problem was introduced in the previous release 2943(20050526). This problem also affected the single-step disassembly in the 2944debugger. 2945 2946Fixed a problem where compiling the reserved _OSI method would randomly (but 2947rarely) produce compile errors. 2948 2949Enhanced the disassembler to emit compilable code in the face of incorrect 2950AML resource descriptors. If the optional ResourceSourceIndex is present, 2951but the ResourceSource is not, do not emit the ResourceSourceIndex in the 2952disassembly. Otherwise, the resulting code cannot be compiled without 2953errors. 2954 2955---------------------------------------- 295626 May 2005. Summary of changes for version 20050526: 2957 29581) ACPI CA Core Subsystem: 2959 2960Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 2961the module level (not within a control method.) These opcodes are executed 2962exactly once at the time the table is loaded. This type of code was legal up 2963until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in 2964order to provide backwards compatibility with earlier BIOS implementations. 2965This eliminates the "Encountered executable code at module level" warning 2966that was previously generated upon detection of such code. 2967 2968Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 2969inadvertently be generated during the lookup of namespace objects in the 2970second pass parse of ACPI tables and control methods. It appears that this 2971problem could occur during the resolution of forward references to namespace 2972objects. 2973 2974Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 2975corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 2976allows the deadlock detection debug code to be compiled out in the normal 2977case, improving mutex performance (and overall subsystem performance) 2978considerably. 2979 2980Implemented a handful of miscellaneous fixes for possible memory leaks on 2981error conditions and error handling control paths. These fixes were 2982suggested by FreeBSD and the Coverity Prevent source code analysis tool. 2983 2984Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c) 2985to prevent a fault in this error case. 2986 2987Code and Data Size: Current and previous core subsystem library sizes are 2988shown below. These are the code and data sizes for the acpica.lib produced 2989by the Microsoft Visual C++ 6.0 compiler, and these values do not include 2990any ACPI driver or OSPM code. The debug version of the code includes the 2991debug output trace mechanism and has a much larger code and data size. Note 2992that these values will vary depending on the efficiency of the compiler and 2993the compiler options used during generation. 2994 2995 Previous Release: 2996 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 2997 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 2998 Current Release: 2999 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 3000 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 3001 3002 30032) iASL Compiler/Disassembler: 3004 3005Implemented support to allow Type 1 and Type 2 ASL operators to appear at 3006the module level (not within a control method.) These operators will be 3007executed once at the time the table is loaded. This type of code was legal 3008up until the release of ACPI 2.0B (2002) and is now supported by the iASL 3009compiler in order to provide backwards compatibility with earlier BIOS ASL 3010code. 3011 3012The ACPI integer width (specified via the table revision ID or the -r 3013override, 32 or 64 bits) is now used internally during compile-time constant 3014folding to ensure that constants are truncated to 32 bits if necessary. 3015Previously, the revision ID value was only emitted in the AML table header. 3016 3017An error message is now generated for the Mutex and Method operators if the 3018SyncLevel parameter is outside the legal range of 0 through 15. 3019 3020Fixed a problem with the Method operator ParameterTypes list handling (ACPI 30213.0). Previously, more than 2 types or 2 arguments generated a syntax error. 3022The actual underlying implementation of method argument typechecking is 3023still under development, however. 3024 3025---------------------------------------- 302613 May 2005. Summary of changes for version 20050513: 3027 30281) ACPI CA Core Subsystem: 3029 3030Implemented support for PCI Express root bridges -- added support for device 3031PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 3032 3033The interpreter now automatically truncates incoming 64-bit constants to 32 3034bits if currently executing out of a 32-bit ACPI table (Revision < 2). This 3035also affects the iASL compiler constant folding. (Note: as per below, the 3036iASL compiler no longer allows 64-bit constants within 32-bit tables.) 3037 3038Fixed a problem where string and buffer objects with "static" pointers 3039(pointers to initialization data within an ACPI table) were not handled 3040consistently. The internal object copy operation now always copies the data 3041to a newly allocated buffer, regardless of whether the source object is 3042static or not. 3043 3044Fixed a problem with the FromBCD operator where an implicit result 3045conversion was improperly performed while storing the result to the target 3046operand. Since this is an "explicit conversion" operator, the implicit 3047conversion should never be performed on the output. 3048 3049Fixed a problem with the CopyObject operator where a copy to an existing 3050named object did not always completely overwrite the existing object stored 3051at name. Specifically, a buffer-to-buffer copy did not delete the existing 3052buffer. 3053 3054Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and 3055structs for consistency. 3056 3057Code and Data Size: Current and previous core subsystem library sizes are 3058shown below. These are the code and data sizes for the acpica.lib produced 3059by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3060any ACPI driver or OSPM code. The debug version of the code includes the 3061debug output trace mechanism and has a much larger code and data size. Note 3062that these values will vary depending on the efficiency of the compiler and 3063the compiler options used during generation. 3064 3065 Previous Release: 3066 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 3067 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 3068 Current Release: (Same sizes) 3069 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 3070 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 3071 3072 30732) iASL Compiler/Disassembler: 3074 3075The compiler now emits a warning if an attempt is made to generate a 64-bit 3076integer constant from within a 32-bit ACPI table (Revision < 2). The integer 3077is truncated to 32 bits. 3078 3079Fixed a problem with large package objects: if the static length of the 3080package is greater than 255, the "variable length package" opcode is 3081emitted. Previously, this caused an error. This requires an update to the 3082ACPI spec, since it currently (incorrectly) states that packages larger than 3083255 elements are not allowed. 3084 3085The disassembler now correctly handles variable length packages and packages 3086larger than 255 elements. 3087 3088---------------------------------------- 308908 April 2005. Summary of changes for version 20050408: 3090 30911) ACPI CA Core Subsystem: 3092 3093Fixed three cases in the interpreter where an "index" argument to an ASL 3094function was still (internally) 32 bits instead of the required 64 bits. 3095This was the Index argument to the Index, Mid, and Match operators. 3096 3097The "strupr" function is now permanently local (AcpiUtStrupr), since this is 3098not a POSIX-defined function and not present in most kernel-level C 3099libraries. All references to the C library strupr function have been removed 3100from the headers. 3101 3102Completed the deployment of static functions/prototypes. All prototypes with 3103the static attribute have been moved from the headers to the owning C file. 3104 3105Implemented an extract option (-e) for the AcpiBin utility (AML binary 3106utility). This option allows the utility to extract individual ACPI tables 3107from the output of AcpiDmp. It provides the same functionality of the 3108acpixtract.pl perl script without the worry of setting the correct perl 3109options. AcpiBin runs on Windows and has not yet been generated/validated in 3110the Linux/Unix environment (but should be soon). 3111 3112Updated and fixed the table dump option for AcpiBin (-d). This option 3113converts a single ACPI table to a hex/ascii file, similar to the output of 3114AcpiDmp. 3115 3116Code and Data Size: Current and previous core subsystem library sizes are 3117shown below. These are the code and data sizes for the acpica.lib produced 3118by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3119any ACPI driver or OSPM code. The debug version of the code includes the 3120debug output trace mechanism and has a much larger code and data size. Note 3121that these values will vary depending on the efficiency of the compiler and 3122the compiler options used during generation. 3123 3124 Previous Release: 3125 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 3126 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 3127 Current Release: 3128 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 3129 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 3130 3131 31322) iASL Compiler/Disassembler: 3133 3134Disassembler fix: Added a check to ensure that the table length found in the 3135ACPI table header within the input file is not longer than the actual input 3136file size. This indicates some kind of file or table corruption. 3137 3138---------------------------------------- 313929 March 2005. Summary of changes for version 20050329: 3140 31411) ACPI CA Core Subsystem: 3142 3143An error is now generated if an attempt is made to create a Buffer Field of 3144length zero (A CreateField with a length operand of zero.) 3145 3146The interpreter now issues a warning whenever executable code at the module 3147level is detected during ACPI table load. This will give some idea of the 3148prevalence of this type of code. 3149 3150Implemented support for references to named objects (other than control 3151methods) within package objects. 3152 3153Enhanced package object output for the debug object. Package objects are now 3154completely dumped, showing all elements. 3155 3156Enhanced miscellaneous object output for the debug object. Any object can 3157now be written to the debug object (for example, a device object can be 3158written, and the type of the object will be displayed.) 3159 3160The "static" qualifier has been added to all local functions across both the 3161core subsystem and the iASL compiler. 3162 3163The number of "long" lines (> 80 chars) within the source has been 3164significantly reduced, by about 1/3. 3165 3166Cleaned up all header files to ensure that all CA/iASL functions are 3167prototyped (even static functions) and the formatting is consistent. 3168 3169Two new header files have been added, acopcode.h and acnames.h. 3170 3171Removed several obsolete functions that were no longer used. 3172 3173Code and Data Size: Current and previous core subsystem library sizes are 3174shown below. These are the code and data sizes for the acpica.lib produced 3175by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3176any ACPI driver or OSPM code. The debug version of the code includes the 3177debug output trace mechanism and has a much larger code and data size. Note 3178that these values will vary depending on the efficiency of the compiler and 3179the compiler options used during generation. 3180 3181 Previous Release: 3182 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 3183 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 3184 Current Release: 3185 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 3186 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 3187 3188 3189 31902) iASL Compiler/Disassembler: 3191 3192Fixed a problem with the resource descriptor generation/support. For the 3193ResourceSourceIndex and the ResourceSource fields, both must be present, or 3194both must be not present - can't have one without the other. 3195 3196The compiler now returns non-zero from the main procedure if any errors have 3197occurred during the compilation. 3198 3199 3200---------------------------------------- 320109 March 2005. Summary of changes for version 20050309: 3202 32031) ACPI CA Core Subsystem: 3204 3205The string-to-buffer implicit conversion code has been modified again after 3206a change to the ACPI specification. In order to match the behavior of the 3207other major ACPI implementation, the target buffer is no longer truncated if 3208the source string is smaller than an existing target buffer. This change 3209requires an update to the ACPI spec, and should eliminate the recent 3210AE_AML_BUFFER_LIMIT issues. 3211 3212The "implicit return" support was rewritten to a new algorithm that solves 3213the general case. Rather than attempt to determine when a method is about to 3214exit, the result of every ASL operator is saved momentarily until the very 3215next ASL operator is executed. Therefore, no matter how the method exits, 3216there will always be a saved implicit return value. This feature is only 3217enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate 3218AE_AML_NO_RETURN_VALUE errors when enabled. 3219 3220Implemented implicit conversion support for the predicate (operand) of the 3221If, Else, and While operators. String and Buffer arguments are automatically 3222converted to Integers. 3223 3224Changed the string-to-integer conversion behavior to match the new ACPI 3225errata: "If no integer object exists, a new integer is created. The ASCII 3226string is interpreted as a hexadecimal constant. Each string character is 3227interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 3228with the first character as the most significant digit, and ending with the 3229first non-hexadecimal character or end-of-string." This means that the first 3230non-hex character terminates the conversion and this is the code that was 3231changed. 3232 3233Fixed a problem where the ObjectType operator would fail (fault) when used 3234on an Index of a Package which pointed to a null package element. The 3235operator now properly returns zero (Uninitialized) in this case. 3236 3237Fixed a problem where the While operator used excessive memory by not 3238properly popping the result stack during execution. There was no memory leak 3239after execution, however. (Code provided by Valery Podrezov.) 3240 3241Fixed a problem where references to control methods within Package objects 3242caused the method to be invoked, instead of producing a reference object 3243pointing to the method. 3244 3245Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to 3246improve performance and reduce code size. (Code provided by Alexey 3247Starikovskiy.) 3248 3249Code and Data Size: Current and previous core subsystem library sizes are 3250shown below. These are the code and data sizes for the acpica.lib produced 3251by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3252any ACPI driver or OSPM code. The debug version of the code includes the 3253debug output trace mechanism and has a much larger code and data size. Note 3254that these values will vary depending on the efficiency of the compiler and 3255the compiler options used during generation. 3256 3257 Previous Release: 3258 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 3259 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 3260 Current Release: 3261 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 3262 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 3263 3264 32652) iASL Compiler/Disassembler: 3266 3267Fixed a problem with the Return operator with no arguments. Since the AML 3268grammar for the byte encoding requires an operand for the Return opcode, the 3269compiler now emits a Return(Zero) for this case. An ACPI specification 3270update has been written for this case. 3271 3272For tables other than the DSDT, namepath optimization is automatically 3273disabled. This is because SSDTs can be loaded anywhere in the namespace, the 3274compiler has no knowledge of where, and thus cannot optimize namepaths. 3275 3276Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 3277inadvertently omitted from the ACPI specification, and will require an 3278update to the spec. 3279 3280The source file scan for ASCII characters is now optional (-a). This change 3281was made because some vendors place non-ascii characters within comments. 3282However, the scan is simply a brute-force byte compare to ensure all 3283characters in the file are in the range 0x00 to 0x7F. 3284 3285Fixed a problem with the CondRefOf operator where the compiler was 3286inappropriately checking for the existence of the target. Since the point of 3287the operator is to check for the existence of the target at run-time, the 3288compiler no longer checks for the target existence. 3289 3290Fixed a problem where errors generated from the internal AML interpreter 3291during constant folding were not handled properly, causing a fault. 3292 3293Fixed a problem with overly aggressive range checking for the Stall 3294operator. The valid range (max 255) is now only checked if the operand is of 3295type Integer. All other operand types cannot be statically checked. 3296 3297Fixed a problem where control method references within the RefOf, DeRefOf, 3298and ObjectType operators were not treated properly. They are now treated as 3299actual references, not method invocations. 3300 3301Fixed and enhanced the "list namespace" option (-ln). This option was broken 3302a number of releases ago. 3303 3304Improved error handling for the Field, IndexField, and BankField operators. 3305The compiler now cleanly reports and recovers from errors in the field 3306component (FieldUnit) list. 3307 3308Fixed a disassembler problem where the optional ResourceDescriptor fields 3309TRS and TTP were not always handled correctly. 3310 3311Disassembler - Comments in output now use "//" instead of "/*" 3312 3313---------------------------------------- 331428 February 2005. Summary of changes for version 20050228: 3315 33161) ACPI CA Core Subsystem: 3317 3318Fixed a problem where the result of an Index() operator (an object 3319reference) must increment the reference count on the target object for the 3320life of the object reference. 3321 3322Implemented AML Interpreter and Debugger support for the new ACPI 3.0 3323Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace 3324resource descriptors. 3325 3326Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 3327Space Descriptor" string, indicating interpreter support for the descriptors 3328above. 3329 3330Implemented header support for the new ACPI 3.0 FADT flag bits. 3331 3332Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1 3333status/enable registers. 3334 3335Updated header support for the MADT processor local Apic struct and MADT 3336platform interrupt source struct for new ACPI 3.0 fields. 3337 3338Implemented header support for the SRAT and SLIT ACPI tables. 3339 3340Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag 3341at runtime. 3342 3343Code and Data Size: Current and previous core subsystem library sizes are 3344shown below. These are the code and data sizes for the acpica.lib produced 3345by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3346any ACPI driver or OSPM code. The debug version of the code includes the 3347debug output trace mechanism and has a much larger code and data size. Note 3348that these values will vary depending on the efficiency of the compiler and 3349the compiler options used during generation. 3350 3351 Previous Release: 3352 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 3353 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 3354 Current Release: 3355 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 3356 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 3357 3358 33592) iASL Compiler/Disassembler: 3360 3361Fixed a problem with the internal 64-bit String-to-integer conversion with 3362strings less than two characters long. 3363 3364Fixed a problem with constant folding where the result of the Index() 3365operator can not be considered a constant. This means that Index() cannot be 3366a type3 opcode and this will require an update to the ACPI specification. 3367 3368Disassembler: Implemented support for the TTP, MTP, and TRS resource 3369descriptor fields. These fields were inadvertently ignored and not output in 3370the disassembly of the resource descriptor. 3371 3372 3373 ---------------------------------------- 337411 February 2005. Summary of changes for version 20050211: 3375 33761) ACPI CA Core Subsystem: 3377 3378Implemented ACPI 3.0 support for implicit conversion within the Match() 3379operator. MatchObjects can now be of type integer, buffer, or string instead 3380of just type integer. Package elements are implicitly converted to the type 3381of the MatchObject. This change aligns the behavior of Match() with the 3382behavior of the other logical operators (LLess(), etc.) It also requires an 3383errata change to the ACPI specification as this support was intended for 3384ACPI 3.0, but was inadvertently omitted. 3385 3386Fixed a problem with the internal implicit "to buffer" conversion. Strings 3387that are converted to buffers will cause buffer truncation if the string is 3388smaller than the target buffer. Integers that are converted to buffers will 3389not cause buffer truncation, only zero extension (both as per the ACPI 3390spec.) The problem was introduced when code was added to truncate the 3391buffer, but this should not be performed in all cases, only the string case. 3392 3393Fixed a problem with the Buffer and Package operators where the interpreter 3394would get confused if two such operators were used as operands to an ASL 3395operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 3396stack was not being popped after the execution of these operators, resulting 3397in an AE_NO_RETURN_VALUE exception. 3398 3399Fixed a problem with constructs of the form Store(Index(...),...). The 3400reference object returned from Index was inadvertently resolved to an actual 3401value. This problem was introduced in version 20050114 when the behavior of 3402Store() was modified to restrict the object types that can be used as the 3403source operand (to match the ACPI specification.) 3404 3405Reduced excessive stack use within the AcpiGetObjectInfo procedure. 3406 3407Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 3408 3409Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 3410 3411Code and Data Size: Current and previous core subsystem library sizes are 3412shown below. These are the code and data sizes for the acpica.lib produced 3413by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3414any ACPI driver or OSPM code. The debug version of the code includes the 3415debug output trace mechanism and has a much larger code and data size. Note 3416that these values will vary depending on the efficiency of the compiler and 3417the compiler options used during generation. 3418 3419 Previous Release: 3420 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 3421 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 3422 Current Release: 3423 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 3424 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 3425 3426 34272) iASL Compiler/Disassembler: 3428 3429Fixed a code generation problem in the constant folding optimization code 3430where incorrect code was generated if a constant was reduced to a buffer 3431object (i.e., a reduced type 5 opcode.) 3432 3433Fixed a typechecking problem for the ToBuffer operator. Caused by an 3434incorrect return type in the internal opcode information table. 3435 3436---------------------------------------- 343725 January 2005. Summary of changes for version 20050125: 3438 34391) ACPI CA Core Subsystem: 3440 3441Fixed a recently introduced problem with the Global Lock where the 3442underlying semaphore was not created. This problem was introduced in 3443version 20050114, and caused an AE_AML_NO_OPERAND exception during an 3444Acquire() operation on _GL. 3445 3446The local object cache is now optional, and is disabled by default. Both 3447AcpiExec and the iASL compiler enable the cache because they run in user 3448mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE 3449to enable the local cache. 3450 3451Fixed an issue in the internal function AcpiUtEvaluateObject concerning the 3452optional "implicit return" support where an error was returned if no return 3453object was expected, but one was implicitly returned. AE_OK is now returned 3454in this case and the implicitly returned object is deleted. 3455AcpiUtEvaluateObject is only occasionally used, and only to execute reserved 3456methods such as _STA and _INI where the return type is known up front. 3457 3458Fixed a few issues with the internal convert-to-integer code. It now returns 3459an error if an attempt is made to convert a null string, a string of only 3460blanks/tabs, or a zero-length buffer. This affects both implicit conversion 3461and explicit conversion via the ToInteger() operator. 3462 3463The internal debug code in AcpiUtAcquireMutex has been commented out. It is 3464not needed for normal operation and should increase the performance of the 3465entire subsystem. The code remains in case it is needed for debug purposes 3466again. 3467 3468The AcpiExec source and makefile are included in the Unix/Linux package for 3469the first time. 3470 3471Code and Data Size: Current and previous core subsystem library sizes are 3472shown below. These are the code and data sizes for the acpica.lib produced 3473by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3474any ACPI driver or OSPM code. The debug version of the code includes the 3475debug output trace mechanism and has a much larger code and data size. Note 3476that these values will vary depending on the efficiency of the compiler and 3477the compiler options used during generation. 3478 3479 Previous Release: 3480 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 3481 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 3482 Current Release: 3483 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 3484 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 3485 34862) iASL Compiler/Disassembler: 3487 3488Switch/Case support: A warning is now issued if the type of the Switch value 3489cannot be determined at compile time. For example, Switch(Arg0) will 3490generate the warning, and the type is assumed to be an integer. As per the 3491ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the 3492warning. 3493 3494Switch/Case support: Implemented support for buffer and string objects as 3495the switch value. This is an ACPI 3.0 feature, now that LEqual supports 3496buffers and strings. 3497 3498Switch/Case support: The emitted code for the LEqual() comparisons now uses 3499the switch value as the first operand, not the second. The case value is now 3500the second operand, and this allows the case value to be implicitly 3501converted to the type of the switch value, not the other way around. 3502 3503Switch/Case support: Temporary variables are now emitted immediately within 3504the control method, not at the global level. This means that there are now 350536 temps available per-method, not 36 temps per-module as was the case with 3506the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 3507 3508---------------------------------------- 350914 January 2005. Summary of changes for version 20050114: 3510 3511Added 2005 copyright to all module headers. This affects every module in 3512the core subsystem, iASL compiler, and the utilities. 3513 35141) ACPI CA Core Subsystem: 3515 3516Fixed an issue with the String-to-Buffer conversion code where the string 3517null terminator was not included in the buffer after conversion, but there 3518is existing ASL that assumes the string null terminator is included. This is 3519the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 3520introduced in the previous version when the code was updated to correctly 3521set the converted buffer size as per the ACPI specification. The ACPI spec 3522is ambiguous and will be updated to specify that the null terminator must be 3523included in the converted buffer. This also affects the ToBuffer() ASL 3524operator. 3525 3526Fixed a problem with the Mid() ASL/AML operator where it did not work 3527correctly on Buffer objects. Newly created sub-buffers were not being marked 3528as initialized. 3529 3530 3531Fixed a problem in AcpiTbFindTable where incorrect string compares were 3532performed on the OemId and OemTableId table header fields. These fields are 3533not null terminated, so strncmp is now used instead of strcmp. 3534 3535Implemented a restriction on the Store() ASL/AML operator to align the 3536behavior with the ACPI specification. Previously, any object could be used 3537as the source operand. Now, the only objects that may be used are Integers, 3538Buffers, Strings, Packages, Object References, and DDB Handles. If 3539necessary, the original behavior can be restored by enabling the 3540EnableInterpreterSlack flag. 3541 3542Enhanced the optional "implicit return" support to allow an implicit return 3543value from methods that are invoked externally via the AcpiEvaluateObject 3544interface. This enables implicit returns from the _STA and _INI methods, 3545for example. 3546 3547Changed the Revision() ASL/AML operator to return the current version of the 3548AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned 3549the supported ACPI version (This is the function of the _REV method). 3550 3551Updated the _REV predefined method to return the currently supported version 3552of ACPI, now 3. 3553 3554Implemented batch mode option for the AcpiExec utility (-b). 3555 3556Code and Data Size: Current and previous core subsystem library sizes are 3557shown below. These are the code and data sizes for the acpica.lib produced 3558by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3559any ACPI driver or OSPM code. The debug version of the code includes the 3560debug output trace mechanism and has a much larger code and data size. Note 3561that these values will vary depending on the efficiency of the compiler and 3562the compiler options used during generation. 3563 3564 Previous Release: 3565 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 3566 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 3567 Current Release: 3568 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 3569 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 3570 3571---------------------------------------- 357210 December 2004. Summary of changes for version 20041210: 3573 3574ACPI 3.0 support is nearing completion in both the iASL compiler and the 3575ACPI CA core subsystem. 3576 35771) ACPI CA Core Subsystem: 3578 3579Fixed a problem in the ToDecimalString operator where the resulting string 3580length was incorrectly calculated. The length is now calculated exactly, 3581eliminating incorrect AE_STRING_LIMIT exceptions. 3582 3583Fixed a problem in the ToHexString operator to allow a maximum 200 character 3584string to be produced. 3585 3586Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy 3587routine where the length of the resulting buffer was not truncated to the 3588new size (if the target buffer already existed). 3589 3590Code and Data Size: Current and previous core subsystem library sizes are 3591shown below. These are the code and data sizes for the acpica.lib produced 3592by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3593any ACPI driver or OSPM code. The debug version of the code includes the 3594debug output trace mechanism and has a much larger code and data size. Note 3595that these values will vary depending on the efficiency of the compiler and 3596the compiler options used during generation. 3597 3598 Previous Release: 3599 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 3600 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 3601 Current Release: 3602 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 3603 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 3604 3605 36062) iASL Compiler/Disassembler: 3607 3608Implemented the new ACPI 3.0 resource template macros - DWordSpace, 3609ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 3610Includes support in the disassembler. 3611 3612Implemented support for the new (ACPI 3.0) parameter to the Register macro, 3613AccessSize. 3614 3615Fixed a problem where the _HE resource name for the Interrupt macro was 3616referencing bit 0 instead of bit 1. 3617 3618Implemented check for maximum 255 interrupts in the Interrupt macro. 3619 3620Fixed a problem with the predefined resource descriptor names where 3621incorrect AML code was generated if the offset within the resource buffer 3622was 0 or 1. The optimizer shortened the AML code to a single byte opcode 3623but did not update the surrounding package lengths. 3624 3625Changes to the Dma macro: All channels within the channel list must be in 3626the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 3627optional (default is BusMaster). 3628 3629Implemented check for maximum 7 data bytes for the VendorShort macro. 3630 3631The ReadWrite parameter is now optional for the Memory32 and similar macros. 3632 3633---------------------------------------- 363403 December 2004. Summary of changes for version 20041203: 3635 36361) ACPI CA Core Subsystem: 3637 3638The low-level field insertion/extraction code (exfldio) has been completely 3639rewritten to eliminate unnecessary complexity, bugs, and boundary 3640conditions. 3641 3642Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString 3643operators where the input operand could be inadvertently deleted if no 3644conversion was necessary (e.g., if the input to ToInteger was an Integer 3645object.) 3646 3647Fixed a problem with the ToDecimalString and ToHexString where an incorrect 3648exception code was returned if the resulting string would be > 200 chars. 3649AE_STRING_LIMIT is now returned. 3650 3651Fixed a problem with the Concatenate operator where AE_OK was always 3652returned, even if the operation failed. 3653 3654Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 3655semaphores to be allocated. 3656 3657Code and Data Size: Current and previous core subsystem library sizes are 3658shown below. These are the code and data sizes for the acpica.lib produced 3659by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3660any ACPI driver or OSPM code. The debug version of the code includes the 3661debug output trace mechanism and has a much larger code and data size. Note 3662that these values will vary depending on the efficiency of the compiler and 3663the compiler options used during generation. 3664 3665 Previous Release: 3666 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 3667 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 3668 Current Release: 3669 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 3670 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 3671 3672 36732) iASL Compiler/Disassembler: 3674 3675Fixed typechecking for the ObjectType and SizeOf operators. Problem was 3676recently introduced in 20041119. 3677 3678Fixed a problem with the ToUUID macro where the upper nybble of each buffer 3679byte was inadvertently set to zero. 3680 3681---------------------------------------- 368219 November 2004. Summary of changes for version 20041119: 3683 36841) ACPI CA Core Subsystem: 3685 3686Fixed a problem in the internal ConvertToInteger routine where new integers 3687were not truncated to 32 bits for 32-bit ACPI tables. This routine converts 3688buffers and strings to integers. 3689 3690Implemented support to store a value to an Index() on a String object. This 3691is an ACPI 2.0 feature that had not yet been implemented. 3692 3693Implemented new behavior for storing objects to individual package elements 3694(via the Index() operator). The previous behavior was to invoke the implicit 3695conversion rules if an object was already present at the index. The new 3696behavior is to simply delete any existing object and directly store the new 3697object. Although the ACPI specification seems unclear on this subject, other 3698ACPI implementations behave in this manner. (This is the root of the 3699AE_BAD_HEX_CONSTANT issue.) 3700 3701Modified the RSDP memory scan mechanism to support the extended checksum for 3702ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 3703RSDP signature is found with a valid checksum. 3704 3705Code and Data Size: Current and previous core subsystem library sizes are 3706shown below. These are the code and data sizes for the acpica.lib produced 3707by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3708any ACPI driver or OSPM code. The debug version of the code includes the 3709debug output trace mechanism and has a much larger code and data size. Note 3710that these values will vary depending on the efficiency of the compiler and 3711the compiler options used during generation. 3712 3713 Previous Release: 3714 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 3715 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 3716 Current Release: 3717 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 3718 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 3719 3720 37212) iASL Compiler/Disassembler: 3722 3723Fixed a missing semicolon in the aslcompiler.y file. 3724 3725---------------------------------------- 372605 November 2004. Summary of changes for version 20041105: 3727 37281) ACPI CA Core Subsystem: 3729 3730Implemented support for FADT revision 2. This was an interim table (between 3731ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 3732 3733Implemented optional support to allow uninitialized LocalX and ArgX 3734variables in a control method. The variables are initialized to an Integer 3735object with a value of zero. This support is enabled by setting the 3736AcpiGbl_EnableInterpreterSlack flag to TRUE. 3737 3738Implemented support for Integer objects for the SizeOf operator. Either 4 3739or 8 is returned, depending on the current integer size (32-bit or 64-bit, 3740depending on the parent table revision). 3741 3742Fixed a problem in the implementation of the SizeOf and ObjectType operators 3743where the operand was resolved to a value too early, causing incorrect 3744return values for some objects. 3745 3746Fixed some possible memory leaks during exceptional conditions. 3747 3748Code and Data Size: Current and previous core subsystem library sizes are 3749shown below. These are the code and data sizes for the acpica.lib produced 3750by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3751any ACPI driver or OSPM code. The debug version of the code includes the 3752debug output trace mechanism and has a much larger code and data size. Note 3753that these values will vary depending on the efficiency of the compiler and 3754the compiler options used during generation. 3755 3756 Previous Release: 3757 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 3758 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 3759 Current Release: 3760 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 3761 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 3762 3763 37642) iASL Compiler/Disassembler: 3765 3766Implemented support for all ACPI 3.0 reserved names and methods. 3767 3768Implemented all ACPI 3.0 grammar elements in the front-end, including 3769support for semicolons. 3770 3771Implemented the ACPI 3.0 Function() and ToUUID() macros 3772 3773Fixed a problem in the disassembler where a Scope() operator would not be 3774emitted properly if the target of the scope was in another table. 3775 3776---------------------------------------- 377715 October 2004. Summary of changes for version 20041015: 3778 3779Note: ACPI CA is currently undergoing an in-depth and complete formal 3780evaluation to test/verify the following areas. Other suggestions are 3781welcome. This will result in an increase in the frequency of releases and 3782the number of bug fixes in the next few months. 3783 - Functional tests for all ASL/AML operators 3784 - All implicit/explicit type conversions 3785 - Bit fields and operation regions 3786 - 64-bit math support and 32-bit-only "truncated" math support 3787 - Exceptional conditions, both compiler and interpreter 3788 - Dynamic object deletion and memory leaks 3789 - ACPI 3.0 support when implemented 3790 - External interfaces to the ACPI subsystem 3791 3792 37931) ACPI CA Core Subsystem: 3794 3795Fixed two alignment issues on 64-bit platforms - within debug statements in 3796AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address 3797field within the non-aligned ACPI generic address structure. 3798 3799Fixed a problem in the Increment and Decrement operators where incorrect 3800operand resolution could result in the inadvertent modification of the 3801original integer when the integer is passed into another method as an 3802argument and the arg is then incremented/decremented. 3803 3804Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit 3805BCD number were truncated during conversion. 3806 3807Fixed a problem in the ToDecimal operator where the length of the resulting 3808string could be set incorrectly too long if the input operand was a Buffer 3809object. 3810 3811Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0) 3812within a buffer would prematurely terminate a compare between buffer 3813objects. 3814 3815Added a check for string overflow (>200 characters as per the ACPI 3816specification) during the Concatenate operator with two string operands. 3817 3818Code and Data Size: Current and previous core subsystem library sizes are 3819shown below. These are the code and data sizes for the acpica.lib produced 3820by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3821any ACPI driver or OSPM code. The debug version of the code includes the 3822debug output trace mechanism and has a much larger code and data size. Note 3823that these values will vary depending on the efficiency of the compiler and 3824the compiler options used during generation. 3825 3826 Previous Release: 3827 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 3828 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 3829 Current Release: 3830 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 3831 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 3832 3833 3834 38352) iASL Compiler/Disassembler: 3836 3837Allow the use of the ObjectType operator on uninitialized Locals and Args 3838(returns 0 as per the ACPI specification). 3839 3840Fixed a problem where the compiler would fault if there was a syntax error 3841in the FieldName of all of the various CreateXXXField operators. 3842 3843Disallow the use of lower case letters within the EISAID macro, as per the 3844ACPI specification. All EISAID strings must be of the form "UUUNNNN" Where 3845U is an uppercase letter and N is a hex digit. 3846 3847 3848---------------------------------------- 384906 October 2004. Summary of changes for version 20041006: 3850 38511) ACPI CA Core Subsystem: 3852 3853Implemented support for the ACPI 3.0 Timer operator. This ASL function 3854implements a 64-bit timer with 100 nanosecond granularity. 3855 3856Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 3857implement the ACPI 3.0 Timer operator. This allows the host OS to implement 3858the timer with the best clock available. Also, it keeps the core subsystem 3859out of the clock handling business, since the host OS (usually) performs 3860this function. 3861 3862Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 3863functions use a 64-bit address which is part of the packed ACPI Generic 3864Address Structure. Since the structure is non-aligned, the alignment macros 3865are now used to extract the address to a local variable before use. 3866 3867Fixed a problem where the ToInteger operator assumed all input strings were 3868hexadecimal. The operator now handles both decimal strings and hex strings 3869(prefixed with "0x"). 3870 3871Fixed a problem where the string length in the string object created as a 3872result of the internal ConvertToString procedure could be incorrect. This 3873potentially affected all implicit conversions and also the ToDecimalString 3874and ToHexString operators. 3875 3876Fixed two problems in the ToString operator. If the length parameter was 3877zero, an incorrect string object was created and the value of the input 3878length parameter was inadvertently changed from zero to Ones. 3879 3880Fixed a problem where the optional ResourceSource string in the ExtendedIRQ 3881resource macro was ignored. 3882 3883Simplified the interfaces to the internal division functions, reducing code 3884size and complexity. 3885 3886Code and Data Size: Current and previous core subsystem library sizes are 3887shown below. These are the code and data sizes for the acpica.lib produced 3888by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3889any ACPI driver or OSPM code. The debug version of the code includes the 3890debug output trace mechanism and has a much larger code and data size. Note 3891that these values will vary depending on the efficiency of the compiler and 3892the compiler options used during generation. 3893 3894 Previous Release: 3895 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 3896 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 3897 Current Release: 3898 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 3899 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 3900 3901 39022) iASL Compiler/Disassembler: 3903 3904Implemented support for the ACPI 3.0 Timer operator. 3905 3906Fixed a problem where the Default() operator was inadvertently ignored in a 3907Switch/Case block. This was a problem in the translation of the Switch 3908statement to If...Else pairs. 3909 3910Added support to allow a standalone Return operator, with no parentheses (or 3911operands). 3912 3913Fixed a problem with code generation for the ElseIf operator where the 3914translated Else...If parse tree was improperly constructed leading to the 3915loss of some code. 3916 3917---------------------------------------- 391822 September 2004. Summary of changes for version 20040922: 3919 39201) ACPI CA Core Subsystem: 3921 3922Fixed a problem with the implementation of the LNot() operator where "Ones" 3923was not returned for the TRUE case. Changed the code to return Ones instead 3924of (!Arg) which was usually 1. This change affects iASL constant folding for 3925this operator also. 3926 3927Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not 3928initialized properly -- Now zero the entire buffer in this case where the 3929buffer already exists. 3930 3931Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 3932Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 3933related code considerably. This will require changes/updates to all OS 3934interface layers (OSLs.) 3935 3936Implemented a new external interface, AcpiInstallExceptionHandler, to allow 3937a system exception handler to be installed. This handler is invoked upon any 3938run-time exception that occurs during control method execution. 3939 3940Added support for the DSDT in AcpiTbFindTable. This allows the 3941DataTableRegion() operator to access the local copy of the DSDT. 3942 3943Code and Data Size: Current and previous core subsystem library sizes are 3944shown below. These are the code and data sizes for the acpica.lib produced 3945by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3946any ACPI driver or OSPM code. The debug version of the code includes the 3947debug output trace mechanism and has a much larger code and data size. Note 3948that these values will vary depending on the efficiency of the compiler and 3949the compiler options used during generation. 3950 3951 Previous Release: 3952 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 3953 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 3954 Current Release: 3955 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 3956 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 3957 3958 39592) iASL Compiler/Disassembler: 3960 3961Fixed a problem with constant folding and the LNot operator. LNot was 3962returning 1 in the TRUE case, not Ones as per the ACPI specification. This 3963could result in the generation of an incorrect folded/reduced constant. 3964 3965End-Of-File is now allowed within a "//"-style comment. A parse error no 3966longer occurs if such a comment is at the very end of the input ASL source 3967file. 3968 3969Implemented the "-r" option to override the Revision in the table header. 3970The initial use of this option will be to simplify the evaluation of the AML 3971interpreter by allowing a single ASL source module to be compiled for either 397232-bit or 64-bit integers. 3973 3974 3975---------------------------------------- 397627 August 2004. Summary of changes for version 20040827: 3977 39781) ACPI CA Core Subsystem: 3979 3980- Implemented support for implicit object conversion in the non-numeric 3981logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and 3982LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 3983the second operand is implicitly converted on the fly to match the type of 3984the first operand. For example: 3985 3986 LEqual (Source1, Source2) 3987 3988Source1 and Source2 must each evaluate to an integer, a string, or a buffer. 3989The data type of Source1 dictates the required type of Source2. Source2 is 3990implicitly converted if necessary to match the type of Source1. 3991 3992- Updated and corrected the behavior of the string conversion support. The 3993rules concerning conversion of buffers to strings (according to the ACPI 3994specification) are as follows: 3995 3996ToDecimalString - explicit byte-wise conversion of buffer to string of 3997decimal values (0-255) separated by commas. ToHexString - explicit byte-wise 3998conversion of buffer to string of hex values (0-FF) separated by commas. 3999ToString - explicit byte-wise conversion of buffer to string. Byte-by-byte 4000copy with no transform except NULL terminated. Any other implicit buffer-to- 4001string conversion - byte-wise conversion of buffer to string of hex values 4002(0-FF) separated by spaces. 4003 4004- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 4005 4006- Fixed a problem in AcpiNsGetPathnameLength where the returned length was 4007one byte too short in the case of a node in the root scope. This could 4008cause a fault during debug output. 4009 4010- Code and Data Size: Current and previous core subsystem library sizes are 4011shown below. These are the code and data sizes for the acpica.lib produced 4012by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4013any ACPI driver or OSPM code. The debug version of the code includes the 4014debug output trace mechanism and has a much larger code and data size. Note 4015that these values will vary depending on the efficiency of the compiler and 4016the compiler options used during generation. 4017 4018 Previous Release: 4019 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 4020 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 4021 Current Release: 4022 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 4023 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 4024 4025 40262) iASL Compiler/Disassembler: 4027 4028- Fixed a Linux generation error. 4029 4030 4031---------------------------------------- 403216 August 2004. Summary of changes for version 20040816: 4033 40341) ACPI CA Core Subsystem: 4035 4036Designed and implemented support within the AML interpreter for the so- 4037called "implicit return". This support returns the result of the last ASL 4038operation within a control method, in the absence of an explicit Return() 4039operator. A few machines depend on this behavior, even though it is not 4040explicitly supported by the ASL language. It is optional support that can 4041be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 4042 4043Removed support for the PCI_Config address space from the internal low level 4044hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 4045support was not used internally, and would not work correctly anyway because 4046the PCI bus number and segment number were not supported. There are 4047separate interfaces for PCI configuration space access because of the unique 4048interface. 4049 4050Code and Data Size: Current and previous core subsystem library sizes are 4051shown below. These are the code and data sizes for the acpica.lib produced 4052by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4053any ACPI driver or OSPM code. The debug version of the code includes the 4054debug output trace mechanism and has a much larger code and data size. Note 4055that these values will vary depending on the efficiency of the compiler and 4056the compiler options used during generation. 4057 4058 Previous Release: 4059 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 4060 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 4061 Current Release: 4062 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 4063 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 4064 4065 40662) iASL Compiler/Disassembler: 4067 4068Fixed a problem where constants in ASL expressions at the root level (not 4069within a control method) could be inadvertently truncated during code 4070generation. This problem was introduced in the 20040715 release. 4071 4072 4073---------------------------------------- 407415 July 2004. Summary of changes for version 20040715: 4075 40761) ACPI CA Core Subsystem: 4077 4078Restructured the internal HW GPE interfaces to pass/track the current state 4079of interrupts (enabled/disabled) in order to avoid possible deadlock and 4080increase flexibility of the interfaces. 4081 4082Implemented a "lexicographical compare" for String and Buffer objects within 4083the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -- 4084as per further clarification to the ACPI specification. Behavior is similar 4085to C library "strcmp". 4086 4087Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 4088external function. In the 32-bit non-debug case, the stack use has been 4089reduced from 168 bytes to 32 bytes. 4090 4091Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack, 4092whose purpose is to allow the AML interpreter to forgive certain bad AML 4093constructs. Default setting is FALSE. 4094 4095Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO 4096support code. If enabled, it allows field access to go beyond the end of a 4097region definition if the field is within the region length rounded up to the 4098next access width boundary (a common coding error.) 4099 4100Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 4101ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, these 4102symbols are lowercased by the latest version of the AcpiSrc tool. 4103 4104The prototypes for the PCI interfaces in acpiosxf.h have been updated to 4105rename "Register" to simply "Reg" to prevent certain compilers from 4106complaining. 4107 4108Code and Data Size: Current and previous core subsystem library sizes are 4109shown below. These are the code and data sizes for the acpica.lib produced 4110by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4111any ACPI driver or OSPM code. The debug version of the code includes the 4112debug output trace mechanism and has a much larger code and data size. Note 4113that these values will vary depending on the efficiency of the compiler and 4114the compiler options used during generation. 4115 4116 Previous Release: 4117 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 4118 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 4119 Current Release: 4120 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 4121 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 4122 4123 41242) iASL Compiler/Disassembler: 4125 4126Implemented full support for Package objects within the Case() operator. 4127Note: The Break() operator is currently not supported within Case blocks 4128(TermLists) as there is some question about backward compatibility with ACPI 41291.0 interpreters. 4130 4131 4132Fixed a problem where complex terms were not supported properly within the 4133Switch() operator. 4134 4135Eliminated extraneous warning for compiler-emitted reserved names of the 4136form "_T_x". (Used in Switch/Case operators.) 4137 4138Eliminated optimization messages for "_T_x" objects and small constants 4139within the DefinitionBlock operator. 4140 4141 4142---------------------------------------- 414315 June 2004. Summary of changes for version 20040615: 4144 41451) ACPI CA Core Subsystem: 4146 4147Implemented support for Buffer and String objects (as per ACPI 2.0) for the 4148following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 4149LLessEqual. 4150 4151All directory names in the entire source package are lower case, as they 4152were in earlier releases. 4153 4154Implemented "Disassemble" command in the AML debugger that will disassemble 4155a single control method. 4156 4157Code and Data Size: Current and previous core subsystem library sizes are 4158shown below. These are the code and data sizes for the acpica.lib produced 4159by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4160any ACPI driver or OSPM code. The debug version of the code includes the 4161debug output trace mechanism and has a much larger code and data size. Note 4162that these values will vary depending on the efficiency of the compiler and 4163the compiler options used during generation. 4164 4165 Previous Release: 4166 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 4167 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 4168 4169 Current Release: 4170 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 4171 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 4172 4173 41742) iASL Compiler/Disassembler: 4175 4176Implemented support for Buffer and String objects (as per ACPI 2.0) for the 4177following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 4178LLessEqual. 4179 4180All directory names in the entire source package are lower case, as they 4181were in earlier releases. 4182 4183Fixed a fault when using the -g or -d<nofilename> options if the FADT was 4184not found. 4185 4186Fixed an issue with the Windows version of the compiler where later versions 4187of Windows place the FADT in the registry under the name "FADT" and not 4188"FACP" as earlier versions did. This applies when using the -g or - 4189d<nofilename> options. The compiler now looks for both strings as 4190necessary. 4191 4192Fixed a problem with compiler namepath optimization where a namepath within 4193the Scope() operator could not be optimized if the namepath was a subpath of 4194the current scope path. 4195 4196---------------------------------------- 419727 May 2004. Summary of changes for version 20040527: 4198 41991) ACPI CA Core Subsystem: 4200 4201Completed a new design and implementation for EBDA (Extended BIOS Data Area) 4202support in the RSDP scan code. The original code improperly scanned for the 4203EBDA by simply scanning from memory location 0 to 0x400. The correct method 4204is to first obtain the EBDA pointer from within the BIOS data area, then 4205scan 1K of memory starting at the EBDA pointer. There appear to be few if 4206any machines that place the RSDP in the EBDA, however. 4207 4208Integrated a fix for a possible fault during evaluation of BufferField 4209arguments. Obsolete code that was causing the problem was removed. 4210 4211Found and fixed a problem in the Field Support Code where data could be 4212corrupted on a bit field read that starts on an aligned boundary but does 4213not end on an aligned boundary. Merged the read/write "datum length" 4214calculation code into a common procedure. 4215 4216Rolled in a couple of changes to the FreeBSD-specific header. 4217 4218 4219Code and Data Size: Current and previous core subsystem library sizes are 4220shown below. These are the code and data sizes for the acpica.lib produced 4221by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4222any ACPI driver or OSPM code. The debug version of the code includes the 4223debug output trace mechanism and has a much larger code and data size. Note 4224that these values will vary depending on the efficiency of the compiler and 4225the compiler options used during generation. 4226 4227 Previous Release: 4228 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 4229 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 4230 Current Release: 4231 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 4232 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 4233 4234 42352) iASL Compiler/Disassembler: 4236 4237Fixed a generation warning produced by some overly-verbose compilers for a 423864-bit constant. 4239 4240---------------------------------------- 424114 May 2004. Summary of changes for version 20040514: 4242 42431) ACPI CA Core Subsystem: 4244 4245Fixed a problem where hardware GPE enable bits sometimes not set properly 4246during and after GPE method execution. Result of 04/27 changes. 4247 4248Removed extra "clear all GPEs" when sleeping/waking. 4249 4250Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 4251AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to 4252the new AcpiEv* calls as appropriate. 4253 4254ACPI_OS_NAME was removed from the OS-specific headers. The default name is 4255now "Microsoft Windows NT" for maximum compatibility. However this can be 4256changed by modifying the acconfig.h file. 4257 4258Allow a single invocation of AcpiInstallNotifyHandler for a handler that 4259traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 4260 4261Run _INI methods on ThermalZone objects. This is against the ACPI 4262specification, but there is apparently ASL code in the field that has these 4263_INI methods, and apparently "other" AML interpreters execute them. 4264 4265Performed a full 16/32/64 bit lint that resulted in some small changes. 4266 4267Added a sleep simulation command to the AML debugger to test sleep code. 4268 4269Code and Data Size: Current and previous core subsystem library sizes are 4270shown below. These are the code and data sizes for the acpica.lib produced 4271by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4272any ACPI driver or OSPM code. The debug version of the code includes the 4273debug output trace mechanism and has a much larger code and data size. Note 4274that these values will vary depending on the efficiency of the compiler and 4275the compiler options used during generation. 4276 4277 Previous Release: 4278 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 4279 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 4280 Current Release: 4281 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 4282 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 4283 4284---------------------------------------- 428527 April 2004. Summary of changes for version 20040427: 4286 42871) ACPI CA Core Subsystem: 4288 4289Completed a major overhaul of the GPE handling within ACPI CA. There are 4290now three types of GPEs: wake-only, runtime-only, and combination wake/run. 4291The only GPEs allowed to be combination wake/run are for button-style 4292devices such as a control-method power button, control-method sleep button, 4293or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are not 4294referenced by any _PRW methods are marked for "runtime" and hardware 4295enabled. Any GPE that is referenced by a _PRW method is marked for "wake" 4296(and disabled at runtime). However, at sleep time, only those GPEs that 4297have been specifically enabled for wake via the AcpiEnableGpe interface will 4298actually be hardware enabled. 4299 4300A new external interface has been added, AcpiSetGpeType(), that is meant to 4301be used by device drivers to force a GPE to a particular type. It will be 4302especially useful for the drivers for the button devices mentioned above. 4303 4304Completed restructuring of the ACPI CA initialization sequence so that 4305default operation region handlers are installed before GPEs are initialized 4306and the _PRW methods are executed. This will prevent errors when the _PRW 4307methods attempt to access system memory or I/O space. 4308 4309GPE enable/disable no longer reads the GPE enable register. We now keep the 4310enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 4311thus no longer depend on the hardware to maintain these bits. 4312 4313Always clear the wake status and fixed/GPE status bits before sleep, even 4314for state S5. 4315 4316Improved the AML debugger output for displaying the GPE blocks and their 4317current status. 4318 4319Added new strings for the _OSI method, of the form "Windows 2001 SPx" where 4320x = 0,1,2,3,4. 4321 4322Fixed a problem where the physical address was incorrectly calculated when 4323the Load() operator was used to directly load from an Operation Region (vs. 4324loading from a Field object.) Also added check for minimum table length for 4325this case. 4326 4327Fix for multiple mutex acquisition. Restore original thread SyncLevel on 4328mutex release. 4329 4330Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 4331consistency with the other fields returned. 4332 4333Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 4334structure for each GPE in the system, so the size of this structure is 4335important. 4336 4337CPU stack requirement reduction: Cleaned up the method execution and object 4338evaluation paths so that now a parameter structure is passed, instead of 4339copying the various method parameters over and over again. 4340 4341In evregion.c: Correctly exit and reenter the interpreter region if and 4342only if dispatching an operation region request to a user-installed handler. 4343Do not exit/reenter when dispatching to a default handler (e.g., default 4344system memory or I/O handlers) 4345 4346 4347Notes for updating drivers for the new GPE support. The following changes 4348must be made to ACPI-related device drivers that are attached to one or more 4349GPEs: (This information will be added to the ACPI CA Programmer Reference.) 4350 43511) AcpiInstallGpeHandler no longer automatically enables the GPE, you must 4352explicitly call AcpiEnableGpe. 43532) There is a new interface called AcpiSetGpeType. This should be called 4354before enabling the GPE. Also, this interface will automatically disable 4355the GPE if it is currently enabled. 43563) AcpiEnableGpe no longer supports a GPE type flag. 4357 4358Specific drivers that must be changed: 43591) EC driver: 4360 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 4361AeGpeHandler, NULL); 4362 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 4363 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 4364 43652) Button Drivers (Power, Lid, Sleep): 4366Run _PRW method under parent device 4367If _PRW exists: /* This is a control-method button */ 4368 Extract GPE number and possibly GpeDevice 4369 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 4370 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 4371 4372For all other devices that have _PRWs, we automatically set the GPE type to 4373ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. This 4374must be done on a selective basis, usually requiring some kind of user app 4375to allow the user to pick the wake devices. 4376 4377 4378Code and Data Size: Current and previous core subsystem library sizes are 4379shown below. These are the code and data sizes for the acpica.lib produced 4380by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4381any ACPI driver or OSPM code. The debug version of the code includes the 4382debug output trace mechanism and has a much larger code and data size. Note 4383that these values will vary depending on the efficiency of the compiler and 4384the compiler options used during generation. 4385 4386 Previous Release: 4387 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 4388 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 4389 Current Release: 4390 4391 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 4392 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 4393 4394 4395 4396---------------------------------------- 439702 April 2004. Summary of changes for version 20040402: 4398 43991) ACPI CA Core Subsystem: 4400 4401Fixed an interpreter problem where an indirect store through an ArgX 4402parameter was incorrectly applying the "implicit conversion rules" during 4403the store. From the ACPI specification: "If the target is a method local or 4404argument (LocalX or ArgX), no conversion is performed and the result is 4405stored directly to the target". The new behavior is to disable implicit 4406conversion during ALL stores to an ArgX. 4407 4408Changed the behavior of the _PRW method scan to ignore any and all errors 4409returned by a given _PRW. This prevents the scan from aborting from the 4410failure of any single _PRW. 4411 4412Moved the runtime configuration parameters from the global init procedure to 4413static variables in acglobal.h. This will allow the host to override the 4414default values easily. 4415 4416Code and Data Size: Current and previous core subsystem library sizes are 4417shown below. These are the code and data sizes for the acpica.lib produced 4418by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4419any ACPI driver or OSPM code. The debug version of the code includes the 4420debug output trace mechanism and has a much larger code and data size. Note 4421that these values will vary depending on the efficiency of the compiler and 4422the compiler options used during generation. 4423 4424 Previous Release: 4425 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 4426 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 4427 Current Release: 4428 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 4429 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 4430 4431 44322) iASL Compiler/Disassembler: 4433 4434iASL now fully disassembles SSDTs. However, External() statements are not 4435generated automatically for unresolved symbols at this time. This is a 4436planned feature for future implementation. 4437 4438Fixed a scoping problem in the disassembler that occurs when the type of the 4439target of a Scope() operator is overridden. This problem caused an 4440incorrectly nested internal namespace to be constructed. 4441 4442Any warnings or errors that are emitted during disassembly are now commented 4443out automatically so that the resulting file can be recompiled without any 4444hand editing. 4445 4446---------------------------------------- 444726 March 2004. Summary of changes for version 20040326: 4448 44491) ACPI CA Core Subsystem: 4450 4451Implemented support for "wake" GPEs via interaction between GPEs and the 4452_PRW methods. Every GPE that is pointed to by one or more _PRWs is 4453identified as a WAKE GPE and by default will no longer be enabled at 4454runtime. Previously, we were blindly enabling all GPEs with a corresponding 4455_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. We 4456believe this has been the cause of thousands of "spurious" GPEs on some 4457systems. 4458 4459This new GPE behavior is can be reverted to the original behavior (enable 4460ALL GPEs at runtime) via a runtime flag. 4461 4462Fixed a problem where aliased control methods could not access objects 4463properly. The proper scope within the namespace was not initialized 4464(transferred to the target of the aliased method) before executing the 4465target method. 4466 4467Fixed a potential race condition on internal object deletion on the return 4468object in AcpiEvaluateObject. 4469 4470Integrated a fix for resource descriptors where both _MEM and _MTP were 4471being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 4472wide, 0x0F instead of 0x03.) 4473 4474Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a 4475fault in some cases. 4476 4477Updated Notify() values for debug statements in evmisc.c 4478 4479Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 4480 4481Code and Data Size: Current and previous core subsystem library sizes are 4482shown below. These are the code and data sizes for the acpica.lib produced 4483by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4484any ACPI driver or OSPM code. The debug version of the code includes the 4485debug output trace mechanism and has a much larger code and data size. Note 4486that these values will vary depending on the efficiency of the compiler and 4487the compiler options used during generation. 4488 4489 Previous Release: 4490 4491 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 4492 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 4493 Current Release: 4494 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 4495 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 4496 4497---------------------------------------- 449811 March 2004. Summary of changes for version 20040311: 4499 45001) ACPI CA Core Subsystem: 4501 4502Fixed a problem where errors occurring during the parse phase of control 4503method execution did not abort cleanly. For example, objects created and 4504installed in the namespace were not deleted. This caused all subsequent 4505invocations of the method to return the AE_ALREADY_EXISTS exception. 4506 4507Implemented a mechanism to force a control method to "Serialized" execution 4508if the method attempts to create namespace objects. (The root of the 4509AE_ALREADY_EXISTS problem.) 4510 4511Implemented support for the predefined _OSI "internal" control method. 4512Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and 4513"Windows 2001.1", and can be easily upgraded for new strings as necessary. 4514This feature will allow "other" operating systems to execute the fully 4515tested, "Windows" code path through the ASL code 4516 4517Global Lock Support: Now allows multiple acquires and releases with any 4518internal thread. Removed concept of "owning thread" for this special mutex. 4519 4520Fixed two functions that were inappropriately declaring large objects on the 4521CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage during 4522method execution considerably. 4523 4524Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 4525S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 4526 4527Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 4528defined on the machine. 4529 4530Implemented two runtime options: One to force all control method execution 4531to "Serialized" to mimic Windows behavior, another to disable _OSI support 4532if it causes problems on a given machine. 4533 4534Code and Data Size: Current and previous core subsystem library sizes are 4535shown below. These are the code and data sizes for the acpica.lib produced 4536by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4537any ACPI driver or OSPM code. The debug version of the code includes the 4538debug output trace mechanism and has a much larger code and data size. Note 4539that these values will vary depending on the efficiency of the compiler and 4540the compiler options used during generation. 4541 4542 Previous Release: 4543 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 4544 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 4545 Current Release: 4546 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 4547 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 4548 45492) iASL Compiler/Disassembler: 4550 4551Fixed an array size problem for FreeBSD that would cause the compiler to 4552fault. 4553 4554---------------------------------------- 455520 February 2004. Summary of changes for version 20040220: 4556 4557 45581) ACPI CA Core Subsystem: 4559 4560Implemented execution of _SxD methods for Device objects in the 4561GetObjectInfo interface. 4562 4563Fixed calls to _SST method to pass the correct arguments. 4564 4565Added a call to _SST on wake to restore to "working" state. 4566 4567Check for End-Of-Buffer failure case in the WalkResources interface. 4568 4569Integrated fix for 64-bit alignment issue in acglobal.h by moving two 4570structures to the beginning of the file. 4571 4572After wake, clear GPE status register(s) before enabling GPEs. 4573 4574After wake, clear/enable power button. (Perhaps we should clear/enable all 4575fixed events upon wake.) 4576 4577Fixed a couple of possible memory leaks in the Namespace manager. 4578 4579Integrated latest acnetbsd.h file. 4580 4581---------------------------------------- 458211 February 2004. Summary of changes for version 20040211: 4583 4584 45851) ACPI CA Core Subsystem: 4586 4587Completed investigation and implementation of the call-by-reference 4588mechanism for control method arguments. 4589 4590Fixed a problem where a store of an object into an indexed package could 4591fail if the store occurs within a different method than the method that 4592created the package. 4593 4594Fixed a problem where the ToDecimal operator could return incorrect results. 4595 4596Fixed a problem where the CopyObject operator could fail on some of the more 4597obscure objects (e.g., Reference objects.) 4598 4599Improved the output of the Debug object to display buffer, package, and 4600index objects. 4601 4602Fixed a problem where constructs of the form "RefOf (ArgX)" did not return 4603the expected result. 4604 4605Added permanent ACPI_REPORT_ERROR macros for all instances of the 4606ACPI_AML_INTERNAL exception. 4607 4608Integrated latest version of acfreebsd.h 4609 4610---------------------------------------- 461116 January 2004. Summary of changes for version 20040116: 4612 4613The purpose of this release is primarily to update the copyright years in 4614each module, thus causing a huge number of diffs. There are a few small 4615functional changes, however. 4616 46171) ACPI CA Core Subsystem: 4618 4619Improved error messages when there is a problem finding one or more of the 4620required base ACPI tables 4621 4622Reintroduced the definition of APIC_HEADER in actbl.h 4623 4624Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 4625 4626Removed extraneous reference to NewObj in dsmthdat.c 4627 46282) iASL compiler 4629 4630Fixed a problem introduced in December that disabled the correct disassembly 4631of Resource Templates 4632 4633 4634---------------------------------------- 463503 December 2003. Summary of changes for version 20031203: 4636 46371) ACPI CA Core Subsystem: 4638 4639Changed the initialization of Operation Regions during subsystem 4640init to perform two entire walks of the ACPI namespace; The first 4641to initialize the regions themselves, the second to execute the 4642_REG methods. This fixed some interdependencies across _REG 4643methods found on some machines. 4644 4645Fixed a problem where a Store(Local0, Local1) could simply update 4646the object reference count, and not create a new copy of the 4647object if the Local1 is uninitialized. 4648 4649Implemented support for the _SST reserved method during sleep 4650transitions. 4651 4652Implemented support to clear the SLP_TYP and SLP_EN bits when 4653waking up, this is apparently required by some machines. 4654 4655When sleeping, clear the wake status only if SleepState is not S5. 4656 4657Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 4658pointer arithmetic advanced a string pointer too far. 4659 4660Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 4661could be returned if the requested table has not been loaded. 4662 4663Within the support for IRQ resources, restructured the handling of 4664the active and edge/level bits. 4665 4666Fixed a few problems in AcpiPsxExecute() where memory could be 4667leaked under certain error conditions. 4668 4669Improved error messages for the cases where the ACPI mode could 4670not be entered. 4671 4672Code and Data Size: Current and previous core subsystem library 4673sizes are shown below. These are the code and data sizes for the 4674acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4675these values do not include any ACPI driver or OSPM code. The 4676debug version of the code includes the debug output trace 4677mechanism and has a much larger code and data size. Note that 4678these values will vary depending on the efficiency of the compiler 4679and the compiler options used during generation. 4680 4681 Previous Release (20031029): 4682 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 4683 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 4684 Current Release: 4685 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 4686 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 4687 46882) iASL Compiler/Disassembler: 4689 4690Implemented a fix for the iASL disassembler where a bad index was 4691generated. This was most noticeable on 64-bit platforms 4692 4693 4694---------------------------------------- 469529 October 2003. Summary of changes for version 20031029: 4696 46971) ACPI CA Core Subsystem: 4698 4699 4700Fixed a problem where a level-triggered GPE with an associated 4701_Lxx control method was incorrectly cleared twice. 4702 4703Fixed a problem with the Field support code where an access can 4704occur beyond the end-of-region if the field is non-aligned but 4705extends to the very end of the parent region (resulted in an 4706AE_AML_REGION_LIMIT exception.) 4707 4708Fixed a problem with ACPI Fixed Events where an RT Clock handler 4709would not get invoked on an RTC event. The RTC event bitmasks for 4710the PM1 registers were not being initialized properly. 4711 4712Implemented support for executing _STA and _INI methods for 4713Processor objects. Although this is currently not part of the 4714ACPI specification, there is existing ASL code that depends on the 4715init-time execution of these methods. 4716 4717Implemented and deployed a GetDescriptorName function to decode 4718the various types of internal descriptors. Guards against null 4719descriptors during debug output also. 4720 4721Implemented and deployed a GetNodeName function to extract the 4- 4722character namespace node name. This function simplifies the debug 4723and error output, as well as guarding against null pointers during 4724output. 4725 4726Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 4727simplify the debug and error output of 64-bit integers. This 4728macro replaces the HIDWORD and LODWORD macros for dumping these 4729integers. 4730 4731Updated the implementation of the Stall() operator to only call 4732AcpiOsStall(), and also return an error if the operand is larger 4733than 255. This preserves the required behavior of not 4734relinquishing the processor, as would happen if AcpiOsSleep() was 4735called for "long stalls". 4736 4737Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 4738initialized are now treated as NOOPs. 4739 4740Cleaned up a handful of warnings during 64-bit generation. 4741 4742Fixed a reported error where and incorrect GPE number was passed 4743to the GPE dispatch handler. This value is only used for error 4744output, however. Used this opportunity to clean up and streamline 4745the GPE dispatch code. 4746 4747Code and Data Size: Current and previous core subsystem library 4748sizes are shown below. These are the code and data sizes for the 4749acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4750these values do not include any ACPI driver or OSPM code. The 4751 4752debug version of the code includes the debug output trace 4753mechanism and has a much larger code and data size. Note that 4754these values will vary depending on the efficiency of the compiler 4755and the compiler options used during generation. 4756 4757 Previous Release (20031002): 4758 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 4759 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 4760 Current Release: 4761 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 4762 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 4763 4764 47652) iASL Compiler/Disassembler: 4766 4767Updated the iASL compiler to return an error if the operand to the 4768Stall() operator is larger than 255. 4769 4770 4771---------------------------------------- 477202 October 2003. Summary of changes for version 20031002: 4773 4774 47751) ACPI CA Core Subsystem: 4776 4777Fixed a problem with Index Fields where the index was not 4778incremented for fields that require multiple writes to the 4779index/data registers (Fields that are wider than the data 4780register.) 4781 4782Fixed a problem with all Field objects where a write could go 4783beyond the end-of-field if the field was larger than the access 4784granularity and therefore required multiple writes to complete the 4785request. An extra write beyond the end of the field could happen 4786inadvertently. 4787 4788Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 4789would incorrectly be returned if the width of the Data Register 4790was larger than the specified field access width. 4791 4792Completed fixes for LoadTable() and Unload() and verified their 4793operation. Implemented full support for the "DdbHandle" object 4794throughout the ACPI CA subsystem. 4795 4796Implemented full support for the MADT and ECDT tables in the ACPI 4797CA header files. Even though these tables are not directly 4798consumed by ACPI CA, the header definitions are useful for ACPI 4799device drivers. 4800 4801Integrated resource descriptor fixes posted to the Linux ACPI 4802list. This included checks for minimum descriptor length, and 4803support for trailing NULL strings within descriptors that have 4804optional string elements. 4805 4806Code and Data Size: Current and previous core subsystem library 4807sizes are shown below. These are the code and data sizes for the 4808acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4809these values do not include any ACPI driver or OSPM code. The 4810debug version of the code includes the debug output trace 4811mechanism and has a much larger code and data size. Note that 4812these values will vary depending on the efficiency of the compiler 4813and the compiler options used during generation. 4814 4815 Previous Release (20030918): 4816 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 4817 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 4818 Current Release: 4819 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 4820 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 4821 4822 48232) iASL Compiler: 4824 4825Implemented detection of non-ASCII characters within the input 4826source ASL file. This catches attempts to compile binary (AML) 4827files early in the compile, with an informative error message. 4828 4829Fixed a problem where the disassembler would fault if the output 4830filename could not be generated or if the output file could not be 4831opened. 4832 4833---------------------------------------- 483418 September 2003. Summary of changes for version 20030918: 4835 4836 48371) ACPI CA Core Subsystem: 4838 4839Found and fixed a longstanding problem with the late execution of 4840the various deferred AML opcodes (such as Operation Regions, 4841Buffer Fields, Buffers, and Packages). If the name string 4842specified for the name of the new object placed the object in a 4843scope other than the current scope, the initialization/execution 4844of the opcode failed. The solution to this problem was to 4845implement a mechanism where the late execution of such opcodes 4846does not attempt to lookup/create the name a second time in an 4847incorrect scope. This fixes the "region size computed 4848incorrectly" problem. 4849 4850Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 4851Global Lock AE_BAD_PARAMETER error. 4852 4853Fixed several 64-bit issues with prototypes, casting and data 4854types. 4855 4856Removed duplicate prototype from acdisasm.h 4857 4858Fixed an issue involving EC Operation Region Detach (Shaohua Li) 4859 4860Code and Data Size: Current and previous core subsystem library 4861sizes are shown below. These are the code and data sizes for the 4862acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4863these values do not include any ACPI driver or OSPM code. The 4864debug version of the code includes the debug output trace 4865mechanism and has a much larger code and data size. Note that 4866these values will vary depending on the efficiency of the compiler 4867and the compiler options used during generation. 4868 4869 Previous Release: 4870 4871 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 4872 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 4873 Current Release: 4874 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 4875 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 4876 4877 48782) Linux: 4879 4880Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 4881correct sleep time in seconds. 4882 4883---------------------------------------- 488414 July 2003. Summary of changes for version 20030619: 4885 48861) ACPI CA Core Subsystem: 4887 4888Parse SSDTs in order discovered, as opposed to reverse order 4889(Hrvoje Habjanic) 4890 4891Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 4892Klausner, 4893 Nate Lawson) 4894 4895 48962) Linux: 4897 4898Dynamically allocate SDT list (suggested by Andi Kleen) 4899 4900proc function return value cleanups (Andi Kleen) 4901 4902Correctly handle NMI watchdog during long stalls (Andrew Morton) 4903 4904Make it so acpismp=force works (reported by Andrew Morton) 4905 4906 4907---------------------------------------- 490819 June 2003. Summary of changes for version 20030619: 4909 49101) ACPI CA Core Subsystem: 4911 4912Fix To/FromBCD, eliminating the need for an arch-specific #define. 4913 4914Do not acquire a semaphore in the S5 shutdown path. 4915 4916Fix ex_digits_needed for 0. (Takayoshi Kochi) 4917 4918Fix sleep/stall code reversal. (Andi Kleen) 4919 4920Revert a change having to do with control method calling 4921semantics. 4922 49232) Linux: 4924 4925acpiphp update (Takayoshi Kochi) 4926 4927Export acpi_disabled for sonypi (Stelian Pop) 4928 4929Mention acpismp=force in config help 4930 4931Re-add acpitable.c and acpismp=force. This improves backwards 4932 4933compatibility and also cleans up the code to a significant degree. 4934 4935Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 4936 4937---------------------------------------- 493822 May 2003. Summary of changes for version 20030522: 4939 49401) ACPI CA Core Subsystem: 4941 4942Found and fixed a reported problem where an AE_NOT_FOUND error 4943occurred occasionally during _BST evaluation. This turned out to 4944be an Owner ID allocation issue where a called method did not get 4945a new ID assigned to it. Eventually, (after 64k calls), the Owner 4946ID UINT16 would wraparound so that the ID would be the same as the 4947caller's and the called method would delete the caller's 4948namespace. 4949 4950Implemented extended error reporting for control methods that are 4951aborted due to a run-time exception. Output includes the exact 4952AML instruction that caused the method abort, a dump of the method 4953locals and arguments at the time of the abort, and a trace of all 4954nested control method calls. 4955 4956Modified the interpreter to allow the creation of buffers of zero 4957length from the AML code. Implemented new code to ensure that no 4958attempt is made to actually allocate a memory buffer (of length 4959zero) - instead, a simple buffer object with a NULL buffer pointer 4960and length zero is created. A warning is no longer issued when 4961the AML attempts to create a zero-length buffer. 4962 4963Implemented a workaround for the "leading asterisk issue" in 4964_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 4965asterisk is automatically removed if present in any HID, UID, or 4966CID strings. The iASL compiler will still flag this asterisk as 4967an error, however. 4968 4969Implemented full support for _CID methods that return a package of 4970multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 4971now additionally returns a device _CID list if present. This 4972required a change to the external interface in order to pass an 4973ACPI_BUFFER object as a parameter since the _CID list is of 4974variable length. 4975 4976Fixed a problem with the new AE_SAME_HANDLER exception where 4977handler initialization code did not know about this exception. 4978 4979Code and Data Size: Current and previous core subsystem library 4980sizes are shown below. These are the code and data sizes for the 4981acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4982these values do not include any ACPI driver or OSPM code. The 4983debug version of the code includes the debug output trace 4984mechanism and has a much larger code and data size. Note that 4985these values will vary depending on the efficiency of the compiler 4986and the compiler options used during generation. 4987 4988 Previous Release (20030509): 4989 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 4990 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 4991 Current Release: 4992 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 4993 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 4994 4995 49962) Linux: 4997 4998Fixed a bug in which we would reinitialize the ACPI interrupt 4999after it was already working, thus disabling all ACPI and the IRQs 5000for any other device sharing the interrupt. (Thanks to Stian 5001Jordet) 5002 5003Toshiba driver update (John Belmonte) 5004 5005Return only 0 or 1 for our interrupt handler status (Andrew 5006Morton) 5007 5008 50093) iASL Compiler: 5010 5011Fixed a reported problem where multiple (nested) ElseIf() 5012statements were not handled correctly by the compiler, resulting 5013in incorrect warnings and incorrect AML code. This was a problem 5014in both the ASL parser and the code generator. 5015 5016 50174) Documentation: 5018 5019Added changes to existing interfaces, new exception codes, and new 5020text concerning reference count object management versus garbage 5021collection. 5022 5023---------------------------------------- 502409 May 2003. Summary of changes for version 20030509. 5025 5026 50271) ACPI CA Core Subsystem: 5028 5029Changed the subsystem initialization sequence to hold off 5030installation of address space handlers until the hardware has been 5031initialized and the system has entered ACPI mode. This is because 5032the installation of space handlers can cause _REG methods to be 5033run. Previously, the _REG methods could potentially be run before 5034ACPI mode was enabled. 5035 5036Fixed some memory leak issues related to address space handler and 5037notify handler installation. There were some problems with the 5038reference count mechanism caused by the fact that the handler 5039objects are shared across several namespace objects. 5040 5041Fixed a reported problem where reference counts within the 5042namespace were not properly updated when named objects created by 5043method execution were deleted. 5044 5045Fixed a reported problem where multiple SSDTs caused a deletion 5046issue during subsystem termination. Restructured the table data 5047structures to simplify the linked lists and the related code. 5048 5049Fixed a problem where the table ID associated with secondary 5050tables (SSDTs) was not being propagated into the namespace objects 5051created by those tables. This would only present a problem for 5052tables that are unloaded at run-time, however. 5053 5054Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 5055type as the length parameter (instead of UINT32). 5056 5057Solved a long-standing problem where an ALREADY_EXISTS error 5058appears on various systems. This problem could happen when there 5059are multiple PCI_Config operation regions under a single PCI root 5060bus. This doesn't happen very frequently, but there are some 5061systems that do this in the ASL. 5062 5063Fixed a reported problem where the internal DeleteNode function 5064was incorrectly handling the case where a namespace node was the 5065first in the parent's child list, and had additional peers (not 5066the only child, but first in the list of children.) 5067 5068Code and Data Size: Current core subsystem library sizes are shown 5069below. These are the code and data sizes for the acpica.lib 5070produced by the Microsoft Visual C++ 6.0 compiler, and these 5071values do not include any ACPI driver or OSPM code. The debug 5072version of the code includes the debug output trace mechanism and 5073has a much larger code and data size. Note that these values will 5074vary depending on the efficiency of the compiler and the compiler 5075options used during generation. 5076 5077 Previous Release 5078 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 5079 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 5080 Current Release: 5081 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 5082 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 5083 5084 50852) Linux: 5086 5087Allow ":" in OS override string (Ducrot Bruno) 5088 5089Kobject fix (Greg KH) 5090 5091 50923 iASL Compiler/Disassembler: 5093 5094Fixed a problem in the generation of the C source code files (AML 5095is emitted in C source statements for BIOS inclusion) where the 5096Ascii dump that appears within a C comment at the end of each line 5097could cause a compile time error if the AML sequence happens to 5098have an open comment or close comment sequence embedded. 5099 5100 5101---------------------------------------- 510224 April 2003. Summary of changes for version 20030424. 5103 5104 51051) ACPI CA Core Subsystem: 5106 5107Support for big-endian systems has been implemented. Most of the 5108support has been invisibly added behind big-endian versions of the 5109ACPI_MOVE_* macros. 5110 5111Fixed a problem in AcpiHwDisableGpeBlock() and 5112AcpiHwClearGpeBlock() where an incorrect offset was passed to the 5113low level hardware write routine. The offset parameter was 5114actually eliminated from the low level read/write routines because 5115they had become obsolete. 5116 5117Fixed a problem where a handler object was deleted twice during 5118the removal of a fixed event handler. 5119 5120 51212) Linux: 5122 5123A fix for SMP systems with link devices was contributed by 5124 5125Compaq's Dan Zink. 5126 5127(2.5) Return whether we handled the interrupt in our IRQ handler. 5128(Linux ISRs no longer return void, so we can propagate the handler 5129return value from the ACPI CA core back to the OS.) 5130 5131 5132 51333) Documentation: 5134 5135The ACPI CA Programmer Reference has been updated to reflect new 5136interfaces and changes to existing interfaces. 5137 5138---------------------------------------- 513928 March 2003. Summary of changes for version 20030328. 5140 51411) ACPI CA Core Subsystem: 5142 5143The GPE Block Device support has been completed. New interfaces 5144are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 5145interfaces (enable, disable, clear, getstatus) have been split 5146into separate interfaces for Fixed Events and General Purpose 5147Events (GPEs) in order to support GPE Block Devices properly. 5148 5149Fixed a problem where the error message "Failed to acquire 5150semaphore" would appear during operations on the embedded 5151controller (EC). 5152 5153Code and Data Size: Current core subsystem library sizes are shown 5154below. These are the code and data sizes for the acpica.lib 5155produced by the Microsoft Visual C++ 6.0 compiler, and these 5156values do not include any ACPI driver or OSPM code. The debug 5157version of the code includes the debug output trace mechanism and 5158has a much larger code and data size. Note that these values will 5159vary depending on the efficiency of the compiler and the compiler 5160options used during generation. 5161 5162 Previous Release 5163 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 5164 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 5165 Current Release: 5166 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 5167 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 5168 5169 5170---------------------------------------- 517128 February 2003. Summary of changes for version 20030228. 5172 5173 51741) ACPI CA Core Subsystem: 5175 5176The GPE handling and dispatch code has been completely overhauled 5177in preparation for support of GPE Block Devices (ID ACPI0006). 5178This affects internal data structures and code only; there should 5179be no differences visible externally. One new file has been 5180added, evgpeblk.c 5181 5182The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 5183fields that are used to determine the GPE block lengths. The 5184REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 5185structures are ignored. This is per the ACPI specification but it 5186isn't very clear. The full 256 Block 0/1 GPEs are now supported 5187(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 5188 5189In the SCI interrupt handler, removed the read of the PM1_CONTROL 5190register to look at the SCI_EN bit. On some machines, this read 5191causes an SMI event and greatly slows down SCI events. (This may 5192in fact be the cause of slow battery status response on some 5193systems.) 5194 5195Fixed a problem where a store of a NULL string to a package object 5196could cause the premature deletion of the object. This was seen 5197during execution of the battery _BIF method on some systems, 5198resulting in no battery data being returned. 5199 5200Added AcpiWalkResources interface to simplify parsing of resource 5201lists. 5202 5203Code and Data Size: Current core subsystem library sizes are shown 5204below. These are the code and data sizes for the acpica.lib 5205produced by the Microsoft Visual C++ 6.0 compiler, and these 5206values do not include any ACPI driver or OSPM code. The debug 5207version of the code includes the debug output trace mechanism and 5208has a much larger code and data size. Note that these values will 5209vary depending on the efficiency of the compiler and the compiler 5210options used during generation. 5211 5212 Previous Release 5213 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 5214 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 5215 Current Release: 5216 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 5217 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 5218 5219 52202) Linux 5221 5222S3 fixes (Ole Rohne) 5223 5224Update ACPI PHP driver with to use new acpi_walk_resource API 5225(Bjorn Helgaas) 5226 5227Add S4BIOS support (Pavel Machek) 5228 5229Map in entire table before performing checksum (John Stultz) 5230 5231Expand the mem= cmdline to allow the specification of reserved and 5232ACPI DATA blocks (Pavel Machek) 5233 5234Never use ACPI on VISWS 5235 5236Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 5237 5238Revert a change that allowed P_BLK lengths to be 4 or 5. This is 5239causing us to think that some systems support C2 when they really 5240don't. 5241 5242Do not count processor objects for non-present CPUs (Thanks to 5243Dominik Brodowski) 5244 5245 52463) iASL Compiler: 5247 5248Fixed a problem where ASL include files could not be found and 5249opened. 5250 5251Added support for the _PDC reserved name. 5252 5253 5254---------------------------------------- 525522 January 2003. Summary of changes for version 20030122. 5256 5257 52581) ACPI CA Core Subsystem: 5259 5260Added a check for constructs of the form: Store (Local0, Local0) 5261where Local0 is not initialized. Apparently, some BIOS 5262programmers believe that this is a NOOP. Since this store doesn't 5263do anything anyway, the new prototype behavior will ignore this 5264error. This is a case where we can relax the strict checking in 5265the interpreter in the name of compatibility. 5266 5267 52682) Linux 5269 5270The AcpiSrc Source Conversion Utility has been released with the 5271Linux package for the first time. This is the utility that is 5272used to convert the ACPI CA base source code to the Linux version. 5273 5274(Both) Handle P_BLK lengths shorter than 6 more gracefully 5275 5276(Both) Move more headers to include/acpi, and delete an unused 5277header. 5278 5279(Both) Move drivers/acpi/include directory to include/acpi 5280 5281(Both) Boot functions don't use cmdline, so don't pass it around 5282 5283(Both) Remove include of unused header (Adrian Bunk) 5284 5285(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 5286the 5287former now also includes the latter, acpiphp.h only needs the one, 5288now. 5289 5290(2.5) Make it possible to select method of bios restoring after S3 5291resume. [=> no more ugly ifdefs] (Pavel Machek) 5292 5293(2.5) Make proc write interfaces work (Pavel Machek) 5294 5295(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 5296 5297(2.5) Break out ACPI Perf code into its own module, under cpufreq 5298(Dominik Brodowski) 5299 5300(2.4) S4BIOS support (Ducrot Bruno) 5301 5302(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 5303Visinoni) 5304 5305 53063) iASL Compiler: 5307 5308Added support to disassemble SSDT and PSDTs. 5309 5310Implemented support to obtain SSDTs from the Windows registry if 5311available. 5312 5313 5314---------------------------------------- 531509 January 2003. Summary of changes for version 20030109. 5316 53171) ACPI CA Core Subsystem: 5318 5319Changed the behavior of the internal Buffer-to-String conversion 5320function. The current ACPI specification states that the contents 5321of the buffer are "converted to a string of two-character 5322hexadecimal numbers, each separated by a space". Unfortunately, 5323this definition is not backwards compatible with existing ACPI 1.0 5324implementations (although the behavior was not defined in the ACPI 53251.0 specification). The new behavior simply copies data from the 5326buffer to the string until a null character is found or the end of 5327the buffer is reached. The new String object is always null 5328terminated. This problem was seen during the generation of _BIF 5329battery data where incorrect strings were returned for battery 5330type, etc. This will also require an errata to the ACPI 5331specification. 5332 5333Renamed all instances of NATIVE_UINT and NATIVE_INT to 5334ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 5335 5336Copyright in all module headers (both Linux and non-Linux) has be 5337updated to 2003. 5338 5339Code and Data Size: Current core subsystem library sizes are shown 5340below. These are the code and data sizes for the acpica.lib 5341produced by the Microsoft Visual C++ 6.0 compiler, and these 5342values do not include any ACPI driver or OSPM code. The debug 5343version of the code includes the debug output trace mechanism and 5344has a much larger code and data size. Note that these values will 5345vary depending on the efficiency of the compiler and the compiler 5346options used during generation. 5347 5348 Previous Release 5349 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 5350 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 5351 Current Release: 5352 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 5353 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 5354 5355 53562) Linux 5357 5358Fixed an oops on module insertion/removal (Matthew Tippett) 5359 5360(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 5361 5362(2.5) Replace pr_debug (Randy Dunlap) 5363 5364(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 5365 5366(Both) Eliminate spawning of thread from timer callback, in favor 5367of schedule_work() 5368 5369(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 5370 5371(Both) Added define for Fixed Function HW region (Matthew Wilcox) 5372 5373(Both) Add missing statics to button.c (Pavel Machek) 5374 5375Several changes have been made to the source code translation 5376utility that generates the Linux Code in order to make the code 5377more "Linux-like": 5378 5379All typedefs on structs and unions have been removed in keeping 5380with the Linux coding style. 5381 5382Removed the non-Linux SourceSafe module revision number from each 5383module header. 5384 5385Completed major overhaul of symbols to be lowercased for linux. 5386Doubled the number of symbols that are lowercased. 5387 5388Fixed a problem where identifiers within procedure headers and 5389within quotes were not fully lower cased (they were left with a 5390starting capital.) 5391 5392Some C macros whose only purpose is to allow the generation of 16- 5393bit code are now completely removed in the Linux code, increasing 5394readability and maintainability. 5395 5396---------------------------------------- 5397 539812 December 2002. Summary of changes for version 20021212. 5399 5400 54011) ACPI CA Core Subsystem: 5402 5403Fixed a problem where the creation of a zero-length AML Buffer 5404would cause a fault. 5405 5406Fixed a problem where a Buffer object that pointed to a static AML 5407buffer (in an ACPI table) could inadvertently be deleted, causing 5408memory corruption. 5409 5410Fixed a problem where a user buffer (passed in to the external 5411ACPI CA interfaces) could be overwritten if the buffer was too 5412small to complete the operation, causing memory corruption. 5413 5414Fixed a problem in the Buffer-to-String conversion code where a 5415string of length one was always returned, regardless of the size 5416of the input Buffer object. 5417 5418Removed the NATIVE_CHAR data type across the entire source due to 5419lack of need and lack of consistent use. 5420 5421Code and Data Size: Current core subsystem library sizes are shown 5422below. These are the code and data sizes for the acpica.lib 5423produced by the Microsoft Visual C++ 6.0 compiler, and these 5424values do not include any ACPI driver or OSPM code. The debug 5425version of the code includes the debug output trace mechanism and 5426has a much larger code and data size. Note that these values will 5427vary depending on the efficiency of the compiler and the compiler 5428options used during generation. 5429 5430 Previous Release 5431 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 5432 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 5433 Current Release: 5434 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 5435 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 5436 5437 5438---------------------------------------- 543905 December 2002. Summary of changes for version 20021205. 5440 54411) ACPI CA Core Subsystem: 5442 5443Fixed a problem where a store to a String or Buffer object could 5444cause corruption of the DSDT if the object type being stored was 5445the same as the target object type and the length of the object 5446being stored was equal to or smaller than the original (existing) 5447target object. This was seen to cause corruption of battery _BIF 5448buffers if the _BIF method modified the buffer on the fly. 5449 5450Fixed a problem where an internal error was generated if a control 5451method invocation was used in an OperationRegion, Buffer, or 5452Package declaration. This was caused by the deferred parsing of 5453the control method and thus the deferred creation of the internal 5454method object. The solution to this problem was to create the 5455internal method object at the moment the method is encountered in 5456the first pass - so that subsequent references to the method will 5457able to obtain the required parameter count and thus properly 5458parse the method invocation. This problem presented itself as an 5459AE_AML_INTERNAL during the pass 1 parse phase during table load. 5460 5461Fixed a problem where the internal String object copy routine did 5462not always allocate sufficient memory for the target String object 5463and caused memory corruption. This problem was seen to cause 5464"Allocation already present in list!" errors as memory allocation 5465became corrupted. 5466 5467Implemented a new function for the evaluation of namespace objects 5468that allows the specification of the allowable return object 5469types. This simplifies a lot of code that checks for a return 5470object of one or more specific objects returned from the 5471evaluation (such as _STA, etc.) This may become and external 5472function if it would be useful to ACPI-related drivers. 5473 5474Completed another round of prefixing #defines with "ACPI_" for 5475clarity. 5476 5477Completed additional code restructuring to allow more modular 5478linking for iASL compiler and AcpiExec. Several files were split 5479creating new files. New files: nsparse.c dsinit.c evgpe.c 5480 5481Implemented an abort mechanism to terminate an executing control 5482method via the AML debugger. This feature is useful for debugging 5483control methods that depend (wait) for specific hardware 5484responses. 5485 5486Code and Data Size: Current core subsystem library sizes are shown 5487below. These are the code and data sizes for the acpica.lib 5488produced by the Microsoft Visual C++ 6.0 compiler, and these 5489values do not include any ACPI driver or OSPM code. The debug 5490version of the code includes the debug output trace mechanism and 5491has a much larger code and data size. Note that these values will 5492vary depending on the efficiency of the compiler and the compiler 5493options used during generation. 5494 5495 Previous Release 5496 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 5497 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 5498 Current Release: 5499 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 5500 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 5501 5502 55032) iASL Compiler/Disassembler 5504 5505Fixed a compiler code generation problem for "Interrupt" Resource 5506Descriptors. If specified in the ASL, the optional "Resource 5507Source Index" and "Resource Source" fields were not inserted into 5508the correct location within the AML resource descriptor, creating 5509an invalid descriptor. 5510 5511Fixed a disassembler problem for "Interrupt" resource descriptors. 5512The optional "Resource Source Index" and "Resource Source" fields 5513were ignored. 5514 5515 5516---------------------------------------- 551722 November 2002. Summary of changes for version 20021122. 5518 5519 55201) ACPI CA Core Subsystem: 5521 5522Fixed a reported problem where an object stored to a Method Local 5523or Arg was not copied to a new object during the store - the 5524object pointer was simply copied to the Local/Arg. This caused 5525all subsequent operations on the Local/Arg to also affect the 5526original source of the store operation. 5527 5528Fixed a problem where a store operation to a Method Local or Arg 5529was not completed properly if the Local/Arg contained a reference 5530(from RefOf) to a named field. The general-purpose store-to- 5531namespace-node code is now used so that this case is handled 5532automatically. 5533 5534Fixed a problem where the internal object copy routine would cause 5535a protection fault if the object being copied was a Package and 5536contained either 1) a NULL package element or 2) a nested sub- 5537package. 5538 5539Fixed a problem with the GPE initialization that resulted from an 5540ambiguity in the ACPI specification. One section of the 5541specification states that both the address and length of the GPE 5542block must be zero if the block is not supported. Another section 5543implies that only the address need be zero if the block is not 5544supported. The code has been changed so that both the address and 5545the length must be non-zero to indicate a valid GPE block (i.e., 5546if either the address or the length is zero, the GPE block is 5547invalid.) 5548 5549Code and Data Size: Current core subsystem library sizes are shown 5550below. These are the code and data sizes for the acpica.lib 5551produced by the Microsoft Visual C++ 6.0 compiler, and these 5552values do not include any ACPI driver or OSPM code. The debug 5553version of the code includes the debug output trace mechanism and 5554has a much larger code and data size. Note that these values will 5555vary depending on the efficiency of the compiler and the compiler 5556options used during generation. 5557 5558 Previous Release 5559 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 5560 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 5561 Current Release: 5562 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 5563 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 5564 5565 55662) Linux 5567 5568Cleaned up EC driver. Exported an external EC read/write 5569interface. By going through this, other drivers (most notably 5570sonypi) will be able to serialize access to the EC. 5571 5572 55733) iASL Compiler/Disassembler 5574 5575Implemented support to optionally generate include files for both 5576ASM and C (the -i switch). This simplifies BIOS development by 5577automatically creating include files that contain external 5578declarations for the symbols that are created within the 5579 5580(optionally generated) ASM and C AML source files. 5581 5582 5583---------------------------------------- 558415 November 2002. Summary of changes for version 20021115. 5585 55861) ACPI CA Core Subsystem: 5587 5588Fixed a memory leak problem where an error during resolution of 5589 5590method arguments during a method invocation from another method 5591failed to cleanup properly by deleting all successfully resolved 5592argument objects. 5593 5594Fixed a problem where the target of the Index() operator was not 5595correctly constructed if the source object was a package. This 5596problem has not been detected because the use of a target operand 5597with Index() is very rare. 5598 5599Fixed a problem with the Index() operator where an attempt was 5600made to delete the operand objects twice. 5601 5602Fixed a problem where an attempt was made to delete an operand 5603twice during execution of the CondRefOf() operator if the target 5604did not exist. 5605 5606Implemented the first of perhaps several internal create object 5607functions that create and initialize a specific object type. This 5608consolidates duplicated code wherever the object is created, thus 5609shrinking the size of the subsystem. 5610 5611Implemented improved debug/error messages for errors that occur 5612during nested method invocations. All executing method pathnames 5613are displayed (with the error) as the call stack is unwound - thus 5614simplifying debug. 5615 5616Fixed a problem introduced in the 10/02 release that caused 5617premature deletion of a buffer object if a buffer was used as an 5618ASL operand where an integer operand is required (Thus causing an 5619implicit object conversion from Buffer to Integer.) The change in 5620the 10/02 release was attempting to fix a memory leak (albeit 5621incorrectly.) 5622 5623Code and Data Size: Current core subsystem library sizes are shown 5624below. These are the code and data sizes for the acpica.lib 5625produced by the Microsoft Visual C++ 6.0 compiler, and these 5626values do not include any ACPI driver or OSPM code. The debug 5627version of the code includes the debug output trace mechanism and 5628has a much larger code and data size. Note that these values will 5629vary depending on the efficiency of the compiler and the compiler 5630options used during generation. 5631 5632 Previous Release 5633 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 5634 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 5635 Current Release: 5636 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 5637 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 5638 5639 56402) Linux 5641 5642Changed the implementation of the ACPI semaphores to use down() 5643instead of down_interruptable(). It is important that the 5644execution of ACPI control methods not be interrupted by signals. 5645Methods must run to completion, or the system may be left in an 5646unknown/unstable state. 5647 5648Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 5649(Shawn Starr) 5650 5651 56523) iASL Compiler/Disassembler 5653 5654 5655Changed the default location of output files. All output files 5656are now placed in the current directory by default instead of in 5657the directory of the source file. This change may affect some 5658existing makefiles, but it brings the behavior of the compiler in 5659line with other similar tools. The location of the output files 5660can be overridden with the -p command line switch. 5661 5662 5663---------------------------------------- 566411 November 2002. Summary of changes for version 20021111. 5665 5666 56670) ACPI Specification 2.0B is released and is now available at: 5668http://www.acpi.info/index.html 5669 5670 56711) ACPI CA Core Subsystem: 5672 5673Implemented support for the ACPI 2.0 SMBus Operation Regions. 5674This includes the early detection and handoff of the request to 5675the SMBus region handler (avoiding all of the complex field 5676support code), and support for the bidirectional return packet 5677from an SMBus write operation. This paves the way for the 5678development of SMBus drivers in each host operating system. 5679 5680Fixed a problem where the semaphore WAIT_FOREVER constant was 5681defined as 32 bits, but must be 16 bits according to the ACPI 5682specification. This had the side effect of causing ASL 5683Mutex/Event timeouts even though the ASL code requested a wait 5684forever. Changed all internal references to the ACPI timeout 5685parameter to 16 bits to prevent future problems. Changed the name 5686of WAIT_FOREVER to ACPI_WAIT_FOREVER. 5687 5688Code and Data Size: Current core subsystem library sizes are shown 5689below. These are the code and data sizes for the acpica.lib 5690produced by the Microsoft Visual C++ 6.0 compiler, and these 5691values do not include any ACPI driver or OSPM code. The debug 5692version of the code includes the debug output trace mechanism and 5693has a much larger code and data size. Note that these values will 5694vary depending on the efficiency of the compiler and the compiler 5695options used during generation. 5696 5697 Previous Release 5698 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 5699 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 5700 Current Release: 5701 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 5702 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 5703 5704 57052) Linux 5706 5707Module loading/unloading fixes (John Cagle) 5708 5709 57103) iASL Compiler/Disassembler 5711 5712Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 5713 5714Implemented support for the disassembly of all SMBus protocol 5715keywords (SMBQuick, SMBWord, etc.) 5716 5717---------------------------------------- 571801 November 2002. Summary of changes for version 20021101. 5719 5720 57211) ACPI CA Core Subsystem: 5722 5723Fixed a problem where platforms that have a GPE1 block but no GPE0 5724block were not handled correctly. This resulted in a "GPE 5725overlap" error message. GPE0 is no longer required. 5726 5727Removed code added in the previous release that inserted nodes 5728into the namespace in alphabetical order. This caused some side- 5729effects on various machines. The root cause of the problem is 5730still under investigation since in theory, the internal ordering 5731of the namespace nodes should not matter. 5732 5733 5734Enhanced error reporting for the case where a named object is not 5735found during control method execution. The full ACPI namepath 5736(name reference) of the object that was not found is displayed in 5737this case. 5738 5739Note: as a result of the overhaul of the namespace object types in 5740the previous release, the namespace nodes for the predefined 5741scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 5742instead of ACPI_TYPE_ANY. This simplifies the namespace 5743management code but may affect code that walks the namespace tree 5744looking for specific object types. 5745 5746Code and Data Size: Current core subsystem library sizes are shown 5747below. These are the code and data sizes for the acpica.lib 5748produced by the Microsoft Visual C++ 6.0 compiler, and these 5749values do not include any ACPI driver or OSPM code. The debug 5750version of the code includes the debug output trace mechanism and 5751has a much larger code and data size. Note that these values will 5752vary depending on the efficiency of the compiler and the compiler 5753options used during generation. 5754 5755 Previous Release 5756 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 5757 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 5758 Current Release: 5759 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 5760 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 5761 5762 57632) Linux 5764 5765Fixed a problem introduced in the previous release where the 5766Processor and Thermal objects were not recognized and installed in 5767/proc. This was related to the scope type change described above. 5768 5769 57703) iASL Compiler/Disassembler 5771 5772Implemented the -g option to get all of the required ACPI tables 5773from the registry and save them to files (Windows version of the 5774compiler only.) The required tables are the FADT, FACS, and DSDT. 5775 5776Added ACPI table checksum validation during table disassembly in 5777order to catch corrupted tables. 5778 5779 5780---------------------------------------- 578122 October 2002. Summary of changes for version 20021022. 5782 57831) ACPI CA Core Subsystem: 5784 5785Implemented a restriction on the Scope operator that the target 5786must already exist in the namespace at the time the operator is 5787encountered (during table load or method execution). In other 5788words, forward references are not allowed and Scope() cannot 5789create a new object. This changes the previous behavior where the 5790interpreter would create the name if not found. This new behavior 5791correctly enables the search-to-root algorithm during namespace 5792lookup of the target name. Because of this upsearch, this fixes 5793the known Compaq _SB_.OKEC problem and makes both the AML 5794interpreter and iASL compiler compatible with other ACPI 5795implementations. 5796 5797Completed a major overhaul of the internal ACPI object types for 5798the ACPI Namespace and the associated operand objects. Many of 5799these types had become obsolete with the introduction of the two- 5800pass namespace load. This cleanup simplifies the code and makes 5801the entire namespace load mechanism much clearer and easier to 5802understand. 5803 5804Improved debug output for tracking scope opening/closing to help 5805diagnose scoping issues. The old scope name as well as the new 5806scope name are displayed. Also improved error messages for 5807problems with ASL Mutex objects and error messages for GPE 5808problems. 5809 5810Cleaned up the namespace dump code, removed obsolete code. 5811 5812All string output (for all namespace/object dumps) now uses the 5813common ACPI string output procedure which handles escapes properly 5814and does not emit non-printable characters. 5815 5816Fixed some issues with constants in the 64-bit version of the 5817local C library (utclib.c) 5818 5819 58202) Linux 5821 5822EC Driver: No longer attempts to acquire the Global Lock at 5823interrupt level. 5824 5825 58263) iASL Compiler/Disassembler 5827 5828Implemented ACPI 2.0B grammar change that disallows all Type 1 and 58292 opcodes outside of a control method. This means that the 5830"executable" operators (versus the "namespace" operators) cannot 5831be used at the table level; they can only be used within a control 5832method. 5833 5834Implemented the restriction on the Scope() operator where the 5835target must already exist in the namespace at the time the 5836operator is encountered (during ASL compilation). In other words, 5837forward references are not allowed and Scope() cannot create a new 5838object. This makes the iASL compiler compatible with other ACPI 5839implementations and makes the Scope() implementation adhere to the 5840ACPI specification. 5841 5842Fixed a problem where namepath optimization for the Alias operator 5843was optimizing the wrong path (of the two namepaths.) This caused 5844a "Missing alias link" error message. 5845 5846Fixed a problem where an "unknown reserved name" warning could be 5847incorrectly generated for names like "_SB" when the trailing 5848underscore is not used in the original ASL. 5849 5850Fixed a problem where the reserved name check did not handle 5851NamePaths with multiple NameSegs correctly. The first nameseg of 5852the NamePath was examined instead of the last NameSeg. 5853 5854 5855---------------------------------------- 5856 585702 October 2002. Summary of changes for this release. 5858 5859 58601) ACPI CA Core Subsystem version 20021002: 5861 5862Fixed a problem where a store/copy of a string to an existing 5863string did not always set the string length properly in the String 5864object. 5865 5866Fixed a reported problem with the ToString operator where the 5867behavior was identical to the ToHexString operator instead of just 5868simply converting a raw buffer to a string data type. 5869 5870Fixed a problem where CopyObject and the other "explicit" 5871conversion operators were not updating the internal namespace node 5872type as part of the store operation. 5873 5874Fixed a memory leak during implicit source operand conversion 5875where the original object was not deleted if it was converted to a 5876new object of a different type. 5877 5878Enhanced error messages for all problems associated with namespace 5879lookups. Common procedure generates and prints the lookup name as 5880well as the formatted status. 5881 5882Completed implementation of a new design for the Alias support 5883within the namespace. The existing design did not handle the case 5884where a new object was assigned to one of the two names due to the 5885use of an explicit conversion operator, resulting in the two names 5886pointing to two different objects. The new design simply points 5887the Alias name to the original name node - not to the object. 5888This results in a level of indirection that must be handled in the 5889name resolution mechanism. 5890 5891Code and Data Size: Current core subsystem library sizes are shown 5892below. These are the code and data sizes for the acpica.lib 5893produced by the Microsoft Visual C++ 6.0 compiler, and these 5894values do not include any ACPI driver or OSPM code. The debug 5895version of the code includes the debug output trace mechanism and 5896has a larger code and data size. Note that these values will vary 5897depending on the efficiency of the compiler and the compiler 5898options used during generation. 5899 5900 Previous Release 5901 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 5902 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 5903 Current Release: 5904 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 5905 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 5906 5907 59082) Linux 5909 5910Initialize thermal driver's timer before it is used. (Knut 5911Neumann) 5912 5913Allow handling negative celsius values. (Kochi Takayoshi) 5914 5915Fix thermal management and make trip points. R/W (Pavel Machek) 5916 5917Fix /proc/acpi/sleep. (P. Christeas) 5918 5919IA64 fixes. (David Mosberger) 5920 5921Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 5922 5923Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 5924Brodowski) 5925 5926 59273) iASL Compiler/Disassembler 5928 5929Clarified some warning/error messages. 5930 5931 5932---------------------------------------- 593318 September 2002. Summary of changes for this release. 5934 5935 59361) ACPI CA Core Subsystem version 20020918: 5937 5938Fixed a reported problem with reference chaining (via the Index() 5939and RefOf() operators) in the ObjectType() and SizeOf() operators. 5940The definition of these operators includes the dereferencing of 5941all chained references to return information on the base object. 5942 5943Fixed a problem with stores to indexed package elements - the 5944existing code would not complete the store if an "implicit 5945conversion" was not performed. In other words, if the existing 5946object (package element) was to be replaced completely, the code 5947didn't handle this case. 5948 5949Relaxed typechecking on the ASL "Scope" operator to allow the 5950target name to refer to an object of type Integer, String, or 5951Buffer, in addition to the scoping object types (Device, 5952predefined Scopes, Processor, PowerResource, and ThermalZone.) 5953This allows existing AML code that has workarounds for a bug in 5954Windows to function properly. A warning is issued, however. This 5955affects both the AML interpreter and the iASL compiler. Below is 5956an example of this type of ASL code: 5957 5958 Name(DEB,0x00) 5959 Scope(DEB) 5960 { 5961 5962Fixed some reported problems with 64-bit integer support in the 5963local implementation of C library functions (clib.c) 5964 5965 59662) Linux 5967 5968Use ACPI fix map region instead of IOAPIC region, since it is 5969undefined in non-SMP. 5970 5971Ensure that the SCI has the proper polarity and trigger, even on 5972systems that do not have an interrupt override entry in the MADT. 5973 59742.5 big driver reorganization (Pat Mochel) 5975 5976Use early table mapping code from acpitable.c (Andi Kleen) 5977 5978New blacklist entries (Andi Kleen) 5979 5980Blacklist improvements. Split blacklist code out into a separate 5981file. Move checking the blacklist to very early. Previously, we 5982would use ACPI tables, and then halfway through init, check the 5983blacklist -- too late. Now, it's early enough to completely fall- 5984back to non-ACPI. 5985 5986 59873) iASL Compiler/Disassembler version 20020918: 5988 5989Fixed a problem where the typechecking code didn't know that an 5990alias could point to a method. In other words, aliases were not 5991being dereferenced during typechecking. 5992 5993 5994---------------------------------------- 599529 August 2002. Summary of changes for this release. 5996 59971) ACPI CA Core Subsystem Version 20020829: 5998 5999If the target of a Scope() operator already exists, it must be an 6000object type that actually opens a scope -- such as a Device, 6001Method, Scope, etc. This is a fatal runtime error. Similar error 6002check has been added to the iASL compiler also. 6003 6004Tightened up the namespace load to disallow multiple names in the 6005same scope. This previously was allowed if both objects were of 6006the same type. (i.e., a lookup was the same as entering a new 6007name). 6008 6009 60102) Linux 6011 6012Ensure that the ACPI interrupt has the proper trigger and 6013polarity. 6014 6015local_irq_disable is extraneous. (Matthew Wilcox) 6016 6017Make "acpi=off" actually do what it says, and not use the ACPI 6018interpreter *or* the tables. 6019 6020Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 6021Takayoshi) 6022 6023 60243) iASL Compiler/Disassembler Version 20020829: 6025 6026Implemented namepath optimization for name declarations. For 6027example, a declaration like "Method (\_SB_.ABCD)" would get 6028optimized to "Method (ABCD)" if the declaration is within the 6029\_SB_ scope. This optimization is in addition to the named 6030reference path optimization first released in the previous 6031version. This would seem to complete all possible optimizations 6032for namepaths within the ASL/AML. 6033 6034If the target of a Scope() operator already exists, it must be an 6035object type that actually opens a scope -- such as a Device, 6036Method, Scope, etc. 6037 6038Implemented a check and warning for unreachable code in the same 6039block below a Return() statement. 6040 6041Fixed a problem where the listing file was not generated if the 6042compiler aborted if the maximum error count was exceeded (200). 6043 6044Fixed a problem where the typechecking of method return values was 6045broken. This includes the check for a return value when the 6046method is invoked as a TermArg (a return value is expected.) 6047 6048Fixed a reported problem where EOF conditions during a quoted 6049string or comment caused a fault. 6050 6051 6052---------------------------------------- 605315 August 2002. Summary of changes for this release. 6054 60551) ACPI CA Core Subsystem Version 20020815: 6056 6057Fixed a reported problem where a Store to a method argument that 6058contains a reference did not perform the indirect store correctly. 6059This problem was created during the conversion to the new 6060reference object model - the indirect store to a method argument 6061code was not updated to reflect the new model. 6062 6063Reworked the ACPI mode change code to better conform to ACPI 2.0, 6064handle corner cases, and improve code legibility (Kochi Takayoshi) 6065 6066Fixed a problem with the pathname parsing for the carat (^) 6067prefix. The heavy use of the carat operator by the new namepath 6068optimization in the iASL compiler uncovered a problem with the AML 6069interpreter handling of this prefix. In the case where one or 6070more carats precede a single nameseg, the nameseg was treated as 6071standalone and the search rule (to root) was inadvertently 6072applied. This could cause both the iASL compiler and the 6073interpreter to find the wrong object or to miss the error that 6074should occur if the object does not exist at that exact pathname. 6075 6076Found and fixed the problem where the HP Pavilion DSDT would not 6077load. This was a relatively minor tweak to the table loading code 6078(a problem caused by the unexpected encounter with a method 6079invocation not within a control method), but it does not solve the 6080overall issue of the execution of AML code at the table level. 6081This investigation is still ongoing. 6082 6083Code and Data Size: Current core subsystem library sizes are shown 6084below. These are the code and data sizes for the acpica.lib 6085produced by the Microsoft Visual C++ 6.0 compiler, and these 6086values do not include any ACPI driver or OSPM code. The debug 6087version of the code includes the debug output trace mechanism and 6088has a larger code and data size. Note that these values will vary 6089depending on the efficiency of the compiler and the compiler 6090options used during generation. 6091 6092 Previous Release 6093 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 6094 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 6095 Current Release: 6096 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 6097 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 6098 6099 61002) Linux 6101 6102Remove redundant slab.h include (Brad Hards) 6103 6104Fix several bugs in thermal.c (Herbert Nachtnebel) 6105 6106Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 6107 6108Change acpi_system_suspend to use updated irq functions (Pavel 6109Machek) 6110 6111Export acpi_get_firmware_table (Matthew Wilcox) 6112 6113Use proper root proc entry for ACPI (Kochi Takayoshi) 6114 6115Fix early-boot table parsing (Bjorn Helgaas) 6116 6117 61183) iASL Compiler/Disassembler 6119 6120Reworked the compiler options to make them more consistent and to 6121use two-letter options where appropriate. We were running out of 6122sensible letters. This may break some makefiles, so check the 6123current options list by invoking the compiler with no parameters. 6124 6125Completed the design and implementation of the ASL namepath 6126optimization option for the compiler. This option optimizes all 6127references to named objects to the shortest possible path. The 6128first attempt tries to utilize a single nameseg (4 characters) and 6129the "search-to-root" algorithm used by the interpreter. If that 6130cannot be used (because either the name is not in the search path 6131or there is a conflict with another object with the same name), 6132the pathname is optimized using the carat prefix (usually a 6133shorter string than specifying the entire path from the root.) 6134 6135Implemented support to obtain the DSDT from the Windows registry 6136(when the disassembly option is specified with no input file). 6137Added this code as the implementation for AcpiOsTableOverride in 6138the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 6139utility) to scan memory for the DSDT to the AcpiOsTableOverride 6140function in the DOS OSL to make the disassembler truly OS 6141independent. 6142 6143Implemented a new option to disassemble and compile in one step. 6144When used without an input filename, this option will grab the 6145DSDT from the local machine, disassemble it, and compile it in one 6146step. 6147 6148Added a warning message for invalid escapes (a backslash followed 6149by any character other than the allowable escapes). This catches 6150the quoted string error "\_SB_" (which should be "\\_SB_" ). 6151 6152Also, there are numerous instances in the ACPI specification where 6153this error occurs. 6154 6155Added a compiler option to disable all optimizations. This is 6156basically the "compatibility mode" because by using this option, 6157the AML code will come out exactly the same as other ASL 6158compilers. 6159 6160Added error messages for incorrectly ordered dependent resource 6161functions. This includes: missing EndDependentFn macro at end of 6162dependent resource list, nested dependent function macros (both 6163start and end), and missing StartDependentFn macro. These are 6164common errors that should be caught at compile time. 6165 6166Implemented _OSI support for the disassembler and compiler. _OSI 6167must be included in the namespace for proper disassembly (because 6168the disassembler must know the number of arguments.) 6169 6170Added an "optimization" message type that is optional (off by 6171default). This message is used for all optimizations - including 6172constant folding, integer optimization, and namepath optimization. 6173 6174---------------------------------------- 617525 July 2002. Summary of changes for this release. 6176 6177 61781) ACPI CA Core Subsystem Version 20020725: 6179 6180The AML Disassembler has been enhanced to produce compilable ASL 6181code and has been integrated into the iASL compiler (see below) as 6182well as the single-step disassembly for the AML debugger and the 6183disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 6184resource templates and macros are fully supported. The 6185disassembler has been tested on over 30 different AML files, 6186producing identical AML when the resulting disassembled ASL file 6187is recompiled with the same ASL compiler. 6188 6189Modified the Resource Manager to allow zero interrupts and zero 6190dma channels during the GetCurrentResources call. This was 6191causing problems on some platforms. 6192 6193Added the AcpiOsRedirectOutput interface to the OSL to simplify 6194output redirection for the AcpiOsPrintf and AcpiOsVprintf 6195interfaces. 6196 6197Code and Data Size: Current core subsystem library sizes are shown 6198below. These are the code and data sizes for the acpica.lib 6199produced by the Microsoft Visual C++ 6.0 compiler, and these 6200values do not include any ACPI driver or OSPM code. The debug 6201version of the code includes the debug output trace mechanism and 6202has a larger code and data size. Note that these values will vary 6203depending on the efficiency of the compiler and the compiler 6204options used during generation. 6205 6206 Previous Release 6207 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 6208 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 6209 Current Release: 6210 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 6211 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 6212 6213 62142) Linux 6215 6216Fixed a panic in the EC driver (Dominik Brodowski) 6217 6218Implemented checksum of the R/XSDT itself during Linux table scan 6219(Richard Schaal) 6220 6221 62223) iASL compiler 6223 6224The AML disassembler is integrated into the compiler. The "-d" 6225option invokes the disassembler to completely disassemble an 6226input AML file, producing as output a text ASL file with the 6227extension ".dsl" (to avoid name collisions with existing .asl 6228source files.) A future enhancement will allow the disassembler 6229to obtain the BIOS DSDT from the registry under Windows. 6230 6231Fixed a problem with the VendorShort and VendorLong resource 6232descriptors where an invalid AML sequence was created. 6233 6234Implemented a fix for BufferData term in the ASL parser. It was 6235inadvertently defined twice, allowing invalid syntax to pass and 6236causing reduction conflicts. 6237 6238Fixed a problem where the Ones opcode could get converted to a 6239value of zero if "Ones" was used where a byte, word or dword value 6240was expected. The 64-bit value is now truncated to the correct 6241size with the correct value. 6242 6243 6244 6245---------------------------------------- 624602 July 2002. Summary of changes for this release. 6247 6248 62491) ACPI CA Core Subsystem Version 20020702: 6250 6251The Table Manager code has been restructured to add several new 6252features. Tables that are not required by the core subsystem 6253(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 6254validated in any way and are returned from AcpiGetFirmwareTable if 6255requested. The AcpiOsTableOverride interface is now called for 6256each table that is loaded by the subsystem in order to allow the 6257host to override any table it chooses. Previously, only the DSDT 6258could be overridden. Added one new files, tbrsdt.c and 6259tbgetall.c. 6260 6261Fixed a problem with the conversion of internal package objects to 6262external objects (when a package is returned from a control 6263method.) The return buffer length was set to zero instead of the 6264proper length of the package object. 6265 6266Fixed a reported problem with the use of the RefOf and DeRefOf 6267operators when passing reference arguments to control methods. A 6268new type of Reference object is used internally for references 6269produced by the RefOf operator. 6270 6271Added additional error messages in the Resource Manager to explain 6272AE_BAD_DATA errors when they occur during resource parsing. 6273 6274Split the AcpiEnableSubsystem into two primitives to enable a 6275finer granularity initialization sequence. These two calls should 6276be called in this order: AcpiEnableSubsystem (flags), 6277AcpiInitializeObjects (flags). The flags parameter remains the 6278same. 6279 6280 62812) Linux 6282 6283Updated the ACPI utilities module to understand the new style of 6284fully resolved package objects that are now returned from the core 6285subsystem. This eliminates errors of the form: 6286 6287 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 6288 acpi_utils-0430 [145] acpi_evaluate_reference: 6289 Invalid element in package (not a device reference) 6290 6291The method evaluation utility uses the new buffer allocation 6292scheme instead of calling AcpiEvaluate Object twice. 6293 6294Added support for ECDT. This allows the use of the Embedded 6295 6296Controller before the namespace has been fully initialized, which 6297is necessary for ACPI 2.0 support, and for some laptops to 6298initialize properly. (Laptops using ECDT are still rare, so only 6299limited testing was performed of the added functionality.) 6300 6301Fixed memory leaks in the EC driver. 6302 6303Eliminated a brittle code structure in acpi_bus_init(). 6304 6305Eliminated the acpi_evaluate() helper function in utils.c. It is 6306no longer needed since acpi_evaluate_object can optionally 6307allocate memory for the return object. 6308 6309Implemented fix for keyboard hang when getting battery readings on 6310some systems (Stephen White) 6311 6312PCI IRQ routing update (Dominik Brodowski) 6313 6314Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 6315support 6316 6317---------------------------------------- 631811 June 2002. Summary of changes for this release. 6319 6320 63211) ACPI CA Core Subsystem Version 20020611: 6322 6323Fixed a reported problem where constants such as Zero and One 6324appearing within _PRT packages were not handled correctly within 6325the resource manager code. Originally reported against the ASL 6326compiler because the code generator now optimizes integers to 6327their minimal AML representation (i.e. AML constants if possible.) 6328The _PRT code now handles all AML constant opcodes correctly 6329(Zero, One, Ones, Revision). 6330 6331Fixed a problem with the Concatenate operator in the AML 6332interpreter where a buffer result object was incorrectly marked as 6333not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 6334 6335All package sub-objects are now fully resolved before they are 6336returned from the external ACPI interfaces. This means that name 6337strings are resolved to object handles, and constant operators 6338(Zero, One, Ones, Revision) are resolved to Integers. 6339 6340Implemented immediate resolution of the AML Constant opcodes 6341(Zero, One, Ones, Revision) to Integer objects upon detection 6342within the AML stream. This has simplified and reduced the 6343generated code size of the subsystem by eliminating about 10 6344switch statements for these constants (which previously were 6345contained in Reference objects.) The complicating issues are that 6346the Zero opcode is used as a "placeholder" for unspecified 6347optional target operands and stores to constants are defined to be 6348no-ops. 6349 6350Code and Data Size: Current core subsystem library sizes are shown 6351below. These are the code and data sizes for the acpica.lib 6352produced by the Microsoft Visual C++ 6.0 compiler, and these 6353values do not include any ACPI driver or OSPM code. The debug 6354version of the code includes the debug output trace mechanism and 6355has a larger code and data size. Note that these values will vary 6356depending on the efficiency of the compiler and the compiler 6357options used during generation. 6358 6359 Previous Release 6360 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 6361 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 6362 Current Release: 6363 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 6364 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 6365 6366 63672) Linux 6368 6369 6370Added preliminary support for obtaining _TRA data for PCI root 6371bridges (Bjorn Helgaas). 6372 6373 63743) iASL Compiler Version X2046: 6375 6376Fixed a problem where the "_DDN" reserved name was defined to be a 6377control method with one argument. There are no arguments, and 6378_DDN does not have to be a control method. 6379 6380Fixed a problem with the Linux version of the compiler where the 6381source lines printed with error messages were the wrong lines. 6382This turned out to be the "LF versus CR/LF" difference between 6383Windows and Unix. This appears to be the longstanding issue 6384concerning listing output and error messages. 6385 6386Fixed a problem with the Linux version of compiler where opcode 6387names within error messages were wrong. This was caused by a 6388slight difference in the output of the Flex tool on Linux versus 6389Windows. 6390 6391Fixed a problem with the Linux compiler where the hex output files 6392contained some garbage data caused by an internal buffer overrun. 6393 6394 6395---------------------------------------- 639617 May 2002. Summary of changes for this release. 6397 6398 63991) ACPI CA Core Subsystem Version 20020517: 6400 6401Implemented a workaround to an BIOS bug discovered on the HP 6402OmniBook where the FADT revision number and the table size are 6403inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 6404behavior is to fallback to using only the ACPI 1.0 fields of the 6405FADT if the table is too small to be a ACPI 2.0 table as claimed 6406by the revision number. Although this is a BIOS bug, this is a 6407case where the workaround is simple enough and with no side 6408effects, so it seemed prudent to add it. A warning message is 6409issued, however. 6410 6411Implemented minimum size checks for the fixed-length ACPI tables - 6412- the FADT and FACS, as well as consistency checks between the 6413revision number and the table size. 6414 6415Fixed a reported problem in the table override support where the 6416new table pointer was incorrectly treated as a physical address 6417instead of a logical address. 6418 6419Eliminated the use of the AE_AML_ERROR exception and replaced it 6420with more descriptive codes. 6421 6422Fixed a problem where an exception would occur if an ASL Field was 6423defined with no named Field Units underneath it (used by some 6424index fields). 6425 6426Code and Data Size: Current core subsystem library sizes are shown 6427below. These are the code and data sizes for the acpica.lib 6428produced by the Microsoft Visual C++ 6.0 compiler, and these 6429values do not include any ACPI driver or OSPM code. The debug 6430version of the code includes the debug output trace mechanism and 6431has a larger code and data size. Note that these values will vary 6432depending on the efficiency of the compiler and the compiler 6433options used during generation. 6434 6435 Previous Release 6436 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 6437 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 6438 Current Release: 6439 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 6440 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 6441 6442 6443 64442) Linux 6445 6446Much work done on ACPI init (MADT and PCI IRQ routing support). 6447(Paul D. and Dominik Brodowski) 6448 6449Fix PCI IRQ-related panic on boot (Sam Revitch) 6450 6451Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 6452 6453Fix "MHz" typo (Dominik Brodowski) 6454 6455Fix RTC year 2000 issue (Dominik Brodowski) 6456 6457Preclude multiple button proc entries (Eric Brunet) 6458 6459Moved arch-specific code out of include/platform/aclinux.h 6460 64613) iASL Compiler Version X2044: 6462 6463Implemented error checking for the string used in the EISAID macro 6464(Usually used in the definition of the _HID object.) The code now 6465strictly enforces the PnP format - exactly 7 characters, 3 6466uppercase letters and 4 hex digits. 6467 6468If a raw string is used in the definition of the _HID object 6469(instead of the EISAID macro), the string must contain all 6470alphanumeric characters (e.g., "*PNP0011" is not allowed because 6471of the asterisk.) 6472 6473Implemented checking for invalid use of ACPI reserved names for 6474most of the name creation operators (Name, Device, Event, Mutex, 6475OperationRegion, PowerResource, Processor, and ThermalZone.) 6476Previously, this check was only performed for control methods. 6477 6478Implemented an additional check on the Name operator to emit an 6479error if a reserved name that must be implemented in ASL as a 6480control method is used. We know that a reserved name must be a 6481method if it is defined with input arguments. 6482 6483The warning emitted when a namespace object reference is not found 6484during the cross reference phase has been changed into an error. 6485The "External" directive should be used for names defined in other 6486modules. 6487 6488 64894) Tools and Utilities 6490 6491The 16-bit tools (adump16 and aexec16) have been regenerated and 6492tested. 6493 6494Fixed a problem with the output of both acpidump and adump16 where 6495the indentation of closing parentheses and brackets was not 6496 6497aligned properly with the parent block. 6498 6499 6500---------------------------------------- 650103 May 2002. Summary of changes for this release. 6502 6503 65041) ACPI CA Core Subsystem Version 20020503: 6505 6506Added support a new OSL interface that allows the host operating 6507 6508system software to override the DSDT found in the firmware - 6509AcpiOsTableOverride. With this interface, the OSL can examine the 6510version of the firmware DSDT and replace it with a different one 6511if desired. 6512 6513Added new external interfaces for accessing ACPI registers from 6514device drivers and other system software - AcpiGetRegister and 6515AcpiSetRegister. This was simply an externalization of the 6516existing AcpiHwBitRegister interfaces. 6517 6518Fixed a regression introduced in the previous build where the 6519ASL/AML CreateField operator always returned an error, 6520"destination must be a NS Node". 6521 6522Extended the maximum time (before failure) to successfully enable 6523ACPI mode to 3 seconds. 6524 6525Code and Data Size: Current core subsystem library sizes are shown 6526below. These are the code and data sizes for the acpica.lib 6527produced by the Microsoft Visual C++ 6.0 compiler, and these 6528values do not include any ACPI driver or OSPM code. The debug 6529version of the code includes the debug output trace mechanism and 6530has a larger code and data size. Note that these values will vary 6531depending on the efficiency of the compiler and the compiler 6532options used during generation. 6533 6534 Previous Release 6535 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 6536 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 6537 Current Release: 6538 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 6539 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 6540 6541 65422) Linux 6543 6544Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 6545free. While 3 out of 4 of our in-house systems work fine, the last 6546one still hangs when testing the LAPIC timer. 6547 6548Renamed many files in 2.5 kernel release to omit "acpi_" from the 6549name. 6550 6551Added warning on boot for Presario 711FR. 6552 6553Sleep improvements (Pavel Machek) 6554 6555ACPI can now be built without CONFIG_PCI enabled. 6556 6557IA64: Fixed memory map functions (JI Lee) 6558 6559 65603) iASL Compiler Version X2043: 6561 6562Added support to allow the compiler to be integrated into the MS 6563VC++ development environment for one-button compilation of single 6564files or entire projects -- with error-to-source-line mapping. 6565 6566Implemented support for compile-time constant folding for the 6567Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 6568specification. This allows the ASL writer to use expressions 6569instead of Integer/Buffer/String constants in terms that must 6570evaluate to constants at compile time and will also simplify the 6571emitted AML in any such sub-expressions that can be folded 6572(evaluated at compile-time.) This increases the size of the 6573compiler significantly because a portion of the ACPI CA AML 6574interpreter is included within the compiler in order to pre- 6575evaluate constant expressions. 6576 6577 6578Fixed a problem with the "Unicode" ASL macro that caused the 6579compiler to fault. (This macro is used in conjunction with the 6580_STR reserved name.) 6581 6582Implemented an AML opcode optimization to use the Zero, One, and 6583Ones opcodes where possible to further reduce the size of integer 6584constants and thus reduce the overall size of the generated AML 6585code. 6586 6587Implemented error checking for new reserved terms for ACPI version 65882.0A. 6589 6590Implemented the -qr option to display the current list of ACPI 6591reserved names known to the compiler. 6592 6593Implemented the -qc option to display the current list of ASL 6594operators that are allowed within constant expressions and can 6595therefore be folded at compile time if the operands are constants. 6596 6597 65984) Documentation 6599 6600Updated the Programmer's Reference for new interfaces, data types, 6601and memory allocation model options. 6602 6603Updated the iASL Compiler User Reference to apply new format and 6604add information about new features and options. 6605 6606---------------------------------------- 660719 April 2002. Summary of changes for this release. 6608 66091) ACPI CA Core Subsystem Version 20020419: 6610 6611The source code base for the Core Subsystem has been completely 6612cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 6613versions. The Lint option files used are included in the 6614/acpi/generate/lint directory. 6615 6616Implemented enhanced status/error checking across the entire 6617Hardware manager subsystem. Any hardware errors (reported from 6618the OSL) are now bubbled up and will abort a running control 6619method. 6620 6621 6622Fixed a problem where the per-ACPI-table integer width (32 or 64) 6623was stored only with control method nodes, causing a fault when 6624non-control method code was executed during table loading. The 6625solution implemented uses a global variable to indicate table 6626width across the entire ACPI subsystem. Therefore, ACPI CA does 6627not support mixed integer widths across different ACPI tables 6628(DSDT, SSDT). 6629 6630Fixed a problem where NULL extended fields (X fields) in an ACPI 66312.0 ACPI FADT caused the table load to fail. Although the 6632existing ACPI specification is a bit fuzzy on this topic, the new 6633behavior is to fall back on a ACPI 1.0 field if the corresponding 6634ACPI 2.0 X field is zero (even though the table revision indicates 6635a full ACPI 2.0 table.) The ACPI specification will be updated to 6636clarify this issue. 6637 6638Fixed a problem with the SystemMemory operation region handler 6639where memory was always accessed byte-wise even if the AML- 6640specified access width was larger than a byte. This caused 6641problems on systems with memory-mapped I/O. Memory is now 6642accessed with the width specified. On systems that do not support 6643non-aligned transfers, a check is made to guarantee proper address 6644alignment before proceeding in order to avoid an AML-caused 6645alignment fault within the kernel. 6646 6647 6648Fixed a problem with the ExtendedIrq resource where only one byte 6649of the 4-byte Irq field was extracted. 6650 6651Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 6652function was out of date and required a rewrite. 6653 6654Code and Data Size: Current core subsystem library sizes are shown 6655below. These are the code and data sizes for the acpica.lib 6656produced by the Microsoft Visual C++ 6.0 compiler, and these 6657values do not include any ACPI driver or OSPM code. The debug 6658version of the code includes the debug output trace mechanism and 6659has a larger code and data size. Note that these values will vary 6660depending on the efficiency of the compiler and the compiler 6661options used during generation. 6662 6663 Previous Release 6664 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 6665 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 6666 Current Release: 6667 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 6668 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 6669 6670 66712) Linux 6672 6673PCI IRQ routing fixes (Dominik Brodowski) 6674 6675 66763) iASL Compiler Version X2042: 6677 6678Implemented an additional compile-time error check for a field 6679unit whose size + minimum access width would cause a run-time 6680access beyond the end-of-region. Previously, only the field size 6681itself was checked. 6682 6683The Core subsystem and iASL compiler now share a common parse 6684object in preparation for compile-time evaluation of the type 66853/4/5 ASL operators. 6686 6687 6688---------------------------------------- 6689Summary of changes for this release: 03_29_02 6690 66911) ACPI CA Core Subsystem Version 20020329: 6692 6693Implemented support for late evaluation of TermArg operands to 6694Buffer and Package objects. This allows complex expressions to be 6695used in the declarations of these object types. 6696 6697Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 66981.0, if the field was larger than 32 bits, it was returned as a 6699buffer - otherwise it was returned as an integer. In ACPI 2.0, 6700the field is returned as a buffer only if the field is larger than 670164 bits. The TableRevision is now considered when making this 6702conversion to avoid incompatibility with existing ASL code. 6703 6704Implemented logical addressing for AcpiOsGetRootPointer. This 6705allows an RSDP with either a logical or physical address. With 6706this support, the host OS can now override all ACPI tables with 6707one logical RSDP. Includes implementation of "typed" pointer 6708support to allow a common data type for both physical and logical 6709pointers internally. This required a change to the 6710AcpiOsGetRootPointer interface. 6711 6712Implemented the use of ACPI 2.0 Generic Address Structures for all 6713GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 6714mapped I/O for these ACPI features. 6715 6716Initialization now ignores not only non-required tables (All 6717tables other than the FADT, FACS, DSDT, and SSDTs), but also does 6718not validate the table headers of unrecognized tables. 6719 6720Fixed a problem where a notify handler could only be 6721installed/removed on an object of type Device. All "notify" 6722 6723objects are now supported -- Devices, Processor, Power, and 6724Thermal. 6725 6726Removed most verbosity from the ACPI_DB_INFO debug level. Only 6727critical information is returned when this debug level is enabled. 6728 6729Code and Data Size: Current core subsystem library sizes are shown 6730below. These are the code and data sizes for the acpica.lib 6731produced by the Microsoft Visual C++ 6.0 compiler, and these 6732values do not include any ACPI driver or OSPM code. The debug 6733version of the code includes the debug output trace mechanism and 6734has a larger code and data size. Note that these values will vary 6735depending on the efficiency of the compiler and the compiler 6736options used during generation. 6737 6738 Previous Release 6739 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 6740 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 6741 Current Release: 6742 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 6743 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 6744 6745 67462) Linux: 6747 6748The processor driver (acpi_processor.c) now fully supports ACPI 67492.0-based processor performance control (e.g. Intel(R) 6750SpeedStep(TM) technology) Note that older laptops that only have 6751the Intel "applet" interface are not supported through this. The 6752'limit' and 'performance' interface (/proc) are fully functional. 6753[Note that basic policy for controlling performance state 6754transitions will be included in the next version of ospmd.] The 6755idle handler was modified to more aggressively use C2, and PIIX4 6756errata handling underwent a complete overhaul (big thanks to 6757Dominik Brodowski). 6758 6759Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 6760based devices in the ACPI namespace are now dynamically bound 6761(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 6762This allows, among other things, ACPI to resolve bus numbers for 6763subordinate PCI bridges. 6764 6765Enhanced PCI IRQ routing to get the proper bus number for _PRT 6766entries defined underneath PCI bridges. 6767 6768Added IBM 600E to bad bios list due to invalid _ADR value for 6769PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 6770 6771In the process of adding full MADT support (e.g. IOAPIC) for IA32 6772(acpi.c, mpparse.c) -- stay tuned. 6773 6774Added back visual differentiation between fixed-feature and 6775control-method buttons in dmesg. Buttons are also subtyped (e.g. 6776button/power/PWRF) to simplify button identification. 6777 6778We no longer use -Wno-unused when compiling debug. Please ignore 6779any "_THIS_MODULE defined but not used" messages. 6780 6781Can now shut down the system using "magic sysrq" key. 6782 6783 67843) iASL Compiler version 2041: 6785 6786Fixed a problem where conversion errors for hex/octal/decimal 6787constants were not reported. 6788 6789Implemented a fix for the General Register template Address field. 6790This field was 8 bits when it should be 64. 6791 6792Fixed a problem where errors/warnings were no longer being emitted 6793within the listing output file. 6794 6795Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 6796exactly 4 characters, alphanumeric only. 6797 6798 6799 6800 6801---------------------------------------- 6802Summary of changes for this release: 03_08_02 6803 6804 68051) ACPI CA Core Subsystem Version 20020308: 6806 6807Fixed a problem with AML Fields where the use of the "AccessAny" 6808keyword could cause an interpreter error due to attempting to read 6809or write beyond the end of the parent Operation Region. 6810 6811Fixed a problem in the SystemMemory Operation Region handler where 6812an attempt was made to map memory beyond the end of the region. 6813This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 6814errors on some Linux systems. 6815 6816Fixed a problem where the interpreter/namespace "search to root" 6817algorithm was not functioning for some object types. Relaxed the 6818internal restriction on the search to allow upsearches for all 6819external object types as well as most internal types. 6820 6821 68222) Linux: 6823 6824We now use safe_halt() macro versus individual calls to sti | hlt. 6825 6826Writing to the processor limit interface should now work. "echo 1" 6827will increase the limit, 2 will decrease, and 0 will reset to the 6828 6829default. 6830 6831 68323) ASL compiler: 6833 6834Fixed segfault on Linux version. 6835 6836 6837---------------------------------------- 6838Summary of changes for this release: 02_25_02 6839 68401) ACPI CA Core Subsystem: 6841 6842 6843Fixed a problem where the GPE bit masks were not initialized 6844properly, causing erratic GPE behavior. 6845 6846Implemented limited support for multiple calling conventions. The 6847code can be generated with either the VPL (variable parameter 6848list, or "C") convention, or the FPL (fixed parameter list, or 6849"Pascal") convention. The core subsystem is about 3.4% smaller 6850when generated with FPL. 6851 6852 68532) Linux 6854 6855Re-add some /proc/acpi/event functionality that was lost during 6856the rewrite 6857 6858Resolved issue with /proc events for fixed-feature buttons showing 6859up as the system device. 6860 6861Fixed checks on C2/C3 latencies to be inclusive of maximum values. 6862 6863Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 6864 6865Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 6866 6867Fixed limit interface & usage to fix bugs with passive cooling 6868hysterisis. 6869 6870Restructured PRT support. 6871 6872 6873---------------------------------------- 6874Summary of changes for this label: 02_14_02 6875 6876 68771) ACPI CA Core Subsystem: 6878 6879Implemented support in AcpiLoadTable to allow loading of FACS and 6880FADT tables. 6881 6882Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 6883been removed. All 64-bit platforms should be migrated to the ACPI 68842.0 tables. The actbl71.h header has been removed from the source 6885tree. 6886 6887All C macros defined within the subsystem have been prefixed with 6888"ACPI_" to avoid collision with other system include files. 6889 6890Removed the return value for the two AcpiOsPrint interfaces, since 6891it is never used and causes lint warnings for ignoring the return 6892value. 6893 6894Added error checking to all internal mutex acquire and release 6895calls. Although a failure from one of these interfaces is 6896probably a fatal system error, these checks will cause the 6897immediate abort of the currently executing method or interface. 6898 6899Fixed a problem where the AcpiSetCurrentResources interface could 6900fault. This was a side effect of the deployment of the new memory 6901allocation model. 6902 6903Fixed a couple of problems with the Global Lock support introduced 6904in the last major build. The "common" (1.0/2.0) internal FACS was 6905being overwritten with the FACS signature and clobbering the 6906Global Lock pointer. Also, the actual firmware FACS was being 6907unmapped after construction of the "common" FACS, preventing 6908access to the actual Global Lock field within it. The "common" 6909internal FACS is no longer installed as an actual ACPI table; it 6910is used simply as a global. 6911 6912Code and Data Size: Current core subsystem library sizes are shown 6913below. These are the code and data sizes for the acpica.lib 6914produced by the Microsoft Visual C++ 6.0 compiler, and these 6915values do not include any ACPI driver or OSPM code. The debug 6916version of the code includes the debug output trace mechanism and 6917has a larger code and data size. Note that these values will vary 6918depending on the efficiency of the compiler and the compiler 6919options used during generation. 6920 6921 Previous Release (02_07_01) 6922 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 6923 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 6924 Current Release: 6925 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 6926 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 6927 6928 69292) Linux 6930 6931Updated Linux-specific code for core macro and OSL interface 6932changes described above. 6933 6934Improved /proc/acpi/event. It now can be opened only once and has 6935proper poll functionality. 6936 6937Fixed and restructured power management (acpi_bus). 6938 6939Only create /proc "view by type" when devices of that class exist. 6940 6941Fixed "charging/discharging" bug (and others) in acpi_battery. 6942 6943Improved thermal zone code. 6944 6945 69463) ASL Compiler, version X2039: 6947 6948 6949Implemented the new compiler restriction on ASL String hex/octal 6950escapes to non-null, ASCII values. An error results if an invalid 6951value is used. (This will require an ACPI 2.0 specification 6952change.) 6953 6954AML object labels that are output to the optional C and ASM source 6955are now prefixed with both the ACPI table signature and table ID 6956to help guarantee uniqueness within a large BIOS project. 6957 6958 6959---------------------------------------- 6960Summary of changes for this label: 02_01_02 6961 69621) ACPI CA Core Subsystem: 6963 6964ACPI 2.0 support is complete in the entire Core Subsystem and the 6965ASL compiler. All new ACPI 2.0 operators are implemented and all 6966other changes for ACPI 2.0 support are complete. With 6967simultaneous code and data optimizations throughout the subsystem, 6968ACPI 2.0 support has been implemented with almost no additional 6969cost in terms of code and data size. 6970 6971Implemented a new mechanism for allocation of return buffers. If 6972the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 6973be allocated on behalf of the caller. Consolidated all return 6974buffer validation and allocation to a common procedure. Return 6975buffers will be allocated via the primary OSL allocation interface 6976since it appears that a separate pool is not needed by most users. 6977If a separate pool is required for these buffers, the caller can 6978still use the original mechanism and pre-allocate the buffer(s). 6979 6980Implemented support for string operands within the DerefOf 6981operator. 6982 6983Restructured the Hardware and Event managers to be table driven, 6984simplifying the source code and reducing the amount of generated 6985code. 6986 6987Split the common read/write low-level ACPI register bitfield 6988procedure into a separate read and write, simplifying the code 6989considerably. 6990 6991Obsoleted the AcpiOsCallocate OSL interface. This interface was 6992used only a handful of times and didn't have enough critical mass 6993for a separate interface. Replaced with a common calloc procedure 6994in the core. 6995 6996Fixed a reported problem with the GPE number mapping mechanism 6997that allows GPE1 numbers to be non-contiguous with GPE0. 6998Reorganized the GPE information and shrunk a large array that was 6999originally large enough to hold info for all possible GPEs (256) 7000to simply large enough to hold all GPEs up to the largest GPE 7001number on the machine. 7002 7003Fixed a reported problem with resource structure alignment on 64- 7004bit platforms. 7005 7006Changed the AcpiEnableEvent and AcpiDisableEvent external 7007interfaces to not require any flags for the common case of 7008enabling/disabling a GPE. 7009 7010Implemented support to allow a "Notify" on a Processor object. 7011 7012Most TBDs in comments within the source code have been resolved 7013and eliminated. 7014 7015 7016Fixed a problem in the interpreter where a standalone parent 7017prefix (^) was not handled correctly in the interpreter and 7018debugger. 7019 7020Removed obsolete and unnecessary GPE save/restore code. 7021 7022Implemented Field support in the ASL Load operator. This allows a 7023table to be loaded from a named field, in addition to loading a 7024table directly from an Operation Region. 7025 7026Implemented timeout and handle support in the external Global Lock 7027interfaces. 7028 7029Fixed a problem in the AcpiDump utility where pathnames were no 7030longer being generated correctly during the dump of named objects. 7031 7032Modified the AML debugger to give a full display of if/while 7033predicates instead of just one AML opcode at a time. (The 7034predicate can have several nested ASL statements.) The old method 7035was confusing during single stepping. 7036 7037Code and Data Size: Current core subsystem library sizes are shown 7038below. These are the code and data sizes for the acpica.lib 7039produced by the Microsoft Visual C++ 6.0 compiler, and these 7040values do not include any ACPI driver or OSPM code. The debug 7041version of the code includes the debug output trace mechanism and 7042has a larger code and data size. Note that these values will vary 7043depending on the efficiency of the compiler and the compiler 7044options used during generation. 7045 7046 Previous Release (12_18_01) 7047 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 7048 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 7049 Current Release: 7050 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 7051 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 7052 70532) Linux 7054 7055 Implemented fix for PIIX reverse throttling errata (Processor 7056driver) 7057 7058Added new Limit interface (Processor and Thermal drivers) 7059 7060New thermal policy (Thermal driver) 7061 7062Many updates to /proc 7063 7064Battery "low" event support (Battery driver) 7065 7066Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 7067 7068IA32 - IA64 initialization unification, no longer experimental 7069 7070Menuconfig options redesigned 7071 70723) ASL Compiler, version X2037: 7073 7074Implemented several new output features to simplify integration of 7075AML code into firmware: 1) Output the AML in C source code with 7076labels for each named ASL object. The original ASL source code 7077is interleaved as C comments. 2) Output the AML in ASM source code 7078with labels and interleaved ASL source. 3) Output the AML in 7079raw hex table form, in either C or ASM. 7080 7081Implemented support for optional string parameters to the 7082LoadTable operator. 7083 7084Completed support for embedded escape sequences within string 7085literals. The compiler now supports all single character escapes 7086as well as the Octal and Hex escapes. Note: the insertion of a 7087null byte into a string literal (via the hex/octal escape) causes 7088the string to be immediately terminated. A warning is issued. 7089 7090Fixed a problem where incorrect AML was generated for the case 7091where an ASL namepath consists of a single parent prefix ( 7092 7093) with no trailing name segments. 7094 7095The compiler has been successfully generated with a 64-bit C 7096compiler. 7097 7098 7099 7100 7101---------------------------------------- 7102Summary of changes for this label: 12_18_01 7103 71041) Linux 7105 7106Enhanced blacklist with reason and severity fields. Any table's 7107signature may now be used to identify a blacklisted system. 7108 7109Call _PIC control method to inform the firmware which interrupt 7110model the OS is using. Turn on any disabled link devices. 7111 7112Cleaned up busmgr /proc error handling (Andreas Dilger) 7113 7114 2) ACPI CA Core Subsystem: 7115 7116Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 7117while loop) 7118 7119Completed implementation of the ACPI 2.0 "Continue", 7120"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 7121operators. All new ACPI 2.0 operators are now implemented in both 7122the ASL compiler and the AML interpreter. The only remaining ACPI 71232.0 task is support for the String data type in the DerefOf 7124operator. Fixed a problem with AcquireMutex where the status code 7125was lost if the caller had to actually wait for the mutex. 7126 7127Increased the maximum ASL Field size from 64K bits to 4G bits. 7128 7129Completed implementation of the external Global Lock interfaces -- 7130AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 7131Handler parameters were added. 7132 7133Completed another pass at removing warnings and issues when 7134compiling with 64-bit compilers. The code now compiles cleanly 7135with the Intel 64-bit C/C++ compiler. Most notably, the pointer 7136add and subtract (diff) macros have changed considerably. 7137 7138 7139Created and deployed a new ACPI_SIZE type that is 64-bits wide on 714064-bit platforms, 32-bits on all others. This type is used 7141wherever memory allocation and/or the C sizeof() operator is used, 7142and affects the OSL memory allocation interfaces AcpiOsAllocate 7143and AcpiOsCallocate. 7144 7145Implemented sticky user breakpoints in the AML debugger. 7146 7147Code and Data Size: Current core subsystem library sizes are shown 7148below. These are the code and data sizes for the acpica.lib 7149produced by the Microsoft Visual C++ 6.0 compiler, and these 7150values do not include any ACPI driver or OSPM code. The debug 7151version of the code includes the debug output trace mechanism and 7152has a larger code and data size. Note that these values will vary 7153depending on the efficiency of the compiler and the compiler 7154options used during generation. 7155 7156 Previous Release (12_05_01) 7157 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 7158 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 7159 Current Release: 7160 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 7161 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 7162 7163 3) ASL Compiler, version X2034: 7164 7165Now checks for (and generates an error if detected) the use of a 7166Break or Continue statement without an enclosing While statement. 7167 7168 7169Successfully generated the compiler with the Intel 64-bit C 7170compiler. 7171 7172 ---------------------------------------- 7173Summary of changes for this label: 12_05_01 7174 7175 1) ACPI CA Core Subsystem: 7176 7177The ACPI 2.0 CopyObject operator is fully implemented. This 7178operator creates a new copy of an object (and is also used to 7179bypass the "implicit conversion" mechanism of the Store operator.) 7180 7181The ACPI 2.0 semantics for the SizeOf operator are fully 7182implemented. The change is that performing a SizeOf on a 7183reference object causes an automatic dereference of the object to 7184tha actual value before the size is evaluated. This behavior was 7185undefined in ACPI 1.0. 7186 7187The ACPI 2.0 semantics for the Extended IRQ resource descriptor 7188have been implemented. The interrupt polarity and mode are now 7189independently set. 7190 7191Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 7192appearing in Package objects were not properly converted to 7193integers when the internal Package was converted to an external 7194object (via the AcpiEvaluateObject interface.) 7195 7196Fixed a problem with the namespace object deletion mechanism for 7197objects created by control methods. There were two parts to this 7198problem: 1) Objects created during the initialization phase method 7199parse were not being deleted, and 2) The object owner ID mechanism 7200to track objects was broken. 7201 7202Fixed a problem where the use of the ASL Scope operator within a 7203control method would result in an invalid opcode exception. 7204 7205Fixed a problem introduced in the previous label where the buffer 7206length required for the _PRT structure was not being returned 7207correctly. 7208 7209Code and Data Size: Current core subsystem library sizes are shown 7210below. These are the code and data sizes for the acpica.lib 7211produced by the Microsoft Visual C++ 6.0 compiler, and these 7212values do not include any ACPI driver or OSPM code. The debug 7213version of the code includes the debug output trace mechanism and 7214has a larger code and data size. Note that these values will vary 7215depending on the efficiency of the compiler and the compiler 7216options used during generation. 7217 7218 Previous Release (11_20_01) 7219 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 7220 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 7221 7222 Current Release: 7223 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 7224 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 7225 7226 2) Linux: 7227 7228Updated all files to apply cleanly against 2.4.16. 7229 7230Added basic PCI Interrupt Routing Table (PRT) support for IA32 7231(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 7232version supports both static and dyanmic PRT entries, but dynamic 7233entries are treated as if they were static (not yet 7234reconfigurable). Architecture- specific code to use this data is 7235absent on IA32 but should be available shortly. 7236 7237Changed the initialization sequence to start the ACPI interpreter 7238(acpi_init) prior to initialization of the PCI driver (pci_init) 7239in init/main.c. This ordering is required to support PRT and 7240facilitate other (future) enhancement. A side effect is that the 7241ACPI bus driver and certain device drivers can no longer be loaded 7242as modules. 7243 7244Modified the 'make menuconfig' options to allow PCI Interrupt 7245Routing support to be included without the ACPI Bus and other 7246device drivers. 7247 7248 3) ASL Compiler, version X2033: 7249 7250Fixed some issues with the use of the new CopyObject and 7251DataTableRegion operators. Both are fully functional. 7252 7253 ---------------------------------------- 7254Summary of changes for this label: 11_20_01 7255 7256 20 November 2001. Summary of changes for this release. 7257 7258 1) ACPI CA Core Subsystem: 7259 7260Updated Index support to match ACPI 2.0 semantics. Storing a 7261Integer, String, or Buffer to an Index of a Buffer will store only 7262the least-significant byte of the source to the Indexed buffer 7263byte. Multiple writes are not performed. 7264 7265Fixed a problem where the access type used in an AccessAs ASL 7266operator was not recorded correctly into the field object. 7267 7268Fixed a problem where ASL Event objects were created in a 7269signalled state. Events are now created in an unsignalled state. 7270 7271The internal object cache is now purged after table loading and 7272initialization to reduce the use of dynamic kernel memory -- on 7273the assumption that object use is greatest during the parse phase 7274of the entire table (versus the run-time use of individual control 7275methods.) 7276 7277ACPI 2.0 variable-length packages are now fully operational. 7278 7279Code and Data Size: Code and Data optimizations have permitted new 7280feature development with an actual reduction in the library size. 7281Current core subsystem library sizes are shown below. These are 7282the code and data sizes for the acpica.lib produced by the 7283Microsoft Visual C++ 6.0 compiler, and these values do not include 7284any ACPI driver or OSPM code. The debug version of the code 7285includes the debug output trace mechanism and has a larger code 7286and data size. Note that these values will vary depending on the 7287efficiency of the compiler and the compiler options used during 7288generation. 7289 7290 Previous Release (11_09_01): 7291 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 7292 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 7293 7294 Current Release: 7295 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 7296 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 7297 7298 2) Linux: 7299 7300Enhanced the ACPI boot-time initialization code to allow the use 7301of Local APIC tables for processor enumeration on IA-32, and to 7302pave the way for a fully MPS-free boot (on SMP systems) in the 7303near future. This functionality replaces 7304arch/i386/kernel/acpitables.c, which was introduced in an earlier 73052.4.15-preX release. To enable this feature you must add 7306"acpi_boot=on" to the kernel command line -- see the help entry 7307for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 7308the works... 7309 7310Restructured the configuration options to allow boot-time table 7311parsing support without inclusion of the ACPI Interpreter (and 7312other) code. 7313 7314NOTE: This release does not include fixes for the reported events, 7315power-down, and thermal passive cooling issues (coming soon). 7316 7317 3) ASL Compiler: 7318 7319Added additional typechecking for Fields within restricted access 7320Operation Regions. All fields within EC and CMOS regions must be 7321declared with ByteAcc. All fields withing SMBus regions must be 7322declared with the BufferAcc access type. 7323 7324Fixed a problem where the listing file output of control methods 7325no longer interleaved the actual AML code with the ASL source 7326code. 7327 7328 7329 7330 7331---------------------------------------- 7332Summary of changes for this label: 11_09_01 7333 73341) ACPI CA Core Subsystem: 7335 7336Implemented ACPI 2.0-defined support for writes to fields with a 7337Buffer, String, or Integer source operand that is smaller than the 7338target field. In these cases, the source operand is zero-extended 7339to fill the target field. 7340 7341Fixed a problem where a Field starting bit offset (within the 7342parent operation region) was calculated incorrectly if the 7343 7344alignment of the field differed from the access width. This 7345affected CreateWordField, CreateDwordField, CreateQwordField, and 7346possibly other fields that use the "AccessAny" keyword. 7347 7348Fixed a problem introduced in the 11_02_01 release where indirect 7349stores through method arguments did not operate correctly. 7350 73512) Linux: 7352 7353Implemented boot-time ACPI table parsing support 7354(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 7355facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 7356legacy BIOS interfaces (e.g. MPS) for the configuration of system 7357processors, memory, and interrupts during setup_arch(). Note that 7358this patch does not include the required architecture-specific 7359changes required to apply this information -- subsequent patches 7360will be posted for both IA32 and IA64 to achieve this. 7361 7362Added low-level sleep support for IA32 platforms, courtesy of Pat 7363Mochel. This allows IA32 systems to transition to/from various 7364sleeping states (e.g. S1, S3), although the lack of a centralized 7365driver model and power-manageable drivers will prevent its 7366(successful) use on most systems. 7367 7368Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 7369submenu, unified IA32 and IA64 options, added new "Boot using ACPI 7370tables" option, etc. 7371 7372Increased the default timeout for the EC driver from 1ms to 10ms 7373(1000 cycles of 10us) to try to address AE_TIME errors during EC 7374transactions. 7375 7376 ---------------------------------------- 7377Summary of changes for this label: 11_02_01 7378 73791) ACPI CA Core Subsystem: 7380 7381ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 7382(QWordAcc keyword). All ACPI 2.0 64-bit support is now 7383implemented. 7384 7385OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 7386changes to support ACPI 2.0 Qword field access. Read/Write 7387PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 7388accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 7389the value parameter for the address space handler interface is now 7390an ACPI_INTEGER. OSL implementations of these interfaces must now 7391handle the case where the Width parameter is 64. 7392 7393Index Fields: Fixed a problem where unaligned bit assembly and 7394disassembly for IndexFields was not supported correctly. 7395 7396Index and Bank Fields: Nested Index and Bank Fields are now 7397supported. During field access, a check is performed to ensure 7398that the value written to an Index or Bank register is not out of 7399the range of the register. The Index (or Bank) register is 7400written before each access to the field data. Future support will 7401include allowing individual IndexFields to be wider than the 7402DataRegister width. 7403 7404Fields: Fixed a problem where the AML interpreter was incorrectly 7405attempting to write beyond the end of a Field/OpRegion. This was 7406a boundary case that occurred when a DWORD field was written to a 7407BYTE access OpRegion, forcing multiple writes and causing the 7408interpreter to write one datum too many. 7409 7410Fields: Fixed a problem with Field/OpRegion access where the 7411starting bit address of a field was incorrectly calculated if the 7412current access type was wider than a byte (WordAcc, DwordAcc, or 7413QwordAcc). 7414 7415Fields: Fixed a problem where forward references to individual 7416FieldUnits (individual Field names within a Field definition) were 7417not resolved during the AML table load. 7418 7419Fields: Fixed a problem where forward references from a Field 7420definition to the parent Operation Region definition were not 7421resolved during the AML table load. 7422 7423Fields: Duplicate FieldUnit names within a scope are now detected 7424during AML table load. 7425 7426Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 7427returned an incorrect name for the root node. 7428 7429Code and Data Size: Code and Data optimizations have permitted new 7430feature development with an actual reduction in the library size. 7431Current core subsystem library sizes are shown below. These are 7432the code and data sizes for the acpica.lib produced by the 7433Microsoft Visual C++ 6.0 compiler, and these values do not include 7434any ACPI driver or OSPM code. The debug version of the code 7435includes the debug output trace mechanism and has a larger code 7436and data size. Note that these values will vary depending on the 7437efficiency of the compiler and the compiler options used during 7438generation. 7439 7440 Previous Release (10_18_01): 7441 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 7442 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 7443 7444 Current Release: 7445 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 7446 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 7447 7448 2) Linux: 7449 7450Improved /proc processor output (Pavel Machek) Re-added 7451MODULE_LICENSE("GPL") to all modules. 7452 7453 3) ASL Compiler version X2030: 7454 7455Duplicate FieldUnit names within a scope are now detected and 7456flagged as errors. 7457 7458 4) Documentation: 7459 7460Programmer Reference updated to reflect OSL and address space 7461handler interface changes described above. 7462 7463---------------------------------------- 7464Summary of changes for this label: 10_18_01 7465 7466ACPI CA Core Subsystem: 7467 7468Fixed a problem with the internal object reference count mechanism 7469that occasionally caused premature object deletion. This resolves 7470all of the outstanding problem reports where an object is deleted 7471in the middle of an interpreter evaluation. Although this problem 7472only showed up in rather obscure cases, the solution to the 7473problem involved an adjustment of all reference counts involving 7474objects attached to namespace nodes. 7475 7476Fixed a problem with Field support in the interpreter where 7477writing to an aligned field whose length is an exact multiple (2 7478or greater) of the field access granularity would cause an attempt 7479to write beyond the end of the field. 7480 7481The top level AML opcode execution functions within the 7482interpreter have been renamed with a more meaningful and 7483consistent naming convention. The modules exmonad.c and 7484exdyadic.c were eliminated. New modules are exoparg1.c, 7485exoparg2.c, exoparg3.c, and exoparg6.c. 7486 7487Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 7488 7489Fixed a problem where the AML debugger was causing some internal 7490objects to not be deleted during subsystem termination. 7491 7492Fixed a problem with the external AcpiEvaluateObject interface 7493where the subsystem would fault if the named object to be 7494evaluated refered to a constant such as Zero, Ones, etc. 7495 7496Fixed a problem with IndexFields and BankFields where the 7497subsystem would fault if the index, data, or bank registers were 7498not defined in the same scope as the field itself. 7499 7500Added printf format string checking for compilers that support 7501this feature. Corrected more than 50 instances of issues with 7502format specifiers within invocations of ACPI_DEBUG_PRINT 7503throughout the core subsystem code. 7504 7505The ASL "Revision" operator now returns the ACPI support level 7506implemented in the core - the value "2" since the ACPI 2.0 support 7507is more than 50% implemented. 7508 7509Enhanced the output of the AML debugger "dump namespace" command 7510to output in a more human-readable form. 7511 7512Current core subsystem library code sizes are shown below. These 7513 7514are the code and data sizes for the acpica.lib produced by the 7515Microsoft Visual C++ 6.0 compiler, and these values do not include 7516any ACPI driver or OSPM code. The debug version of the code 7517includes the full debug trace mechanism -- leading to a much 7518 7519larger code and data size. Note that these values will vary 7520depending on the efficiency of the compiler and the compiler 7521options used during generation. 7522 7523 Previous Label (09_20_01): 7524 Non-Debug Version: 65K Code, 5K Data, 70K Total 7525 Debug Version: 138K Code, 58K Data, 196K Total 7526 7527 This Label: 7528 7529 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 7530 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 7531 7532Linux: 7533 7534Implemented a "Bad BIOS Blacklist" to track machines that have 7535known ASL/AML problems. 7536 7537Enhanced the /proc interface for the thermal zone driver and added 7538support for _HOT (the critical suspend trip point). The 'info' 7539file now includes threshold/policy information, and allows setting 7540of _SCP (cooling preference) and _TZP (polling frequency) values 7541to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 7542frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 7543preference to the passive/quiet mode (if supported by the ASL). 7544 7545Implemented a workaround for a gcc bug that resuted in an OOPs 7546when loading the control method battery driver. 7547 7548 ---------------------------------------- 7549Summary of changes for this label: 09_20_01 7550 7551 ACPI CA Core Subsystem: 7552 7553The AcpiEnableEvent and AcpiDisableEvent interfaces have been 7554modified to allow individual GPE levels to be flagged as wake- 7555enabled (i.e., these GPEs are to remain enabled when the platform 7556sleeps.) 7557 7558The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 7559support wake-enabled GPEs. This means that upon entering the 7560sleep state, all GPEs that are not wake-enabled are disabled. 7561When leaving the sleep state, these GPEs are reenabled. 7562 7563A local double-precision divide/modulo module has been added to 7564enhance portability to OS kernels where a 64-bit math library is 7565not available. The new module is "utmath.c". 7566 7567Several optimizations have been made to reduce the use of CPU 7568stack. Originally over 2K, the maximum stack usage is now below 75692K at 1860 bytes (1.82k) 7570 7571Fixed a problem with the AcpiGetFirmwareTable interface where the 7572root table pointer was not mapped into a logical address properly. 7573 7574Fixed a problem where a NULL pointer was being dereferenced in the 7575interpreter code for the ASL Notify operator. 7576 7577Fixed a problem where the use of the ASL Revision operator 7578returned an error. This operator now returns the current version 7579of the ACPI CA core subsystem. 7580 7581Fixed a problem where objects passed as control method parameters 7582to AcpiEvaluateObject were always deleted at method termination. 7583However, these objects may end up being stored into the namespace 7584by the called method. The object reference count mechanism was 7585applied to these objects instead of a force delete. 7586 7587Fixed a problem where static strings or buffers (contained in the 7588AML code) that are declared as package elements within the ASL 7589code could cause a fault because the interpreter would attempt to 7590delete them. These objects are now marked with the "static 7591object" flag to prevent any attempt to delete them. 7592 7593Implemented an interpreter optimization to use operands directly 7594from the state object instead of extracting the operands to local 7595variables. This reduces stack use and code size, and improves 7596performance. 7597 7598The module exxface.c was eliminated as it was an unnecessary extra 7599layer of code. 7600 7601Current core subsystem library code sizes are shown below. These 7602are the code and data sizes for the acpica.lib produced by the 7603Microsoft Visual C++ 6.0 compiler, and these values do not include 7604any ACPI driver or OSPM code. The debug version of the code 7605includes the full debug trace mechanism -- leading to a much 7606larger code and data size. Note that these values will vary 7607depending on the efficiency of the compiler and the compiler 7608options used during generation. 7609 7610 Non-Debug Version: 65K Code, 5K Data, 70K Total 7611(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 7612Total (Previously 195K) 7613 7614Linux: 7615 7616Support for ACPI 2.0 64-bit integers has been added. All ACPI 7617Integer objects are now 64 bits wide 7618 7619All Acpi data types and structures are now in lower case. Only 7620Acpi macros are upper case for differentiation. 7621 7622 Documentation: 7623 7624Changes to the external interfaces as described above. 7625 7626 ---------------------------------------- 7627Summary of changes for this label: 08_31_01 7628 7629 ACPI CA Core Subsystem: 7630 7631A bug with interpreter implementation of the ASL Divide operator 7632was found and fixed. The implicit function return value (not the 7633explicit store operands) was returning the remainder instead of 7634the quotient. This was a longstanding bug and it fixes several 7635known outstanding issues on various platforms. 7636 7637The ACPI_DEBUG_PRINT and function trace entry/exit macros have 7638been further optimized for size. There are 700 invocations of the 7639DEBUG_PRINT macro alone, so each optimization reduces the size of 7640the debug version of the subsystem significantly. 7641 7642A stack trace mechanism has been implemented. The maximum stack 7643usage is about 2K on 32-bit platforms. The debugger command "stat 7644stack" will display the current maximum stack usage. 7645 7646All public symbols and global variables within the subsystem are 7647now prefixed with the string "Acpi". This keeps all of the 7648symbols grouped together in a kernel map, and avoids conflicts 7649with other kernel subsystems. 7650 7651Most of the internal fixed lookup tables have been moved into the 7652code segment via the const operator. 7653 7654Several enhancements have been made to the interpreter to both 7655reduce the code size and improve performance. 7656 7657Current core subsystem library code sizes are shown below. These 7658are the code and data sizes for the acpica.lib produced by the 7659Microsoft Visual C++ 6.0 compiler, and these values do not include 7660any ACPI driver or OSPM code. The debug version of the code 7661includes the full debug trace mechanism which contains over 700 7662invocations of the DEBUG_PRINT macro, 500 function entry macro 7663invocations, and over 900 function exit macro invocations -- 7664leading to a much larger code and data size. Note that these 7665values will vary depending on the efficiency of the compiler and 7666the compiler options used during generation. 7667 7668 Non-Debug Version: 64K Code, 5K Data, 69K Total 7669Debug Version: 137K Code, 58K Data, 195K Total 7670 7671 Linux: 7672 7673Implemented wbinvd() macro, pending a kernel-wide definition. 7674 7675Fixed /proc/acpi/event to handle poll() and short reads. 7676 7677 ASL Compiler, version X2026: 7678 7679Fixed a problem introduced in the previous label where the AML 7680 7681code emitted for package objects produced packages with zero 7682length. 7683 7684 ---------------------------------------- 7685Summary of changes for this label: 08_16_01 7686 7687ACPI CA Core Subsystem: 7688 7689The following ACPI 2.0 ASL operators have been implemented in the 7690AML interpreter (These are already supported by the Intel ASL 7691compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 7692ToBuffer. Support for 64-bit AML constants is implemented in the 7693AML parser, debugger, and disassembler. 7694 7695The internal memory tracking mechanism (leak detection code) has 7696been upgraded to reduce the memory overhead (a separate tracking 7697block is no longer allocated for each memory allocation), and now 7698supports all of the internal object caches. 7699 7700The data structures and code for the internal object caches have 7701been coelesced and optimized so that there is a single cache and 7702memory list data structure and a single group of functions that 7703implement generic cache management. This has reduced the code 7704size in both the debug and release versions of the subsystem. 7705 7706The DEBUG_PRINT macro(s) have been optimized for size and replaced 7707by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 7708different, because it generates a single call to an internal 7709function. This results in a savings of about 90 bytes per 7710invocation, resulting in an overall code and data savings of about 771116% in the debug version of the subsystem. 7712 7713 Linux: 7714 7715Fixed C3 disk corruption problems and re-enabled C3 on supporting 7716machines. 7717 7718Integrated low-level sleep code by Patrick Mochel. 7719 7720Further tweaked source code Linuxization. 7721 7722Other minor fixes. 7723 7724 ASL Compiler: 7725 7726Support for ACPI 2.0 variable length packages is fixed/completed. 7727 7728Fixed a problem where the optional length parameter for the ACPI 77292.0 ToString operator. 7730 7731Fixed multiple extraneous error messages when a syntax error is 7732detected within the declaration line of a control method. 7733 7734 ---------------------------------------- 7735Summary of changes for this label: 07_17_01 7736 7737ACPI CA Core Subsystem: 7738 7739Added a new interface named AcpiGetFirmwareTable to obtain any 7740ACPI table via the ACPI signature. The interface can be called at 7741any time during kernel initialization, even before the kernel 7742virtual memory manager is initialized and paging is enabled. This 7743allows kernel subsystems to obtain ACPI tables very early, even 7744before the ACPI CA subsystem is initialized. 7745 7746Fixed a problem where Fields defined with the AnyAcc attribute 7747could be resolved to the incorrect address under the following 7748conditions: 1) the field width is larger than 8 bits and 2) the 7749parent operation region is not defined on a DWORD boundary. 7750 7751Fixed a problem where the interpreter is not being locked during 7752namespace initialization (during execution of the _INI control 7753methods), causing an error when an attempt is made to release it 7754later. 7755 7756ACPI 2.0 support in the AML Interpreter has begun and will be 7757ongoing throughout the rest of this year. In this label, The Mod 7758operator is implemented. 7759 7760Added a new data type to contain full PCI addresses named 7761ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 7762and Function values. 7763 7764 Linux: 7765 7766Enhanced the Linux version of the source code to change most 7767capitalized ACPI type names to lowercase. For example, all 7768instances of ACPI_STATUS are changed to acpi_status. This will 7769result in a large diff, but the change is strictly cosmetic and 7770aligns the CA code closer to the Linux coding standard. 7771 7772OSL Interfaces: 7773 7774The interfaces to the PCI configuration space have been changed to 7775add the PCI Segment number and to split the single 32-bit combined 7776DeviceFunction field into two 16-bit fields. This was 7777accomplished by moving the four values that define an address in 7778PCI configuration space (segment, bus, device, and function) to 7779the new ACPI_PCI_ID structure. 7780 7781The changes to the PCI configuration space interfaces led to a 7782reexamination of the complete set of address space access 7783interfaces for PCI, I/O, and Memory. The previously existing 18 7784interfaces have proven difficult to maintain (any small change 7785must be propagated across at least 6 interfaces) and do not easily 7786allow for future expansion to 64 bits if necessary. Also, on some 7787systems, it would not be appropriate to demultiplex the access 7788width (8, 16, 32,or 64) before calling the OSL if the 7789corresponding native OS interfaces contain a similar access width 7790parameter. For these reasons, the 18 address space interfaces 7791have been replaced by these 6 new ones: 7792 7793AcpiOsReadPciConfiguration 7794AcpiOsWritePciConfiguration 7795AcpiOsReadMemory 7796AcpiOsWriteMemory 7797AcpiOsReadPort 7798AcpiOsWritePort 7799 7800Added a new interface named AcpiOsGetRootPointer to allow the OSL 7801to perform the platform and/or OS-specific actions necessary to 7802obtain the ACPI RSDP table pointer. On IA-32 platforms, this 7803interface will simply call down to the CA core to perform the low- 7804memory search for the table. On IA-64, the RSDP is obtained from 7805EFI. Migrating this interface to the OSL allows the CA core to 7806 7807remain OS and platform independent. 7808 7809Added a new interface named AcpiOsSignal to provide a generic 7810"function code and pointer" interface for various miscellaneous 7811signals and notifications that must be made to the host OS. The 7812first such signals are intended to support the ASL Fatal and 7813Breakpoint operators. In the latter case, the AcpiOsBreakpoint 7814interface has been obsoleted. 7815 7816The definition of the AcpiFormatException interface has been 7817changed to simplify its use. The caller no longer must supply a 7818buffer to the call; A pointer to a const string is now returned 7819directly. This allows the call to be easily used in printf 7820statements, etc. since the caller does not have to manage a local 7821buffer. 7822 7823 7824 ASL Compiler, Version X2025: 7825 7826The ACPI 2.0 Switch/Case/Default operators have been implemented 7827and are fully functional. They will work with all ACPI 1.0 7828interpreters, since the operators are simply translated to If/Else 7829pairs. 7830 7831The ACPI 2.0 ElseIf operator is implemented and will also work 7832with 1.0 interpreters, for the same reason. 7833 7834Implemented support for ACPI 2.0 variable-length packages. These 7835packages have a separate opcode, and their size is determined by 7836the interpreter at run-time. 7837 7838Documentation The ACPI CA Programmer Reference has been updated to 7839reflect the new interfaces and changes to existing interfaces. 7840 7841 ------------------------------------------ 7842Summary of changes for this label: 06_15_01 7843 7844 ACPI CA Core Subsystem: 7845 7846Fixed a problem where a DWORD-accessed field within a Buffer 7847object would get its byte address inadvertently rounded down to 7848the nearest DWORD. Buffers are always Byte-accessible. 7849 7850 ASL Compiler, version X2024: 7851 7852Fixed a problem where the Switch() operator would either fault or 7853hang the compiler. Note however, that the AML code for this ACPI 78542.0 operator is not yet implemented. 7855 7856Compiler uses the new AcpiOsGetTimer interface to obtain compile 7857timings. 7858 7859Implementation of the CreateField operator automatically converts 7860a reference to a named field within a resource descriptor from a 7861byte offset to a bit offset if required. 7862 7863Added some missing named fields from the resource descriptor 7864support. These are the names that are automatically created by the 7865compiler to reference fields within a descriptor. They are only 7866valid at compile time and are not passed through to the AML 7867interpreter. 7868 7869Resource descriptor named fields are now typed as Integers and 7870subject to compile-time typechecking when used in expressions. 7871 7872 ------------------------------------------ 7873Summary of changes for this label: 05_18_01 7874 7875 ACPI CA Core Subsystem: 7876 7877Fixed a couple of problems in the Field support code where bits 7878from adjacent fields could be returned along with the proper field 7879bits. Restructured the field support code to improve performance, 7880readability and maintainability. 7881 7882New DEBUG_PRINTP macro automatically inserts the procedure name 7883into the output, saving hundreds of copies of procedure name 7884strings within the source, shrinking the memory footprint of the 7885debug version of the core subsystem. 7886 7887 Source Code Structure: 7888 7889The source code directory tree was restructured to reflect the 7890current organization of the component architecture. Some files 7891and directories have been moved and/or renamed. 7892 7893 Linux: 7894 7895Fixed leaking kacpidpc processes. 7896 7897Fixed queueing event data even when /proc/acpi/event is not 7898opened. 7899 7900 ASL Compiler, version X2020: 7901 7902Memory allocation performance enhancement - over 24X compile time 7903improvement on large ASL files. Parse nodes and namestring 7904buffers are now allocated from a large internal compiler buffer. 7905 7906The temporary .SRC file is deleted unless the "-s" option is 7907specified 7908 7909The "-d" debug output option now sends all output to the .DBG file 7910instead of the console. 7911 7912"External" second parameter is now optional 7913 7914"ElseIf" syntax now properly allows the predicate 7915 7916Last operand to "Load" now recognized as a Target operand 7917 7918Debug object can now be used anywhere as a normal object. 7919 7920ResourceTemplate now returns an object of type BUFFER 7921 7922EISAID now returns an object of type INTEGER 7923 7924"Index" now works with a STRING operand 7925 7926"LoadTable" now accepts optional parameters 7927 7928"ToString" length parameter is now optional 7929 7930"Interrupt (ResourceType," parse error fixed. 7931 7932"Register" with a user-defined region space parse error fixed 7933 7934Escaped backslash at the end of a string ("\\") scan/parse error 7935fixed 7936 7937"Revision" is now an object of type INTEGER. 7938 7939 7940 7941------------------------------------------ 7942Summary of changes for this label: 05_02_01 7943 7944Linux: 7945 7946/proc/acpi/event now blocks properly. 7947 7948Removed /proc/sys/acpi. You can still dump your DSDT from 7949/proc/acpi/dsdt. 7950 7951 ACPI CA Core Subsystem: 7952 7953Fixed a problem introduced in the previous label where some of the 7954"small" resource descriptor types were not recognized. 7955 7956Improved error messages for the case where an ASL Field is outside 7957the range of the parent operation region. 7958 7959 ASL Compiler, version X2018: 7960 7961 7962Added error detection for ASL Fields that extend beyond the length 7963of the parent operation region (only if the length of the region 7964is known at compile time.) This includes fields that have a 7965minimum access width that is smaller than the parent region, and 7966individual field units that are partially or entirely beyond the 7967extent of the parent. 7968 7969 7970 7971------------------------------------------ 7972Summary of changes for this label: 04_27_01 7973 7974 ACPI CA Core Subsystem: 7975 7976Fixed a problem where the namespace mutex could be released at the 7977wrong time during execution of AcpiRemoveAddressSpaceHandler. 7978 7979Added optional thread ID output for debug traces, to simplify 7980debugging of multiple threads. Added context switch notification 7981when the debug code realizes that a different thread is now 7982executing ACPI code. 7983 7984Some additional external data types have been prefixed with the 7985string "ACPI_" for consistency. This may effect existing code. 7986The data types affected are the external callback typedefs - e.g., 7987 7988WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 7989 7990 Linux: 7991 7992Fixed an issue with the OSL semaphore implementation where a 7993thread was waking up with an error from receiving a SIGCHLD 7994signal. 7995 7996Linux version of ACPI CA now uses the system C library for string 7997manipulation routines instead of a local implementation. 7998 7999Cleaned up comments and removed TBDs. 8000 8001 ASL Compiler, version X2017: 8002 8003Enhanced error detection and reporting for all file I/O 8004operations. 8005 8006 Documentation: 8007 8008Programmer Reference updated to version 1.06. 8009 8010 8011 8012------------------------------------------ 8013Summary of changes for this label: 04_13_01 8014 8015 ACPI CA Core Subsystem: 8016 8017Restructured support for BufferFields and RegionFields. 8018BankFields support is now fully operational. All known 32-bit 8019limitations on field sizes have been removed. Both BufferFields 8020and (Operation) RegionFields are now supported by the same field 8021management code. 8022 8023Resource support now supports QWORD address and IO resources. The 802416/32/64 bit address structures and the Extended IRQ structure 8025have been changed to properly handle Source Resource strings. 8026 8027A ThreadId of -1 is now used to indicate a "mutex not acquired" 8028condition internally and must never be returned by AcpiOsThreadId. 8029This reserved value was changed from 0 since Unix systems allow a 8030thread ID of 0. 8031 8032Linux: 8033 8034Driver code reorganized to enhance portability 8035 8036Added a kernel configuration option to control ACPI_DEBUG 8037 8038Fixed the EC driver to honor _GLK. 8039 8040ASL Compiler, version X2016: 8041 8042Fixed support for the "FixedHw" keyword. Previously, the FixedHw 8043address space was set to 0, not 0x7f as it should be. 8044 8045 ------------------------------------------ 8046Summary of changes for this label: 03_13_01 8047 8048 ACPI CA Core Subsystem: 8049 8050During ACPI initialization, the _SB_._INI method is now run if 8051present. 8052 8053Notify handler fix - notifies are deferred until the parent method 8054completes execution. This fixes the "mutex already acquired" 8055issue seen occasionally. 8056 8057Part of the "implicit conversion" rules in ACPI 2.0 have been 8058found to cause compatibility problems with existing ASL/AML. The 8059convert "result-to-target-type" implementation has been removed 8060for stores to method Args and Locals. Source operand conversion 8061is still fully implemented. Possible changes to ACPI 2.0 8062specification pending. 8063 8064Fix to AcpiRsCalculatePciRoutingTableLength to return correct 8065length. 8066 8067Fix for compiler warnings for 64-bit compiles. 8068 8069 Linux: 8070 8071/proc output aligned for easier parsing. 8072 8073Release-version compile problem fixed. 8074 8075New kernel configuration options documented in Configure.help. 8076 8077IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 8078context" message. 8079 8080 OSPM: 8081 8082Power resource driver integrated with bus manager. 8083 8084Fixed kernel fault during active cooling for thermal zones. 8085 8086Source Code: 8087 8088The source code tree has been restructured. 8089 8090 8091 8092------------------------------------------ 8093Summary of changes for this label: 03_02_01 8094 8095 Linux OS Services Layer (OSL): 8096 8097Major revision of all Linux-specific code. 8098 8099Modularized all ACPI-specific drivers. 8100 8101Added new thermal zone and power resource drivers. 8102 8103Revamped /proc interface (new functionality is under /proc/acpi). 8104 8105New kernel configuration options. 8106 8107 Linux known issues: 8108 8109New kernel configuration options not documented in Configure.help 8110yet. 8111 8112 8113Module dependencies not currently implemented. If used, they 8114should be loaded in this order: busmgr, power, ec, system, 8115processor, battery, ac_adapter, button, thermal. 8116 8117Modules will not load if CONFIG_MODVERSION is set. 8118 8119IBM 600E - entering S5 may reboot instead of shutting down. 8120 8121IBM 600E - Sleep button may generate "Invalid <NULL> context" 8122message. 8123 8124Some systems may fail with "execution mutex already acquired" 8125message. 8126 8127 ACPI CA Core Subsystem: 8128 8129Added a new OSL Interface, AcpiOsGetThreadId. This was required 8130for the deadlock detection code. Defined to return a non-zero, 32- 8131bit thread ID for the currently executing thread. May be a non- 8132zero constant integer on single-thread systems. 8133 8134Implemented deadlock detection for internal subsystem mutexes. We 8135may add conditional compilation for this code (debug only) later. 8136 8137ASL/AML Mutex object semantics are now fully supported. This 8138includes multiple acquires/releases by owner and support for the 8139 8140Mutex SyncLevel parameter. 8141 8142A new "Force Release" mechanism automatically frees all ASL 8143Mutexes that have been acquired but not released when a thread 8144exits the interpreter. This forces conformance to the ACPI spec 8145("All mutexes must be released when an invocation exits") and 8146prevents deadlocked ASL threads. This mechanism can be expanded 8147(later) to monitor other resource acquisitions if OEM ASL code 8148continues to misbehave (which it will). 8149 8150Several new ACPI exception codes have been added for the Mutex 8151support. 8152 8153Recursive method calls are now allowed and supported (the ACPI 8154spec does in fact allow recursive method calls.) The number of 8155recursive calls is subject to the restrictions imposed by the 8156SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 8157parameter. 8158 8159Implemented support for the SyncLevel parameter for control 8160methods (ACPI 2.0 feature) 8161 8162Fixed a deadlock problem when multiple threads attempted to use 8163the interpreter. 8164 8165Fixed a problem where the string length of a String package 8166element was not always set in a package returned from 8167AcpiEvaluateObject. 8168 8169Fixed a problem where the length of a String package element was 8170not always included in the length of the overall package returned 8171from AcpiEvaluateObject. 8172 8173Added external interfaces (Acpi*) to the ACPI debug memory 8174manager. This manager keeps a list of all outstanding 8175allocations, and can therefore detect memory leaks and attempts to 8176free memory blocks more than once. Useful for code such as the 8177power manager, etc. May not be appropriate for device drivers. 8178Performance with the debug code enabled is slow. 8179 8180The ACPI Global Lock is now an optional hardware element. 8181 8182 ASL Compiler Version X2015: 8183 8184Integrated changes to allow the compiler to be generated on 8185multiple platforms. 8186 8187Linux makefile added to generate the compiler on Linux 8188 8189 Source Code: 8190 8191All platform-specific headers have been moved to their own 8192subdirectory, Include/Platform. 8193 8194New source file added, Interpreter/ammutex.c 8195 8196New header file, Include/acstruct.h 8197 8198 Documentation: 8199 8200The programmer reference has been updated for the following new 8201interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 8202 8203 ------------------------------------------ 8204Summary of changes for this label: 02_08_01 8205 8206Core ACPI CA Subsystem: Fixed a problem where an error was 8207incorrectly returned if the return resource buffer was larger than 8208the actual data (in the resource interfaces). 8209 8210References to named objects within packages are resolved to the 8211 8212full pathname string before packages are returned directly (via 8213the AcpiEvaluateObject interface) or indirectly via the resource 8214interfaces. 8215 8216Linux OS Services Layer (OSL): 8217 8218Improved /proc battery interface. 8219 8220 8221Added C-state debugging output and other miscellaneous fixes. 8222 8223ASL Compiler Version X2014: 8224 8225All defined method arguments can now be used as local variables, 8226including the ones that are not actually passed in as parameters. 8227The compiler tracks initialization of the arguments and issues an 8228exception if they are used without prior assignment (just like 8229locals). 8230 8231The -o option now specifies a filename prefix that is used for all 8232output files, including the AML output file. Otherwise, the 8233default behavior is as follows: 1) the AML goes to the file 8234specified in the DSDT. 2) all other output files use the input 8235source filename as the base. 8236 8237 ------------------------------------------ 8238Summary of changes for this label: 01_25_01 8239 8240Core ACPI CA Subsystem: Restructured the implementation of object 8241store support within the interpreter. This includes support for 8242the Store operator as well as any ASL operators that include a 8243target operand. 8244 8245Partially implemented support for Implicit Result-to-Target 8246conversion. This is when a result object is converted on the fly 8247to the type of an existing target object. Completion of this 8248support is pending further analysis of the ACPI specification 8249concerning this matter. 8250 8251CPU-specific code has been removed from the subsystem (hardware 8252directory). 8253 8254New Power Management Timer functions added 8255 8256Linux OS Services Layer (OSL): Moved system state transition code 8257to the core, fixed it, and modified Linux OSL accordingly. 8258 8259Fixed C2 and C3 latency calculations. 8260 8261 8262We no longer use the compilation date for the version message on 8263initialization, but retrieve the version from AcpiGetSystemInfo(). 8264 8265Incorporated for fix Sony VAIO machines. 8266 8267Documentation: The Programmer Reference has been updated and 8268reformatted. 8269 8270 8271ASL Compiler: Version X2013: Fixed a problem where the line 8272numbering and error reporting could get out of sync in the 8273presence of multiple include files. 8274 8275 ------------------------------------------ 8276Summary of changes for this label: 01_15_01 8277 8278Core ACPI CA Subsystem: 8279 8280Implemented support for type conversions in the execution of the 8281ASL Concatenate operator (The second operand is converted to 8282match the type of the first operand before concatenation.) 8283 8284Support for implicit source operand conversion is partially 8285implemented. The ASL source operand types Integer, Buffer, and 8286String are freely interchangeable for most ASL operators and are 8287converted by the interpreter on the fly as required. Implicit 8288Target operand conversion (where the result is converted to the 8289target type before storing) is not yet implemented. 8290 8291Support for 32-bit and 64-bit BCD integers is implemented. 8292 8293Problem fixed where a field read on an aligned field could cause a 8294read past the end of the field. 8295 8296New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 8297does not return a value, but the caller expects one. (The ASL 8298compiler flags this as a warning.) 8299 8300ASL Compiler: 8301 8302Version X2011: 83031. Static typechecking of all operands is implemented. This 8304prevents the use of invalid objects (such as using a Package where 8305an Integer is required) at compile time instead of at interpreter 8306run-time. 83072. The ASL source line is printed with ALL errors and warnings. 83083. Bug fix for source EOF without final linefeed. 83094. Debug option is split into a parse trace and a namespace trace. 83105. Namespace output option (-n) includes initial values for 8311integers and strings. 83126. Parse-only option added for quick syntax checking. 83137. Compiler checks for duplicate ACPI name declarations 8314 8315Version X2012: 83161. Relaxed typechecking to allow interchangeability between 8317strings, integers, and buffers. These types are now converted by 8318the interpreter at runtime. 83192. Compiler reports time taken by each internal subsystem in the 8320debug output file. 8321 8322 8323 ------------------------------------------ 8324Summary of changes for this label: 12_14_00 8325 8326ASL Compiler: 8327 8328This is the first official release of the compiler. Since the 8329compiler requires elements of the Core Subsystem, this label 8330synchronizes everything. 8331 8332------------------------------------------ 8333Summary of changes for this label: 12_08_00 8334 8335 8336Fixed a problem where named references within the ASL definition 8337of both OperationRegions and CreateXXXFields did not work 8338properly. The symptom was an AE_AML_OPERAND_TYPE during 8339initialization of the region/field. This is similar (but not 8340related internally) to the problem that was fixed in the last 8341label. 8342 8343Implemented both 32-bit and 64-bit support for the BCD ASL 8344functions ToBCD and FromBCD. 8345 8346Updated all legal headers to include "2000" in the copyright 8347years. 8348 8349 ------------------------------------------ 8350Summary of changes for this label: 12_01_00 8351 8352Fixed a problem where method invocations within the ASL definition 8353of both OperationRegions and CreateXXXFields did not work 8354properly. The symptom was an AE_AML_OPERAND_TYPE during 8355initialization of the region/field: 8356 8357 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 8358[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 8359(0x3005) 8360 8361Fixed a problem where operators with more than one nested 8362subexpression would fail. The symptoms were varied, by mostly 8363AE_AML_OPERAND_TYPE errors. This was actually a rather serious 8364problem that has gone unnoticed until now. 8365 8366 Subtract (Add (1,2), Multiply (3,4)) 8367 8368Fixed a problem where AcpiGetHandle didn't quite get fixed in the 8369previous build (The prefix part of a relative path was handled 8370incorrectly). 8371 8372Fixed a problem where Operation Region initialization failed if 8373the operation region name was a "namepath" instead of a simple 8374"nameseg". Symptom was an AE_NO_OPERAND error. 8375 8376Fixed a problem where an assignment to a local variable via the 8377indirect RefOf mechanism only worked for the first such 8378assignment. Subsequent assignments were ignored. 8379 8380 ------------------------------------------ 8381Summary of changes for this label: 11_15_00 8382 8383ACPI 2.0 table support with backwards support for ACPI 1.0 and the 83840.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 8385the AML interpreter does NOT have support for the new 2.0 ASL 8386grammar terms at this time. 8387 8388All ACPI hardware access is via the GAS structures in the ACPI 2.0 8389FADT. 8390 8391All physical memory addresses across all platforms are now 64 bits 8392wide. Logical address width remains dependent on the platform 8393(i.e., "void *"). 8394 8395AcpiOsMapMemory interface changed to a 64-bit physical address. 8396 8397The AML interpreter integer size is now 64 bits, as per the ACPI 83982.0 specification. 8399 8400For backwards compatibility with ACPI 1.0, ACPI tables with a 8401revision number less than 2 use 32-bit integers only. 8402 8403Fixed a problem where the evaluation of OpRegion operands did not 8404always resolve them to numbers properly. 8405 8406------------------------------------------ 8407Summary of changes for this label: 10_20_00 8408 8409Fix for CBN_._STA issue. This fix will allow correct access to 8410CBN_ OpRegions when the _STA returns 0x8. 8411 8412Support to convert ACPI constants (Ones, Zeros, One) to actual 8413values before a package object is returned 8414 8415Fix for method call as predicate to if/while construct causing 8416incorrect if/while behavior 8417 8418Fix for Else block package lengths sometimes calculated wrong (if 8419block > 63 bytes) 8420 8421Fix for Processor object length field, was always zero 8422 8423Table load abort if FACP sanity check fails 8424 8425Fix for problem with Scope(name) if name already exists 8426 8427Warning emitted if a named object referenced cannot be found 8428(resolved) during method execution. 8429 8430 8431 8432 8433 8434------------------------------------------ 8435Summary of changes for this label: 9_29_00 8436 8437New table initialization interfaces: AcpiInitializeSubsystem no 8438longer has any parameters AcpiFindRootPointer - Find the RSDP (if 8439necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 8440>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 8441AcpiLoadTables 8442 8443Note: These interface changes require changes to all existing OSDs 8444 8445The PCI_Config default address space handler is always installed 8446at the root namespace object. 8447 8448------------------------------------------- 8449Summary of changes for this label: 09_15_00 8450 8451The new initialization architecture is implemented. New 8452interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 8453AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 8454 8455(Namespace is automatically loaded when a table is loaded) 8456 8457The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 845852 bytes to 32 bytes. There is usually one of these for every 8459namespace object, so the memory savings is significant. 8460 8461Implemented just-in-time evaluation of the CreateField operators. 8462 8463Bug fixes for IA-64 support have been integrated. 8464 8465Additional code review comments have been implemented 8466 8467The so-called "third pass parse" has been replaced by a final walk 8468through the namespace to initialize all operation regions (address 8469spaces) and fields that have not yet been initialized during the 8470execution of the various _INI and REG methods. 8471 8472New file - namespace/nsinit.c 8473 8474------------------------------------------- 8475Summary of changes for this label: 09_01_00 8476 8477Namespace manager data structures have been reworked to change the 8478primary object from a table to a single object. This has 8479resulted in dynamic memory savings of 3X within the namespace and 84802X overall in the ACPI CA subsystem. 8481 8482Fixed problem where the call to AcpiEvFindPciRootBuses was 8483inadvertently left commented out. 8484 8485Reduced the warning count when generating the source with the GCC 8486compiler. 8487 8488Revision numbers added to each module header showing the 8489SourceSafe version of the file. Please refer to this version 8490number when giving us feedback or comments on individual modules. 8491 8492The main object types within the subsystem have been renamed to 8493clarify their purpose: 8494 8495ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 8496ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 8497ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 8498 8499NOTE: no changes to the initialization sequence are included in 8500this label. 8501 8502------------------------------------------- 8503Summary of changes for this label: 08_23_00 8504 8505Fixed problem where TerminateControlMethod was being called 8506multiple times per method 8507 8508Fixed debugger problem where single stepping caused a semaphore to 8509be oversignalled 8510 8511Improved performance through additional parse object caching - 8512added ACPI_EXTENDED_OP type 8513 8514------------------------------------------- 8515Summary of changes for this label: 08_10_00 8516 8517Parser/Interpreter integration: Eliminated the creation of 8518complete parse trees for ACPI tables and control methods. 8519Instead, parse subtrees are created and then deleted as soon as 8520they are processed (Either entered into the namespace or executed 8521by the interpreter). This reduces the use of dynamic kernel 8522memory significantly. (about 10X) 8523 8524Exception codes broken into classes and renumbered. Be sure to 8525recompile all code that includes acexcep.h. Hopefully we won't 8526have to renumber the codes again now that they are split into 8527classes (environment, programmer, AML code, ACPI table, and 8528internal). 8529 8530Fixed some additional alignment issues in the Resource Manager 8531subcomponent 8532 8533Implemented semaphore tracking in the AcpiExec utility, and fixed 8534several places where mutexes/semaphores were being unlocked 8535without a corresponding lock operation. There are no known 8536semaphore or mutex "leaks" at this time. 8537 8538Fixed the case where an ASL Return operator is used to return an 8539unnamed package. 8540 8541------------------------------------------- 8542Summary of changes for this label: 07_28_00 8543 8544Fixed a problem with the way addresses were calculated in 8545AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 8546manifested itself when a Field was created with WordAccess or 8547DwordAccess, but the field unit defined within the Field was less 8548 8549than a Word or Dword. 8550 8551Fixed a problem in AmlDumpOperands() module's loop to pull 8552operands off of the operand stack to display information. The 8553problem manifested itself as a TLB error on 64-bit systems when 8554accessing an operand stack with two or more operands. 8555 8556Fixed a problem with the PCI configuration space handlers where 8557context was getting confused between accesses. This required a 8558change to the generic address space handler and address space 8559setup definitions. Handlers now get both a global handler context 8560(this is the one passed in by the user when executing 8561AcpiInstallAddressSpaceHandler() and a specific region context 8562that is unique to each region (For example, the _ADR, _SEG and 8563_BBN values associated with a specific region). The generic 8564function definitions have changed to the following: 8565 8566typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 8567UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 8568*HandlerContext, // This used to be void *Context void 8569*RegionContext); // This is an additional parameter 8570 8571typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 8572RegionHandle, UINT32 Function, void *HandlerContext, void 8573**RegionContext); // This used to be **ReturnContext 8574 8575------------------------------------------- 8576Summary of changes for this label: 07_21_00 8577 8578Major file consolidation and rename. All files within the 8579interpreter have been renamed as well as most header files. This 8580was done to prevent collisions with existing files in the host 8581OSs -- filenames such as "config.h" and "global.h" seem to be 8582quite common. The VC project files have been updated. All 8583makefiles will require modification. 8584 8585The parser/interpreter integration continues in Phase 5 with the 8586implementation of a complete 2-pass parse (the AML is parsed 8587twice) for each table; This avoids the construction of a huge 8588parse tree and therefore reduces the amount of dynamic memory 8589required by the subsystem. Greater use of the parse object cache 8590means that performance is unaffected. 8591 8592Many comments from the two code reviews have been rolled in. 8593 8594The 64-bit alignment support is complete. 8595 8596------------------------------------------- 8597Summary of changes for this label: 06_30_00 8598 8599With a nod and a tip of the hat to the technology of yesteryear, 8600we've added support in the source code for 80 column output 8601devices. The code is now mostly constrained to 80 columns or 8602less to support environments and editors that 1) cannot display 8603or print more than 80 characters on a single line, and 2) cannot 8604disable line wrapping. 8605 8606A major restructuring of the namespace data structure has been 8607completed. The result is 1) cleaner and more 8608understandable/maintainable code, and 2) a significant reduction 8609in the dynamic memory requirement for each named ACPI object 8610(almost half). 8611 8612------------------------------------------- 8613Summary of changes for this label: 06_23_00 8614 8615Linux support has been added. In order to obtain approval to get 8616the ACPI CA subsystem into the Linux kernel, we've had to make 8617quite a few changes to the base subsystem that will affect all 8618users (all the changes are generic and OS- independent). The 8619effects of these global changes have been somewhat far reaching. 8620Files have been merged and/or renamed and interfaces have been 8621renamed. The major changes are described below. 8622 8623Osd* interfaces renamed to AcpiOs* to eliminate namespace 8624pollution/confusion within our target kernels. All OSD 8625interfaces must be modified to match the new naming convention. 8626 8627Files merged across the subsystem. A number of the smaller source 8628and header files have been merged to reduce the file count and 8629increase the density of the existing files. There are too many 8630to list here. In general, makefiles that call out individual 8631files will require rebuilding. 8632 8633Interpreter files renamed. All interpreter files now have the 8634prefix am* instead of ie* and is*. 8635 8636Header files renamed: The acapi.h file is now acpixf.h. The 8637acpiosd.h file is now acpiosxf.h. We are removing references to 8638the acronym "API" since it is somewhat windowsy. The new name is 8639"external interface" or xface or xf in the filenames.j 8640 8641 8642All manifest constants have been forced to upper case (some were 8643mixed case.) Also, the string "ACPI_" has been prepended to many 8644(not all) of the constants, typedefs, and structs. 8645 8646The globals "DebugLevel" and "DebugLayer" have been renamed 8647"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 8648 8649All other globals within the subsystem are now prefixed with 8650"AcpiGbl_" Internal procedures within the subsystem are now 8651prefixed with "Acpi" (with only a few exceptions). The original 8652two-letter abbreviation for the subcomponent remains after "Acpi" 8653- for example, CmCallocate became AcpiCmCallocate. 8654 8655Added a source code translation/conversion utility. Used to 8656generate the Linux source code, it can be modified to generate 8657other types of source as well. Can also be used to cleanup 8658existing source by removing extraneous spaces and blank lines. 8659Found in tools/acpisrc/* 8660 8661OsdUnMapMemory was renamed to OsdUnmapMemory and then 8662AcpiOsUnmapMemory. (UnMap became Unmap). 8663 8664A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 8665When set to one, this indicates that the caller wants to use the 8666 8667semaphore as a mutex, not a counting semaphore. ACPI CA uses 8668both types. However, implementers of this call may want to use 8669different OS primitives depending on the type of semaphore 8670requested. For example, some operating systems provide separate 8671 8672"mutex" and "semaphore" interfaces - where the mutex interface is 8673much faster because it doesn't have all the overhead of a full 8674semaphore implementation. 8675 8676Fixed a deadlock problem where a method that accesses the PCI 8677address space can block forever if it is the first access to the 8678space. 8679 8680------------------------------------------- 8681Summary of changes for this label: 06_02_00 8682 8683Support for environments that cannot handle unaligned data 8684accesses (e.g. firmware and OS environments devoid of alignment 8685handler technology namely SAL/EFI and the IA-64 Linux kernel) has 8686been added (via configurable macros) in these three areas: - 8687Transfer of data from the raw AML byte stream is done via byte 8688moves instead of word/dword/qword moves. - External objects are 8689aligned within the user buffer, including package elements (sub- 8690objects). - Conversion of name strings to UINT32 Acpi Names is now 8691done byte-wise. 8692 8693The Store operator was modified to mimic Microsoft's 8694implementation when storing to a Buffer Field. 8695 8696Added a check of the BM_STS bit before entering C3. 8697 8698The methods subdirectory has been obsoleted and removed. A new 8699file, cmeval.c subsumes the functionality. 8700 8701A 16-bit (DOS) version of AcpiExec has been developed. The 8702makefile is under the acpiexec directory. 8703