1---------------------------------------- 203 October 2018. Summary of changes for version 20181003: 3 4 52) iASL Compiler/Disassembler and Tools: 6 7Fixed a regression introduced in version 20180927 that could cause the 8compiler to fault, especially with NamePaths containing one or more 9carats (^). Such as: ^^_SB_PCI0 10 11Added a new remark for the Sleep() operator when the sleep time operand 12is larger than one second. This is a very long time for the ASL/BIOS code 13and may not be what was intended by the ASL writer. 14 15---------------------------------------- 1627 September 2018. Summary of changes for version 20180927: 17 18 191) ACPICA kernel-resident subsystem: 20 21Updated the GPE support to clear the status of all ACPI events when 22entering any/all sleep states in order to avoid premature wakeups. In 23theory, this may cause some wakeup events to be missed, but the 24likelihood of this is small. This change restores the original behavior 25of the ACPICA code in order to fix a regression seen from the previous 26"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 27This regression could cause some systems to incorrectly wake immediately. 28 29Updated the execution of the _REG methods during initialization and 30namespace loading to bring the behavior into closer conformance to the 31ACPI specification and other ACPI implementations: 32 33From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 34 "Control methods must assume all operation regions are inaccessible 35until the _REG(RegionSpace, 1) method is executed" 36 37 "The exceptions to this rule are: 381. OSPM must guarantee that the following operation regions are always 39accessible: 40 SystemIO operation regions. 41 SystemMemory operation regions when accessing memory returned by the 42System Address Map reporting interfaces." 43 44Since the state of both the SystemIO and SystemMemory address spaces are 45defined by the specification to never change, this ACPICA change ensures 46that now _REG is never called on them. This solves some problems seen in 47the field and provides compatibility with other ACPI implementations. An 48update to the upcoming new version of the ACPI specification will help 49clarify this behavior. 50 51Updated the implementation of support for the Generic Serial Bus. For the 52"bidirectional" protocols, the internal implementation now automatically 53creates a return data buffer of the maximum size (255). This handles the 54worst-case for data that is returned from the serial bus handler, and 55fixes some problems seen in the field. This new buffer is directly 56returned to the ASL. As such, there is no true "bidirectional" buffer, 57which matches the ACPI specification. This is the reason for the "double 58store" seen in the example ASL code in the specification, shown below: 59 60Word Process Call (AttribProcessCall): 61 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 62 Field(TOP1, BufferAcc, NoLock, Preserve) 63 { 64 FLD1, 8, // Virtual register at command value 1. 65 } 66 67 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 68 // as BUFF 69 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 70 71 Store(0x5416, DATA) // Save 0x5416 into the data buffer 72 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 73transaction 74 // This is the "double store". The write to 75 // FLD1 returns a new buffer, which is stored 76 // back into BUFF with the second Store. 77 78 792) iASL Compiler/Disassembler and Tools: 80 81iASL: Implemented detection of extraneous/redundant uses of the Offset() 82operator within a Field Unit list. A remark is now issued for these. For 83example, the first two of the Offset() operators below are extraneous. 84Because both the compiler and the interpreter track the offsets 85automatically, these Offsets simply refer to the current offset and are 86unnecessary. Note, when optimization is enabled, the iASL compiler will 87in fact remove the redundant Offset operators and will not emit any AML 88code for them. 89 90 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 91 Field (OPR1) 92 { 93 Offset (0), // Never needed 94 FLD1, 32, 95 Offset (4), // Redundant, offset is already 4 (bytes) 96 FLD2, 8, 97 Offset (64), // OK use of Offset. 98 FLD3, 16, 99 } 100dsdt.asl 14: Offset (0), 101Remark 2158 - ^ Unnecessary/redundant use of Offset 102operator 103 104dsdt.asl 16: Offset (4), 105Remark 2158 - ^ Unnecessary/redundant use of Offset 106operator 107 108---------------------------------------- 10910 August 2018. Summary of changes for version 20180810: 110 111 1121) ACPICA kernel-resident subsystem: 113 114Initial ACPI table loading: Attempt to continue loading ACPI tables 115regardless of malformed AML. Since migrating table initialization to the 116new module-level code support, the AML interpreter rejected tables upon 117any ACPI error encountered during table load. This is a problem because 118non-serious ACPI errors during table load do not necessarily mean that 119the entire definition block (DSDT or SSDT) is invalid. This change 120improves the table loading by ignoring some types of errors that can be 121generated by incorrect AML. This can range from object type errors, scope 122errors, and index errors. 123 124Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 125during suspend/resume. The status of ACPI events is no longer cleared 126when entering the ACPI S5 system state (power off) which caused some 127systems to power up immediately after turning off power in certain 128situations. This was a functional regression. It was fixed by clearing 129the status of all ACPI events again when entering S5 (for system-wide 130suspend or hibernation the clearing of the status of all events is not 131desirable, as it might cause the kernel to miss wakeup events sometimes). 132Rafael Wysocki. 133 134 1352) iASL Compiler/Disassembler and Tools: 136 137AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 138elements listed in the initialization file were previously initialized 139after the table load and before executing module-level code blocks. 140Recent changes in the module-level code support means that the table load 141becomes a large control method execution. If fields are used within 142module-level code and we are executing with the -fi option, the 143initialization values were used to initialize the namespace object(s) 144only after the table was finished loading. This change Provides an early 145initialization of objects specified in the initialization file so that 146field unit values are populated during the table load (not after the 147load). 148 149AcpiExec: Fixed a small memory leak regression that could result in 150warnings during exit of the utility. These warnings were similar to 151these: 152 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 153 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 154 155---------------------------------------- 15629 June 2018. Summary of changes for version 20180629: 157 158 1591) iASL Compiler/Disassembler and Tools: 160 161iASL: Fixed a regression related to the use of the ASL External 162statement. Error checking for the use of the External() statement has 163been relaxed. Previously, a restriction on the use of External meant that 164the referenced named object was required to be defined in a different 165table (an SSDT). Thus it would be an error to declare an object as an 166external and then define the same named object in the same table. For 167example: 168 DefinitionBlock (...) 169 { 170 External (DEV1) 171 Device (DEV1){...} // This was an error 172 } 173However, this behavior has caused regressions in some existing ASL code, 174because there is code that depends on named objects and externals (with 175the same name) being declared in the same table. This change will allow 176the ASL code above to compile without errors or warnings. 177 178iASL: Implemented ASL language extensions for four operators to make some 179of their arguments optional instead of required: 180 1) Field (RegionName, AccessType, LockRule, UpdateRule) 181 2) BankField (RegionName, BankName, BankValue, 182 AccessType, LockRule, UpdateRule) 183 3) IndexField (IndexName, DataName, 184 AccessType, LockRule, UpdateRule) 185For the Field operators above, the AccessType, LockRule, and UpdateRule 186are now optional arguments. The default values are: 187 AccessType: AnyAcc 188 LockRule: NoLock 189 UpdateRule: Preserve 190 4) Mutex (MutexName, SyncLevel) 191For this operator, the SyncLevel argument is now optional. This argument 192is rarely used in any meaningful way by ASL code, and thus it makes sense 193to make it optional. The default value is: 194 SyncLevel: 0 195 196iASL: Attempted use of the ASL Unload() operator now results in the 197following warning: 198 "Unload is not supported by all operating systems" 199This is in fact very true, and the Unload operator may be completely 200deprecated in the near future. 201 202AcpiExec: Fixed a regression for the -fi option (Namespace initialization 203file. Recent changes in the ACPICA module-level code support altered the 204table load/initialization sequence . This means that the table load has 205become a large method execution of the table itself. If Operation Region 206Fields are used within any module-level code and the -fi option was 207specified, the initialization values were populated only after the table 208had completely finished loading (and thus the module-level code had 209already been executed). This change moves the initialization of objects 210listed in the initialization file to before the table is executed as a 211method. Field unit values are now initialized before the table execution 212is performed. 213 214---------------------------------------- 21531 May 2018. Summary of changes for version 20180531: 216 217 2181) ACPICA kernel-resident Subsystem: 219 220Implemented additional support to help ensure that a DSDT or SSDT is 221fully loaded even if errors are incurred during the load. The majority of 222the problems that are seen is the failure of individual AML operators 223that occur during execution of any module-level code (MLC) existing in 224the table. This support adds a mechanism to abort the current ASL 225statement (AML opcode), emit an error message, and to simply move on to 226the next opcode -- instead of aborting the entire table load. This is 227different than the execution of a control method where the entire method 228is aborted upon any error. The goal is to perform a very "best effort" to 229load the ACPI tables. The most common MLC errors that have been seen in 230the field are direct references to unresolved ASL/AML symbols (referenced 231directly without the use of the CondRefOf operator to validate the 232symbol). This new ACPICA behavior is now compatible with other ACPI 233implementations. 234 235Interpreter: The Unload AML operator is no longer supported for the 236reasons below. An AE_NOT_IMPLEMENTED exception is returned. 2371) A correct implementation on at least some hosts may not be possible. 2382) Other ACPI implementations do not correctly/fully support it. 2393) It requires host device driver support which is not known to exist. 240 (To properly support namespace unload out from underneath.) 2414) This AML operator has never been seen in the field. 242 243Parser: Added a debug option to dump AML parse sub-trees as they are 244being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 245ACPI_DB_PARSE_TREES. 246 247Debugger: Reduced the verbosity for errors incurred during table load and 248module-level code execution. 249 250Completed an investigation into adding a namespace node "owner list" 251instead of the current "owner ID" associated with namespace nodes. This 252list would link together all nodes that are owned by an individual 253control method. The purpose would be to enhance control method execution 254by speeding up cleanup during method exit (all namespace nodes created by 255a method are deleted upon method termination.) Currently, the entire 256namespace must be searched for matching owner IDs if (and only if) the 257method creates named objects outside of the local scope. However, by far 258the most common case is that methods create objects locally, not outside 259the method scope. There is already an ACPICA optimization in place that 260only searches the entire namespace in the rare case of a method creating 261objects elsewhere in the namespace. Therefore, it is felt that the 262overhead of adding an additional pointer to each namespace node to 263implement the owner list makes this feature unnecessary. 264 265 2662) iASL Compiler/Disassembler and Tools: 267 268iASL, Disassembler, and Template generator: Implemented support for 269Revision D of the IORT table. Adds a new subtable that is used to specify 270SMMUv3 PMCGs. rmurphy-arm. 271 272Disassembler: Restored correct table header validation for the "special" 273ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 274table header and must be special-cased. This was a regression that has 275been present for apparently a long time. 276 277AcpiExec: Reduced verbosity of the local exception handler implemented 278within acpiexec. This handler is invoked by ACPICA upon any exceptions 279generated during control method execution. A new option was added: -vh 280restores the original verbosity level if desired. 281 282AcpiExec: Changed the default base from decimal to hex for the -x option 283(set debug level). This simplifies the use of this option and matches the 284behavior of the corresponding iASL -x option. 285 286AcpiExec: Restored a force-exit on multiple control-c (sigint) 287interrupts. This allows program termination even if other issues cause 288the control-c to fail. 289 290ASL test suite (ASLTS): Added tests for the recently implemented package 291element resolution mechanism that allows forward references to named 292objects from individual package elements (this mechanism provides 293compatibility with other ACPI implementations.) 294 295 296---------------------------------------- 2978 May 2018. Summary of changes for version 20180508: 298 299 3001) ACPICA kernel-resident subsystem: 301 302Completed the new (recently deployed) package resolution mechanism for 303the Load and LoadTable ASL/AML operators. This fixes a regression that 304was introduced in version 20180209 that could result in an 305AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 306(SSDT) that contains package objects. 307 308 3092) iASL Compiler/Disassembler and Tools: 310 311AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 3121 MB. This change allows for table offsets within the acpidump file to be 313up to 8 characters. These changes are backwards compatible with existing 314acpidump files. 315 316 317---------------------------------------- 31827 April 2018. Summary of changes for version 20180427: 319 320 3211) ACPICA kernel-resident subsystem: 322 323Debugger: Added support for Package objects in the "Test Objects" 324command. This command walks the entire namespace and evaluates all named 325data objects (Integers, Strings, Buffers, and now Packages). 326 327Improved error messages for the namespace root node. Originally, the root 328was referred to by the confusing string "\___". This has been replaced by 329"Namespace Root" for clarification. 330 331Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 332Ian King <colin.king@canonical.com>. 333 334 3352) iASL Compiler/Disassembler and Tools: 336 337iASL: Implemented support to detect and flag illegal forward references. 338For compatibility with other ACPI implementations, these references are 339now illegal at the root level of the DSDT or SSDTs. Forward references 340have always been illegal within control methods. This change should not 341affect existing ASL/AML code because of the fact that these references 342have always been illegal in the other ACPI implementation. 343 344iASL: Added error messages for the case where a table OEM ID and OEM 345TABLE ID strings are longer than the ACPI-defined length. Previously, 346these strings were simply silently truncated. 347 348iASL: Enhanced the -tc option (which creates an AML hex file in C, 349suitable for import into a firmware project): 350 1) Create a unique name for the table, to simplify use of multiple 351SSDTs. 352 2) Add a protection #ifdef in the file, similar to a .h header file. 353With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 354evan.lloyd@arm.com 355 356AcpiExec: Added a new option, -df, to disable the local fault handler. 357This is useful during debugging, where it may be desired to drop into a 358debugger on a fault. 359 360---------------------------------------- 36113 March 2018. Summary of changes for version 20180313: 362 363 3641) ACPICA kernel-resident subsystem: 365 366Implemented various improvements to the GPE support: 367 3681) Dispatch all active GPEs at initialization time so that no GPEs are 369lost. 3702) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 371before devices are enumerated. 3723) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 373IRQs are not lost. 3744) Add parallel GPE handling to eliminate the possibility of dispatching 375the same GPE twice. 3765) Dispatch any pending GPEs after enabling for the first time. 377 378AcpiGetObjectInfo - removed support for the _STA method. This was causing 379problems on some platforms. 380 381Added a new _OSI string, "Windows 2017.2". 382 383Cleaned up and simplified the module-level code support. These changes 384are in preparation for the eventual removal of the legacy MLC support 385(deferred execution), replaced by the new MLC architecture which executes 386the MLC as a table is loaded (DSDT/SSDTs). 387 388Changed a compile-time option to a runtime option. Changes the option to 389ignore ACPI table load-time package resolution errors into a runtime 390option. Used only for platforms that generate many AE_NOT_FOUND errors 391during boot. AcpiGbl_IgnorePackageResolutionErrors. 392 393Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 394ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 395compilation errors from unused variables (seen with some compilers). 396 397 3982) iASL Compiler/Disassembler and Tools: 399 400ASLTS: parallelized execution in order to achieve an (approximately) 2X 401performance increase. 402 403ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 404error reporting. 405 406---------------------------------------- 40709 February 2018. Summary of changes for version 20180209: 408 409 4101) ACPICA kernel-resident subsystem: 411 412Completed the final integration of the recent changes to Package Object 413handling and the module-level AML code support. This allows forward 414references from individual package elements when the package object is 415declared from within module-level code blocks. Provides compatibility 416with other ACPI implementations. 417 418The new architecture for the AML module-level code has been completed and 419is now the default for the ACPICA code. This new architecture executes 420the module-level code in-line as the ACPI table is loaded/parsed instead 421of the previous architecture which deferred this code until after the 422table was fully loaded. This solves some ASL code ordering issues and 423provides compatibility with other ACPI implementations. At this time, 424there is an option to fallback to the earlier architecture, but this 425support is deprecated and is planned to be completely removed later this 426year. 427 428Added a compile-time option to ignore AE_NOT_FOUND exceptions during 429resolution of named reference elements within Package objects. Although 430this is potentially a serious problem, it can generate a lot of 431noise/errors on platforms whose firmware carries around a bunch of unused 432Package objects. To disable these errors, define 433ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 434errors are always reported for ACPICA applications such as AcpiExec. 435 436Fixed a regression related to the explicit type-conversion AML operators 437(ToXXXX). The regression was introduced early in 2017 but was not seen 438until recently because these operators are not fully supported by other 439ACPI implementations and are thus rarely used by firmware developers. The 440operators are defined by the ACPI specification to not implement the 441"implicit result object conversion". The regression incorrectly 442introduced this object conversion for the following explicit conversion 443operators: 444 ToInteger 445 ToString 446 ToBuffer 447 ToDecimalString 448 ToHexString 449 ToBCD 450 FromBCD 451 452 4532) iASL Compiler/Disassembler and Tools: 454 455iASL: Fixed a problem with the compiler constant folding feature as 456related to the ToXXXX explicit conversion operators. These operators do 457not support the "implicit result object conversion" by definition. Thus, 458ASL expressions that use these operators cannot be folded to a simple 459Store operator because Store implements the implicit conversion. This 460change uses the CopyObject operator for the ToXXXX operator folding 461instead. CopyObject is defined to not implement implicit result 462conversions and is thus appropriate for folding the ToXXXX operators. 463 464iASL: Changed the severity of an error condition to a simple warning for 465the case where a symbol is declared both locally and as an external 466symbol. This accommodates existing ASL code. 467 468AcpiExec: The -ep option to enable the new architecture for module-level 469code has been removed. It is replaced by the -dp option which instead has 470the opposite effect: it disables the new architecture (the default) and 471enables the legacy architecture. When the legacy code is removed in the 472future, the -dp option will be removed also. 473 474---------------------------------------- 47505 January 2018. Summary of changes for version 20180105: 476 477 4781) ACPICA kernel-resident subsystem: 479 480Updated all copyrights to 2018. This affects all source code modules. 481 482Fixed a possible build error caused by an unresolved reference to the 483AcpiUtSafeStrncpy function. 484 485Removed NULL pointer arithmetic in the various pointer manipulation 486macros. All "(void *) NULL" constructs are converted to "(void *) 0". 487This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 488 489Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 490Mittal. 491 492 4932) iASL Compiler/Disassembler and Tools: 494 495ASLTS: Updated all copyrights to 2018. 496 497Tools: Updated all signon copyrights to 2018. 498 499AcpiXtract: Fixed a regression related to ACPI table signatures where the 500signature was truncated to 3 characters (instead of 4). 501 502AcpiExec: Restore the original terminal mode after the use of the -v and 503-vd options. 504 505ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 506 507---------------------------------------- 50814 December 2017. Summary of changes for version 20171214: 509 510 5111) ACPICA kernel-resident subsystem: 512 513Fixed a regression in the external (public) AcpiEvaluateObjectTyped 514interface where the optional "pathname" argument had inadvertently become 515a required argument returning an error if omitted (NULL pointer 516argument). 517 518Fixed two possible memory leaks related to the recently developed "late 519resolution" of reference objects within ASL Package Object definitions. 520 521Added two recently defined _OSI strings: "Windows 2016" and "Windows 5222017". Mario Limonciello. 523 524Implemented and deployed a safer version of the C library function 525strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 526creation of unterminated strings as a possible result of a standard 527strncpy. 528 529Cleaned up and restructured the global variable file (acglobal.h). There 530are many changes, but no functional changes. 531 532 5332) iASL Compiler/Disassembler and Tools: 534 535iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 536optional OemData field at the end of the table was incorrectly required 537for proper compilation. It is now correctly an optional field. 538 539ASLTS: The entire suite was converted from standard ASL to the ASL+ 540language, using the ASL-to-ASL+ converter which is integrated into the 541iASL compiler. A binary compare of all output files has verified the 542correctness of the conversion. 543 544iASL: Fixed the source code build for platforms where "char" is unsigned. 545This affected the iASL lexer only. Jung-uk Kim. 546 547---------------------------------------- 54810 November 2017. Summary of changes for version 20171110: 549 550 5511) ACPICA kernel-resident subsystem: 552 553This release implements full support for ACPI 6.2A: 554 NFIT - Added a new subtable, "Platform Capabilities Structure" 555No other changes to ACPICA were required, since ACPI 6.2A is primarily an 556errata release of the specification. 557 558Other ACPI table changes: 559 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 560 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 561Linton 562 563Utilities: Modified the string/integer conversion functions to use 564internal 64-bit divide support instead of a native divide. On 32-bit 565platforms, a 64-bit divide typically requires a library function which 566may not be present in the build (kernel or otherwise). 567 568Implemented a targeted error message for timeouts returned from the 569Embedded Controller device driver. This is seen frequently enough to 570special-case an AE_TIME returned from an EC operation region access: 571 "Timeout from EC hardware or EC device driver" 572 573Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 574runtime error messages have the identical prefix. 575 576 5772) iASL Compiler/Disassembler and Tools: 578 579AcpiXtract: Fixed a problem with table header detection within the 580acpidump file. Processing a table could be ended early if a 0x40 (@) 581appears in the original binary table, resulting in the @ symbol appearing 582in the decoded ASCII field at the end of the acpidump text line. The 583symbol caused acpixtract to incorrectly think it had reached the end of 584the current table and the beginning of a new table. 585 586AcpiXtract: Added an option (-f) to ignore some errors during table 587extraction. This initial implementation ignores non-ASCII and non- 588printable characters found in the acpidump text file. 589 590TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 591for ASLTS. This feature is used to track memory allocations from 592different memory caches within the ACPICA code. At the end of an ASLTS 593run, these memory statistics are recorded and stored in a log file. 594 595Debugger (user-space version): Implemented a simple "Background" command. 596Creates a new thread to execute a control method in the background, while 597control returns to the debugger prompt to allow additional commands. 598 Syntax: Background <Namepath> [Arguments] 599 600---------------------------------------- 60129 September 2017. Summary of changes for version 20170929: 602 603 6041) ACPICA kernel-resident subsystem: 605 606Redesigned and implemented an improved ASL While() loop timeout 607mechanism. This mechanism is used to prevent infinite loops in the kernel 608AML interpreter caused by either non-responsive hardware or incorrect AML 609code. The new implementation uses AcpiOsGetTimer instead of a simple 610maximum loop count, and is thus more accurate and constant across 611different machines. The default timeout is currently 30 seconds, but this 612may be adjusted later. 613 614Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 615better reflect the new implementation of the loop timeout mechanism. 616 617Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 618and to fix an off-by-one error. Jung-uk Kim. 619 620Fixed an EFI build problem by updating the makefiles to for a new file 621that was added, utstrsuppt.c 622 623 6242) iASL Compiler/Disassembler and Tools: 625 626Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 627includes support in the table disassembler, compiler, and template 628generator. 629 630iASL: Added an exception for an illegal type of recursive method 631invocation. If a method creates named objects, the first recursive call 632will fail at runtime. This change adds an error detection at compile time 633to catch the problem up front. Note: Marking such a method as 634"serialized" will not help with this problem, because the same thread can 635acquire the method mutex more than once. Example compiler and runtime 636output: 637 638 Method (MTH1) 639 { 640 Name (INT1, 1) 641 MTH1 () 642 } 643 644 dsdt.asl 22: MTH1 () 645 Error 6152 - ^ Illegal recursive call to method 646 that creates named objects (MTH1) 647 648Previous runtime exception: 649 ACPI Error: [INT1] Namespace lookup failure, 650 AE_ALREADY_EXISTS (20170831/dswload2-465) 651 652iASL: Updated support for External() opcodes to improve namespace 653management and error detection. These changes are related to issues seen 654with multiple-segment namespace pathnames within External declarations, 655such as below: 656 657 External(\_SB.PCI0.GFX0, DeviceObj) 658 External(\_SB.PCI0.GFX0.ALSI) 659 660iASL: Implemented support for multi-line error/warning messages. This 661enables more detailed and helpful error messages as below, from the 662initial deployment for the duplicate names error: 663 664 DSDT.iiii 1692: Device(PEG2) { 665 Error 6074 - ^ Name already exists in scope 666(PEG2) 667 668 Original name creation/declaration below: 669 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 670 671AcpiXtract: Added additional flexibility to support differing input hex 672dump formats. Specifically, hex dumps that contain partial disassembly 673and/or comments within the ACPI table data definition. There exist some 674dump utilities seen in the field that create this type of hex dump (such 675as Simics). For example: 676 677 DSDT @ 0xdfffd0c0 (10999 bytes) 678 Signature DSDT 679 Length 10999 680 Revision 1 681 Checksum 0xf3 (Ok) 682 OEM_ID BXPC 683 OEM_table_id BXDSDT 684 OEM_revision 1 685 Creator_id 1280593481 686 Creator_revision 537399345 687 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 688 ... 689 2af0: 5f 4c 30 46 00 a4 01 690 691Test suite: Miscellaneous changes/fixes: 692 More cleanup and simplification of makefiles 693 Continue compilation of test cases after a compile failure 694 Do not perform binary compare unless both files actually exist 695 696iASL: Performed some code/module restructuring. Moved all memory 697allocation functions to new modules. Two new files, aslallocate.c and 698aslcache.c 699 700---------------------------------------- 70131 August 2017. Summary of changes for version 20170831: 702 703 7041) ACPICA kernel-resident subsystem: 705 706Implemented internal support for full 64-bit addresses that appear in all 707Generic Address Structure (GAS) structures. Previously, only the lower 32 708bits were used. Affects the use of GAS structures in the FADT and other 709tables, as well as the GAS structures passed to the AcpiRead and 710AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 711 712Added header support for the PDTT ACPI table (Processor Debug Trigger 713Table). Full support in the iASL Data Table Compiler and disassembler is 714forthcoming. 715 716 7172) iASL Compiler/Disassembler and Tools: 718 719iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 720Properties Topology Table) where a flag bit was specified in the wrong 721bit position ("Line Size Valid", bit 6). 722 723iASL: Implemented support for Octal integer constants as defined by the 724ASL language grammar, per the ACPI specification. Any integer constant 725that starts with a zero is an octal constant. For example, 726 Store (037777, Local0) /* Octal constant */ 727 Store (0x3FFF, Local0) /* Hex equivalent */ 728 Store (16383, Local0) /* Decimal equivalent */ 729 730iASL: Improved overflow detection for 64-bit string conversions during 731compilation of integer constants. "Overflow" in this case means a string 732that represents an integer that is too large to fit into a 64-bit value. 733Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 734the low-order 32 bits with a warning, as previously implemented. Several 735new exceptions are defined that indicate a 64-bit overflow, as well as 736the base (radix) that was used during the attempted conversion. Examples: 737 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 738 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 739 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 740 741iASL: Added a warning for the case where a ResourceTemplate is declared 742with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 743this case, the resulting template is created with a single END_TAG 744descriptor, which is essentially useless. 745 746iASL: Expanded the -vw option (ignore specific warnings/remarks) to 747include compilation error codes as well. 748 749---------------------------------------- 75028 July 2017. Summary of changes for version 20170728: 751 752 7531) ACPICA kernel-resident subsystem: 754 755Fixed a regression seen with small resource descriptors that could cause 756an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 757 758AML interpreter: Implemented a new feature that allows forward references 759from individual named references within package objects that are 760contained within blocks of "module-level code". This provides 761compatibility with other ACPI implementations and supports existing 762firmware that depends on this feature. Example: 763 764 Name (ABCD, 1) 765 If (ABCD) /* An If() at module-level */ 766 { 767 Name (PKG1, Package() 768 { 769 INT1 /* Forward reference to object INT1 770*/ 771 }) 772 Name (INT1, 0x1234) 773 } 774 775AML Interpreter: Fixed a problem with the Alias() operator where aliases 776to some ASL objects were not handled properly. Objects affected are: 777Mutex, Event, and OperationRegion. 778 779AML Debugger: Enhanced to properly handle AML Alias objects. These 780objects have one level of indirection which was not fully supported by 781the debugger. 782 783Table Manager: Added support to detect and ignore duplicate SSDTs within 784the XSDT/RSDT. This error in the XSDT has been seen in the field. 785 786EFI and EDK2 support: 787 Enabled /WX flag for MSVC builds 788 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 789 Added local support for 64-bit multiply and shift operations 790 Added support to compile acpidump.efi on Windows 791 Added OSL function stubs for interfaces not used under EFI 792 793Added additional support for the _DMA predefined name. _DMA returns a 794buffer containing a resource template. This change add support within the 795resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 796resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 797 798 7992) iASL Compiler/Disassembler and Tools: 800 801iASL: Fixed a problem where the internal input line buffer(s) could 802overflow if there are very long lines in the input ASL source code file. 803Implemented buffer management that automatically increases the size of 804the buffers as necessary. 805 806iASL: Added an option (-vx) to "expect" particular remarks, warnings and 807errors. If the specified exception is not raised during compilation, the 808compiler emits an error. This is intended to support the ASL test suite, 809but may be useful in other contexts. 810 811iASL: Implemented a new predefined macro, __METHOD__, which returns a 812string containing the name of the current control method that is being 813compiled. 814 815iASL: Implemented debugger and table compiler support for the SDEI ACPI 816table (Software Delegated Exception Interface). James Morse 817<james.morse@arm.com> 818 819Unix/Linux makefiles: Added an option to disable compile optimizations. 820The disable occurs when the NOOPT flag is set to TRUE. 821theracermaster@gmail.com 822 823Acpidump: Added support for multiple DSDT and FACS tables. This can occur 824when there are different tables for 32-bit versus 64-bit. 825 826Enhanced error reporting for the ASL test suite (ASLTS) by removing 827unnecessary/verbose text, and emit the actual line number where an error 828has occurred. These changes are intended to improve the usefulness of the 829test suite. 830 831---------------------------------------- 83229 June 2017. Summary of changes for version 20170629: 833 834 8351) ACPICA kernel-resident subsystem: 836 837Tables: Implemented a deferred ACPI table verification. This is useful 838for operating systems where the tables cannot be verified in the early 839initialization stage due to early memory mapping limitations on some 840architectures. Lv Zheng. 841 842Tables: Removed the signature validation for dynamically loaded tables. 843Provides compatibility with other ACPI implementations. Previously, only 844SSDT tables were allowed, as per the ACPI specification. Now, any table 845signature can be used via the Load() operator. Lv Zheng. 846 847Tables: Fixed several mutex issues that could cause errors during table 848acquisition. Lv Zheng. 849 850Tables: Fixed a problem where an ACPI warning could be generated if a 851null pointer was passed to the AcpiPutTable interface. Lv Zheng. 852 853Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 854AcpiPutTable interfaces. This applies to the "late stage" table loading 855when the use of AcpiPutTable is no longer required (since the system 856memory manager is fully running and available). Lv Zheng. 857 858Fixed/Reverted a regression during processing of resource descriptors 859that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 860exception in this case. 861 862Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 863I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 864 865Interpreter: Fixed a possible fault if an Alias operator with an invalid 866or duplicate target is encountered during Alias creation in 867AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 868 869Added an option to use designated initializers for function pointers. 870Kees Cook <keescook@google.com> 871 872 8732) iASL Compiler/Disassembler and Tools: 874 875iASL: Allow compilation of External declarations with target pathnames 876that refer to existing named objects within the table. Erik Schmauss. 877 878iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 879FieldUnit name also is declared via External in the same table. Erik 880Schmauss. 881 882iASL: Allow existing scope names within pathnames used in External 883statements. For example: 884 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 885 Device (ABCD) 886 887iASL: IORT ACPI table: Implemented changes required to decode the new 888Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 889compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 890 891Disassembler: Don't abort disassembly on errors from External() 892statements. Erik Schmauss. 893 894Disassembler: fixed a possible fault when one of the Create*Field 895operators references a Resource Template. ACPICA Bugzilla 1396. 896 897iASL: In the source code, resolved some naming inconsistences across the 898parsing support. Fixes confusion between "Parse Op" and "Parse Node". 899Adds a new file, aslparseop.c 900 901---------------------------------------- 90231 May 2017. Summary of changes for version 20170531: 903 904 9050) ACPI 6.2 support: 906 907The ACPI specification version 6.2 has been released and is available at 908http://uefi.org/specifications 909 910This version of ACPICA fully supports the ACPI 6.2 specification. Changes 911are summarized below. 912 913New ACPI tables (Table Compiler/Disassembler/Templates): 914 HMAT (Heterogeneous Memory Attributes Table) 915 WSMT (Windows SMM Security Mitigation Table) 916 PPTT (Processor Properties Topology Table) 917 918New subtables for existing ACPI tables: 919 HEST (New subtable, Arch-deferred machine check) 920 SRAT (New subtable, Arch-specific affinity structure) 921 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 922 923Simple updates for existing ACPI tables: 924 BGRT (two new flag bits) 925 HEST (New bit defined for several subtables, GHES_ASSIST) 926 927New Resource Descriptors and Resource macros (Compiler/Disassembler): 928 PinConfig() 929 PinFunction() 930 PinGroup() 931 PinGroupConfig() 932 PinGroupFunction() 933 New type for hardware error notification (section 18.3.2.9) 934 935New predefined names/methods (Compiler/Interpreter): 936 _HMA (Heterogeneous Memory Attributes) 937 _LSI (Label Storage Information) 938 _LSR (Label Storage Read) 939 _LSW (Label Storage Write) 940 941ASL grammar/macro changes (Compiler): 942 For() ASL macro, implemented with the AML while operator 943 Extensions to Concatenate operator 944 Support for multiple definition blocks in same ASL file 945 Clarification for Buffer operator 946 Allow executable AML code underneath all scopes (Devices, etc.) 947 Clarification/change for the _OSI return value 948 ASL grammar update for reference operators 949 Allow a zero-length string for AML filename in DefinitionBlock 950 951Miscellaneous: 952 New device object notification value 953 Remove a notify value (0x0C) for graceful shutdown 954 New UUIDs for processor/cache properties and 955 physical package property 956 New _HID, ACPI0014 (Wireless Power Calibration Device) 957 958 9591) ACPICA kernel-resident subsystem: 960 961Added support to disable ACPI events on hardware-reduced platforms. 962Eliminates error messages of the form "Could not enable fixed event". Lv 963Zheng 964 965Fixed a problem using Device/Thermal objects with the ObjectType and 966DerefOf ASL operators. This support had not been fully/properly 967implemented. 968 969Fixed a problem where if a Buffer object containing a resource template 970was longer than the actual resource template, an error was generated -- 971even though the AML is legal. This case has been seen in the field. 972 973Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 974The values for DUAL_PIC and MULTIPLE_APIC were reversed. 975 976Added header file changes for the TPM2 ACPI table. Update to new version 977of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 978 979Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 980These interfaces are intended to be used only in conjunction with the 981predefined _DLM method (Device Lock Method). "This object appears in a 982device scope when AML access to the device must be synchronized with the 983OS environment". 984 985Example Code and Data Size: These are the sizes for the OS-independent 986acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 987debug version of the code includes the debug output trace mechanism and 988has a much larger code and data size. 989 990 Current Release: 991 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 992 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 993 Previous Release: 994 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 995 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 996 997 9982) iASL Compiler/Disassembler and Tools: 999 1000iASL: Fixed a problem where an External() declaration could not refer to 1001a Field Unit. Erik Schmauss. 1002 1003Disassembler: Improved support for the Switch/Case operators. This 1004feature will disassemble AML code back to the original Switch operators 1005when possible, instead of an If..Else sequence. David Box 1006 1007iASL and disassembler: Improved the handling of multiple extraneous 1008parentheses for both ASL input and disassembled ASL output. 1009 1010Improved the behavior of the iASL compiler and disassembler to detect 1011improper use of external declarations 1012 1013Disassembler: Now aborts immediately upon detection of an unknown AML 1014opcode. The AML parser has no real way to recover from this, and can 1015result in the creation of an ill-formed parse tree that causes errors 1016later during the disassembly. 1017 1018All tools: Fixed a problem where the Unix application OSL did not handle 1019control-c correctly. For example, a control-c could incorrectly wake the 1020debugger. 1021 1022AcpiExec: Improved the Control-C handling and added a handler for 1023segmentation faults (SIGSEGV). Supports both Windows and Unix-like 1024environments. 1025 1026Reduced the verbosity of the generic unix makefiles. Previously, each 1027compilation displayed the full set of compiler options. This has been 1028eliminated as the options are easily inspected within the makefiles. Each 1029compilation now results in a single line of output. 1030 1031---------------------------------------- 103203 March 2017. Summary of changes for version 20170303: 1033 1034 10350) ACPICA licensing: 1036 1037The licensing information at the start of each source code module has 1038been updated. In addition to the Intel license, the dual GPLv2/BSD 1039license has been added for completeness. Now, a single version of the 1040source code should be suitable for all ACPICA customers. This is the 1041major change for this release since it affects all source code modules. 1042 1043 10441) ACPICA kernel-resident subsystem: 1045 1046Fixed two issues with the common asltypes.h header that could cause 1047problems in some environments: (Kim Jung-uk) 1048 Removed typedef for YY_BUFFER_STATE ? 1049 Fixes an error with earlier versions of Flex. 1050 Removed use of FILE typedef (which is only defined in stdio.h) 1051 1052 10532) iASL Compiler/Disassembler and Tools: 1054 1055Disassembler: fixed a regression introduced in 20170224. A fix for a 1056memory leak related to resource descriptor tags (names) could fault when 1057the disassembler was generated with 64-bit compilers. 1058 1059The ASLTS test suite has been updated to implement a new testing 1060architecture. During generation of the suite from ASL source, both the 1061ASL and ASL+ compilers are now validated, as well as the disassembler 1062itself (Erik Schmauss). The architecture executes as follows: 1063 1064 For every ASL source module: 1065 Compile (legacy ASL compilation) 1066 Disassemble the resulting AML to ASL+ source code 1067 Compile the new ASL+ module 1068 Perform a binary compare on the legacy AML and the new ASL+ AML 1069 The ASLTS suite then executes normally using the AML binaries. 1070 1071---------------------------------------- 107224 February 2017. Summary of changes for version 20170224: 1073 1074 10751) ACPICA kernel-resident subsystem: 1076 1077Interpreter: Fixed two issues with the control method return value auto- 1078repair feature, where an attempt to double-delete an internal object 1079could result in an ACPICA warning (for _CID repair and others). No fault 1080occurs, however, because the attempted deletion (actually a release to an 1081internal cache) is detected and ignored via object poisoning. 1082 1083Debugger: Fixed an AML interpreter mutex issue during the single stepping 1084of control methods. If certain debugger commands are executed during 1085stepping, a mutex aquire/release error could occur. Lv Zheng. 1086 1087Fixed some issues generating ACPICA with the Intel C compiler by 1088restoring the original behavior and compiler-specific include file in 1089acenv.h. Lv Zheng. 1090 1091Example Code and Data Size: These are the sizes for the OS-independent 1092acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1093debug version of the code includes the debug output trace mechanism and 1094has a much larger code and data size. 1095 1096 Current Release: 1097 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1098 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1099 Previous Release: 1100 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1101 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1102 1103 11042) iASL Compiler/Disassembler and Tools: 1105 1106iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 1107tool has been designed, implemented, and included in this release. The 1108key feature of this utility is that the original comments within the 1109input ASL file are preserved during the conversion process, and included 1110within the converted ASL+ file -- thus creating a transparent conversion 1111of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 1112 1113 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 1114converted code 1115 1116iASL/Disassembler: Improved the detection and correct disassembly of 1117Switch/Case operators. This feature detects sequences of if/elseif/else 1118operators that originated from ASL Switch/Case/Default operators and 1119emits the original operators. David Box. 1120 1121iASL: Improved the IORT ACPI table support in the following areas. Lv 1122Zheng: 1123 Clear MappingOffset if the MappingCount is zero. 1124 Fix the disassembly of the SMMU GSU interrupt offset. 1125 Update the template file for the IORT table. 1126 1127Disassembler: Enhanced the detection and disassembly of resource 1128template/descriptor within a Buffer object. An EndTag descriptor is now 1129required to have a zero second byte, since all known ASL compilers emit 1130this. This helps eliminate incorrect decisions when a buffer is 1131disassembled (false positives on resource templates). 1132 1133---------------------------------------- 113419 January 2017. Summary of changes for version 20170119: 1135 1136 11371) General ACPICA software: 1138 1139Entire source code base: Added the 2017 copyright to all source code 1140legal/licensing module headers and utility/tool signons. This includes 1141the standard Linux dual-license header. This affects virtually every file 1142in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 1143the ACPICA test suite. 1144 1145 11462) iASL Compiler/Disassembler and Tools: 1147 1148iASL: Removed/fixed an inadvertent remark when a method argument 1149containing a reference is used as a target operand within the method (and 1150never used as a simple argument), as in the example below. Jeffrey Hugo. 1151 1152 dsdt.asl 1507: Store(0x1, Arg0) 1153 Remark 2146 - ^ Method Argument is never used (Arg0) 1154 1155All tools: Removed the bit width of the compiler that generated the tool 1156from the common signon for all user space tools. This proved to be 1157confusing and unnecessary. This includes similar removal of HARDWARE_NAME 1158from the generic makefiles (Thomas Petazzoni). Example below. 1159 1160 Old: 1161 ASL+ Optimizing Compiler version 20170119-32 1162 ASL+ Optimizing Compiler version 20170119-64 1163 1164 New: 1165 ASL+ Optimizing Compiler version 20170119 1166 1167---------------------------------------- 116822 December 2016. Summary of changes for version 20161222: 1169 1170 11711) ACPICA kernel-resident subsystem: 1172 1173AML Debugger: Implemented a new mechanism to simplify and enhance 1174debugger integration into all environments, including kernel debuggers 1175and user-space utilities, as well as remote debug services. This 1176mechanism essentially consists of new OSL interfaces to support debugger 1177initialization/termination, as well as wait/notify interfaces to perform 1178the debugger handshake with the host. Lv Zheng. 1179 1180 New OSL interfaces: 1181 AcpiOsInitializeDebugger (void) 1182 AcpiOsTerminateDebugger (void) 1183 AcpiOsWaitCommandReady (void) 1184 AcpiOsNotifyCommandComplete (void) 1185 1186 New OS services layer: 1187 osgendbg.c -- Example implementation, and used for AcpiExec 1188 1189Update for Generic Address Space (GAS) support: Although the AccessWidth 1190and/or BitOffset fields of the GAS are not often used, this change now 1191fully supports these fields. This affects the internal support for FADT 1192registers, registers in other ACPI data tables, and the AcpiRead and 1193AcpiWrite public interfaces. Lv Zheng. 1194 1195Sleep support: In order to simplify integration of ACPI sleep for the 1196various host operating systems, a new OSL interface has been introduced. 1197AcpiOsEnterSleep allows the host to perform any required operations 1198before the final write to the sleep control register(s) is performed by 1199ACPICA. Lv Zheng. 1200 1201 New OSL interface: 1202 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 1203 1204 Called from these internal interfaces: 1205 AcpiHwLegacySleep 1206 AcpiHwExtendedSleep 1207 1208EFI support: Added a very small EFI/ACPICA example application. Provides 1209a simple demo for EFI integration, as well as assisting with resolution 1210of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 1211 1212 source/tools/efihello/efihello.c 1213 1214Local C library: Implemented several new functions to enhance ACPICA 1215portability, for environments where these clib functions are not 1216available (such as EFI). Lv Zheng: 1217 putchar 1218 getchar 1219 strpbrk 1220 strtok 1221 memmove 1222 1223Fixed a regression where occasionally a valid resource descriptor was 1224incorrectly detected as invalid at runtime, and a 1225AE_AML_NO_RESOURCE_END_TAG was returned. 1226 1227Fixed a problem with the recently implemented support that enables 1228control method invocations as Target operands to many ASL operators. 1229Warnings of this form: "Needed type [Reference], found [Processor]" were 1230seen at runtime for some method invocations. 1231 1232Example Code and Data Size: These are the sizes for the OS-independent 1233acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1234debug version of the code includes the debug output trace mechanism and 1235has a much larger code and data size. 1236 1237 Current Release: 1238 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 1239 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 1240 Previous Release: 1241 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1242 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1243 1244 12452) iASL Compiler/Disassembler and Tools: 1246 1247Disassembler: Enhanced output by adding the capability to detect and 1248disassemble ASL Switch/Case statements back to the original ASL source 1249code instead of if/else blocks. David Box. 1250 1251AcpiHelp: Split a large file into separate files based upon 1252functionality/purpose. New files are: 1253 ahaml.c 1254 ahasl.c 1255 1256---------------------------------------- 125717 November 2016. Summary of changes for version 20161117: 1258 1259 12601) ACPICA kernel-resident subsystem: 1261 1262Table Manager: Fixed a regression introduced in 20160729, "FADT support 1263cleanup". This was an attempt to remove all references in the source to 1264the FADT version 2, which never was a legal version number. It was 1265skipped because it was an early version of 64-bit support that was 1266eventually abandoned for the current 64-bit support. 1267 1268Interpreter: Fixed a problem where runtime implicit conversion was 1269incorrectly disabled for the ASL operators below. This brings the 1270behavior into compliance with the ACPI specification: 1271 FromBCD 1272 ToBCD 1273 ToDecimalString 1274 ToHexString 1275 ToInteger 1276 ToBuffer 1277 1278Table Manager: Added a new public interface, AcpiPutTable, used to 1279release and free an ACPI table returned by AcpiGetTable and related 1280interfaces. Lv Zheng. 1281 1282Example Code and Data Size: These are the sizes for the OS-independent 1283acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1284debug version of the code includes the debug output trace mechanism and 1285has a much larger code and data size. 1286 1287 Current Release: 1288 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1289 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1290 Previous Release: 1291 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1292 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1293 1294 12952) iASL Compiler/Disassembler and Tools: 1296 1297Disassembler: Fixed a regression for disassembly of Resource Template. 1298Detection of templates in the AML stream missed some types of templates. 1299 1300iASL: Fixed a problem where an Access Size error was returned for the PCC 1301address space when the AccessSize of the GAS register is greater than a 1302DWORD. Hoan Tran. 1303 1304iASL: Implemented several grammar changes for the operators below. These 1305changes are slated for the next version of the ACPI specification: 1306 RefOf - Disallow method invocation as an operand 1307 CondRefOf - Disallow method invocation as an operand 1308 DerefOf - Disallow operands that use the result from operators 1309that 1310 do not return a reference (Changed TermArg to 1311SuperName). 1312 1313iASL: Control method invocations are now allowed for Target operands, as 1314per the ACPI specification. Removed error for using a control method 1315invocation as a Target operand. 1316 1317Disassembler: Improved detection of Resource Templates, Unicode, and 1318Strings within Buffer objects. These subtypes do not contain a specific 1319opcode to indicate the originating ASL code, and they must be detected by 1320other means within the disassembler. 1321 1322iASL: Implemented an optimization improvement for 32-bit ACPI tables 1323(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 1324only after 64-bit to 32-bit truncation. A truncation warning message is 1325still emitted, however. 1326 1327AcpiXtract: Implemented handling for both types of line terminators (LF 1328or CR/LF) so that it can accept AcpiDump output files from any system. 1329Peter Wu. 1330 1331AcpiBin: Added two new options for comparing AML files: 1332 -a: compare and display ALL mismatches 1333 -o: start compare at this offset into the second file 1334 1335---------------------------------------- 133630 September 2016. Summary of changes for version 20160930: 1337 1338 13391) ACPICA kernel-resident subsystem: 1340 1341Fixed a regression in the internal AcpiTbFindTable function where a non 1342AE_OK exception could inadvertently be returned even if the function did 1343not fail. This problem affects the following operators: 1344 DataTableRegion 1345 LoadTable 1346 1347Fixed a regression in the LoadTable operator where a load to any 1348namespace location other than the root no longer worked properly. 1349 1350Increased the maximum loop count value that will result in the 1351AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 1352prevent infinite loops within the AML interpreter and thus the host OS 1353kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 13541,048,575). 1355 1356Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 1357acpixf.h file. This allows hosts to easily configure the maximum loop 1358count at runtime. 1359 1360Removed an illegal character in the strtoul64.c file. This character 1361caused errors with some C compilers. 1362 1363Example Code and Data Size: These are the sizes for the OS-independent 1364acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1365debug version of the code includes the debug output trace mechanism and 1366has a much larger code and data size. 1367 1368 Current Release: 1369 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1370 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1371 Previous Release: 1372 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 1373 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1374 1375 13762) iASL Compiler/Disassembler and Tools: 1377 1378Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 1379the simpler ASL ElseIf keyword. During the conversion, a trailing If 1380block could be lost and missing from the disassembled output. 1381 1382iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 1383the missing rule caused a parse error when using the Index operator as an 1384operand to ObjectType. This construct now compiles properly. Example: 1385 ObjectType(PKG1[4]). 1386 1387iASL: Correctly handle unresolved symbols in the hardware map file (-lm 1388option). Previously, unresolved symbols could cause a protection fault. 1389Such symbols are now marked as unresolved in the map file. 1390 1391iASL: Implemented support to allow control method invocations as an 1392operand to the ASL DeRefOf operator. Example: 1393 DeRefOf(MTH1(Local0)) 1394 1395Disassembler: Improved support for the ToPLD ASL macro. Detection of a 1396possible _PLD buffer now includes examination of both the normal buffer 1397length (16 or 20) as well as the surrounding AML package length. 1398 1399Disassembler: Fixed a problem with the decoding of complex expressions 1400within the Divide operator for ASL+. For the case where both the quotient 1401and remainder targets are specified, the entire statement cannot be 1402disassembled. Previously, the output incorrectly contained a mix of ASL- 1403and ASL+ operators. This mixed statement causes a syntax error when 1404compiled. Example: 1405 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 1406disassembled to: 1407 Divide (INT1 + 6, 128, RSLT, QUOT) 1408 1409iASL/Tools: Added support to process AML and non-AML ACPI tables 1410consistently. For the disassembler and AcpiExec, allow all types of ACPI 1411tables (AML and data tables). For the iASL -e option, allow only AML 1412tables (DSDT/SSDT). 1413 1414---------------------------------------- 141531 August 2016. Summary of changes for version 20160831: 1416 1417 14181) ACPICA kernel-resident subsystem: 1419 1420Improve support for the so-called "module-level code", which is defined 1421to be math, logical and control AML opcodes that appear outside of any 1422control method. This change improves the support by adding more opcodes 1423that can be executed in the manner. Some other issues have been solved, 1424and the ASL grammar changes to support such code under all scope 1425operators (Device, etc.) are complete. Lv Zheng. 1426 1427UEFI support: these OSL functions have been implemented. This is an 1428additional step toward supporting the AcpiExec utility natively (with 1429full hardware access) under UEFI. Marcelo Ferreira. 1430 AcpiOsReadPciConfiguration 1431 AcpiOsWritePciConfiguration 1432 1433Fixed a possible mutex error during control method auto-serialization. Lv 1434Zheng. 1435 1436Updated support for the Generic Address Structure by fully implementing 1437all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 1438Zheng. 1439 1440Updated the return value for the internal _OSI method. Instead of 14410xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 1442for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 1443implementations, and will be reflected and clarified in the next version 1444of the ACPI specification. 1445 1446Implemented two new table events that can be passed to an ACPICA table 1447handler. These events are used to indicate a table installation or 1448uninstallation. These events are used in addition to existed table load 1449and unload events. Lv Zheng. 1450 1451Implemented a cleanup for all internal string-to-integer conversions. 1452Consolidate multiple versions of this functionality and limit possible 1453bases to either 10 or 16 to simplify the code. Adds a new file, 1454utstrtoul64. 1455 1456Cleanup the inclusion order of the various compiler-specific headers. 1457This simplifies build configuration management. The compiler-specific 1458headers are now split out from the host-specific headers. Lv Zheng. 1459 1460Example Code and Data Size: These are the sizes for the OS-independent 1461acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1462debug version of the code includes the debug output trace mechanism and 1463has a much larger code and data size. 1464 1465 Current Release: 1466 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 1467 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1468 1469 14702) iASL Compiler/Disassembler and Tools: 1471 1472iASL/AcpiExec: Added a command line option to display the build date/time 1473of the tool (-vd). This can be useful to verify that the correct version 1474of the tools are being used. 1475 1476AML Debugger: Implemented a new subcommand ("execute predef") to execute 1477all predefined control methods and names within the current namespace. 1478This can be useful for debugging problems with ACPI tables and the ACPI 1479namespace. 1480 1481---------------------------------------- 148229 July 2016. Summary of changes for version 20160729: 1483 1484 14851) ACPICA kernel-resident subsystem: 1486 1487Implemented basic UEFI support for the various ACPICA tools. This 1488includes: 14891) An OSL to implement the various AcpiOs* interfaces on UEFI. 14902) Support to obtain the ACPI tables on UEFI. 14913) Local implementation of required C library functions not available on 1492UEFI. 14934) A front-end (main) function for the tools for UEFI-related 1494initialization. 1495 1496The initial deployment of this support is the AcpiDump utility executing 1497as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 1498Current environments supported are Linux/Unix. MSVC generation is not 1499supported at this time. See the generate/efi/README file for build 1500instructions. Lv Zheng. 1501 1502Future plans include porting the AcpiExec utility to execute natively on 1503the platform with I/O and memory access. This will allow viewing/dump of 1504the platform namespace and native execution of ACPI control methods that 1505access the actual hardware. To fully implement this support, the OSL 1506functions below must be implemented with UEFI interfaces. Any community 1507help in the implementation of these functions would be appreciated: 1508 AcpiOsReadPort 1509 AcpiOsWritePort 1510 AcpiOsReadMemory 1511 AcpiOsWriteMemory 1512 AcpiOsReadPciConfiguration 1513 AcpiOsWritePciConfiguration 1514 1515Restructured and standardized the C library configuration for ACPICA, 1516resulting in the various configuration options below. This includes a 1517global restructuring of the compiler-dependent and platform-dependent 1518include files. These changes may affect the existing platform-dependent 1519configuration files on some hosts. Lv Zheng. 1520 1521The current C library configuration options appear below. For any issues, 1522it may be helpful to examine the existing compiler-dependent and 1523platform-dependent files as examples. Lv Zheng. 1524 15251) Linux kernel: 1526 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1527library. 1528 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 15292) Unix/Windows/BSD applications: 1530 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 1531library. 1532 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 15333) UEFI applications: 1534 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1535library. 1536 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 15374) UEFI applications (EDK2/StdLib): 1538 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 1539 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 1540 1541 1542AML interpreter: "module-level code" support. Allows for execution of so- 1543called "executable" AML code (math/logical operations, etc.) outside of 1544control methods not just at the module level (top level) but also within 1545any scope declared outside of a control method - Scope{}, Device{}, 1546Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 1547 1548Simplified the configuration of the "maximum AML loops" global option by 1549adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 1550modified at runtime. 1551 1552 1553Example Code and Data Size: These are the sizes for the OS-independent 1554acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1555debug version of the code includes the debug output trace mechanism and 1556has a much larger code and data size. 1557 1558 Current Release: 1559 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 1560 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 1561 1562 15632) iASL Compiler/Disassembler and Tools: 1564 1565iASL: Add full support for the RASF ACPI table (RAS Features Table). 1566Includes disassembler, data table compiler, and header support. 1567 1568iASL Expand "module-level code" support. Allows for 1569compilation/disassembly of so-called "executable" AML code (math/logical 1570operations, etc.) outside of control methods not just at the module level 1571(top level) but also within any scope declared outside of a control 1572method - Scope{}, Device{}, Processor{}, PowerResource{}, and 1573ThermalZone{}. 1574 1575AcpiDump: Added support for dumping all SSDTs on newer versions of 1576Windows. These tables are now easily available -- SSDTs are not available 1577through the registry on older versions. 1578 1579---------------------------------------- 158027 May 2016. Summary of changes for version 20160527: 1581 1582 15831) ACPICA kernel-resident subsystem: 1584 1585Temporarily reverted the new arbitrary bit length/alignment support in 1586AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 1587a number of regressions with the new code that need to be fully resolved 1588and tested before this support can be finally integrated into ACPICA. 1589Apologies for any inconveniences these issues may have caused. 1590 1591The ACPI message macros are not configurable (ACPI_MSG_ERROR, 1592ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 1593and ACPI_MSG_BIOS_WARNING). Lv Zheng. 1594 1595Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 1596option. Adds a new return macro, return_STR. Junk-uk Kim. 1597 1598Example Code and Data Size: These are the sizes for the OS-independent 1599acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1600debug version of the code includes the debug output trace mechanism and 1601has a much larger code and data size. 1602 1603 Current Release: 1604 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 1605 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1606 Previous Release: 1607 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1608 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 1609 1610---------------------------------------- 161122 April 2016. Summary of changes for version 20160422: 1612 16131) ACPICA kernel-resident subsystem: 1614 1615Fixed a regression in the GAS (generic address structure) arbitrary bit 1616support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 1617and incorrect return values. Lv Zheng. ACPICA BZ 1270. 1618 1619ACPI 6.0: Added support for new/renamed resource macros. One new argument 1620was added to each of these macros, and the original name has been 1621deprecated. The AML disassembler will always disassemble to the new 1622names. Support for the new macros was added to iASL, disassembler, 1623resource manager, and the acpihelp utility. ACPICA BZ 1274. 1624 1625 I2cSerialBus -> I2cSerialBusV2 1626 SpiSerialBus -> SpiSerialBusV2 1627 UartSerialBus -> UartSerialBusV2 1628 1629ACPI 6.0: Added support for a new integer field that was appended to the 1630package object returned by the _BIX method. This adds iASL compile-time 1631and AML runtime error checking. ACPICA BZ 1273. 1632 1633ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 1634Subspace Type2" (Headers, Disassembler, and data table compiler). 1635 1636Example Code and Data Size: These are the sizes for the OS-independent 1637acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1638debug version of the code includes the debug output trace mechanism and 1639has a much larger code and data size. 1640 1641 Current Release: 1642 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1643 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1644 Previous Release: 1645 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1646 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1647 1648 16492) iASL Compiler/Disassembler and Tools: 1650 1651iASL: Implemented an ASL grammar extension to allow/enable executable 1652"module-level code" to be created and executed under the various 1653operators that create new scopes. This type of AML code is already 1654supported in all known AML interpreters, and the grammar change will 1655appear in the next version of the ACPI specification. Simplifies the 1656conditional runtime creation of named objects under these object types: 1657 1658 Device 1659 PowerResource 1660 Processor 1661 Scope 1662 ThermalZone 1663 1664iASL: Implemented a new ASL extension, a "For" loop macro to add greater 1665ease-of-use to the ASL language. The syntax is similar to the 1666corresponding C operator, and is implemented with the existing AML While 1667opcode -- thus requiring no changes to existing AML interpreters. 1668 1669 For (Initialize, Predicate, Update) {TermList} 1670 1671Grammar: 1672 ForTerm := 1673 For ( 1674 Initializer // Nothing | TermArg => ComputationalData 1675 Predicate // Nothing | TermArg => ComputationalData 1676 Update // Nothing | TermArg => ComputationalData 1677 ) {TermList} 1678 1679 1680iASL: The _HID/_ADR detection and validation has been enhanced to search 1681under conditionals in order to allow these objects to be conditionally 1682created at runtime. 1683 1684iASL: Fixed several issues with the constant folding feature. The 1685improvement allows better detection and resolution of statements that can 1686be folded at compile time. ACPICA BZ 1266. 1687 1688iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 1689conversion to the ASL ElseIf operator where incorrect ASL code could be 1690generated. 1691 1692iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 1693sometimes an extra (and extraneous) set of parentheses were emitted for 1694some combinations of operators. Although this did not cause any problems 1695with recompilation of the disassembled code, it made the code more 1696difficult to read. David Box. ACPICA BZ 1231. 1697 1698iASL: Changed to ignore the unreferenced detection for predefined names 1699of resource descriptor elements, when the resource descriptor is 1700created/defined within a control method. 1701 1702iASL: Disassembler: Fix a possible fault with externally declared Buffer 1703objects. 1704 1705---------------------------------------- 170618 March 2016. Summary of changes for version 20160318: 1707 17081) ACPICA kernel-resident subsystem: 1709 1710Added support for arbitrary bit lengths and bit offsets for registers 1711defined by the Generic Address Structure. Previously, only aligned bit 1712lengths of 8/16/32/64 were supported. This was sufficient for many years, 1713but recently some machines have been seen that require arbitrary bit- 1714level support. ACPICA BZ 1240. Lv Zheng. 1715 1716Fixed an issue where the \_SB._INI method sometimes must be evaluated 1717before any _REG methods are evaluated. Lv Zheng. 1718 1719Implemented several changes related to ACPI table support 1720(Headers/Disassembler/TableCompiler): 1721NFIT: For ACPI 6.1, updated to add some additional new fields and 1722constants. 1723FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 17246). 1725DMAR: Added new constants per the 10/2014 DMAR spec. 1726IORT: Added new subtable per the 10/2015 IORT spec. 1727HEST: For ACPI 6.1, added new constants and new subtable. 1728DBG2: Added new constants per the 12/2015 DBG2 spec. 1729FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 1730ACPICA BZ 1249. 1731ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 1732 1733Updated header support for the DMAR table to match the current version of 1734the related spec. 1735 1736Added extensions to the ASL Concatenate operator to allow any ACPI object 1737to be passed as an operand. Any object other than Integer/String/Buffer 1738simply returns a string containing the object type. This extends the 1739usefulness of the Printf macros. Previously, Concatenate would abort the 1740control method if a non-data object was encountered. 1741 1742ACPICA source code: Deployed the C "const" keyword across the source code 1743where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 1744 1745Example Code and Data Size: These are the sizes for the OS-independent 1746acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1747debug version of the code includes the debug output trace mechanism and 1748has a much larger code and data size. 1749 1750 Current Release: 1751 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1752 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1753 Previous Release: 1754 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1755 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1756 1757 17582) iASL Compiler/Disassembler and Tools: 1759 1760iASL/Disassembler: Improved the heuristic used to determine the number of 1761arguments for an externally defined control method (a method in another 1762table). Although this is an improvement, there is no deterministic way to 1763"guess" the number of method arguments. Only the ACPI 6.0 External opcode 1764will completely solve this problem as it is deployed (automatically) in 1765newer BIOS code. 1766 1767iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 1768statements that could cause errors when the disassembled file is 1769compiled. ACPICA BZ 1243. David Box. 1770 1771iASL: Fixed a regression caused by the merger of the two versions of the 1772local strtoul64. Because of a dependency on a global variable, strtoul64 1773could return an error for integers greater than a 32-bit value. ACPICA BZ 17741260. 1775 1776iASL: Fixed a regression where a fault could occur for an ASL Return 1777statement if it invokes a control method that is not resolved. ACPICA BZ 17781264. 1779 1780AcpiXtract: Improved input file validation: detection of binary files and 1781non-acpidump text files. 1782 1783---------------------------------------- 178412 February 2016. Summary of changes for version 20160212: 1785 17861) ACPICA kernel-resident subsystem: 1787 1788Implemented full support for the ACPI 6.1 specification (released in 1789January). This version of the specification is available at: 1790http://www.uefi.org/specifications 1791 1792Only a relatively small number of changes were required in ACPICA to 1793support ACPI 6.1, in these areas: 1794- New predefined names 1795- New _HID values 1796- A new subtable for HEST 1797- A few other header changes for new values 1798 1799Ensure \_SB_._INI is executed before any _REG methods are executed. There 1800appears to be existing BIOS code that relies on this behavior. Lv Zheng. 1801 1802Reverted a change made in version 20151218 which enabled method 1803invocations to be targets of various ASL operators (SuperName and Target 1804grammar elements). While the new behavior is supported by the ACPI 1805specification, other AML interpreters do not support this behavior and 1806never will. The ACPI specification will be updated for ACPI 6.2 to remove 1807this support. Therefore, the change was reverted to the original ACPICA 1808behavior. 1809 1810ACPICA now supports the GCC 6 compiler. 1811 1812Current Release: (Note: build changes increased sizes) 1813 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1814 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1815Previous Release: 1816 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1817 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 1818 1819 18202) iASL Compiler/Disassembler and Tools: 1821 1822Completed full support for the ACPI 6.0 External() AML opcode. The 1823compiler emits an external AML opcode for each ASL External statement. 1824This opcode is used by the disassembler to assist with the disassembly of 1825external control methods by specifying the required number of arguments 1826for the method. AML interpreters do not use this opcode. To ensure that 1827interpreters do not even see the opcode, a block of one or more external 1828opcodes is surrounded by an "If(0)" construct. As this feature becomes 1829commonly deployed in BIOS code, the ability of disassemblers to correctly 1830disassemble AML code will be greatly improved. David Box. 1831 1832iASL: Implemented support for an optional cross-reference output file. 1833The -lx option will create a the cross-reference file with the suffix 1834"xrf". Three different types of cross-reference are created in this file: 1835- List of object references made from within each control method 1836- Invocation (caller) list for each user-defined control method 1837- List of references to each non-method object in the namespace 1838 1839iASL: Method invocations as ASL Target operands are now disallowed and 1840flagged as errors in preparation for ACPI 6.2 (see the description of the 1841problem above). 1842 1843---------------------------------------- 18448 January 2016. Summary of changes for version 20160108: 1845 18461) ACPICA kernel-resident subsystem: 1847 1848Updated all ACPICA copyrights and signons to 2016: Added the 2016 1849copyright to all source code module headers and utility/tool signons. 1850This includes the standard Linux dual-license header. This affects 1851virtually every file in the ACPICA core subsystem, iASL compiler, all 1852ACPICA utilities, and the ACPICA test suite. 1853 1854Fixed a regression introduced in version 20151218 concerning the 1855execution of so-called module-level ASL/AML code. Namespace objects 1856created under a module-level If() construct were not properly/fully 1857entered into the namespace and could cause an interpreter fault when 1858accessed. 1859 1860Example Code and Data Size: These are the sizes for the OS-independent 1861acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1862debug version of the code includes the debug output trace mechanism and 1863has a much larger code and data size. 1864 1865Current Release: 1866 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1867 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 1868 Previous Release: 1869 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1870 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1871 1872 18732) iASL Compiler/Disassembler and Tools: 1874 1875Fixed a problem with the compilation of the GpioIo and GpioInt resource 1876descriptors. The _PIN field name was incorrectly defined to be an array 1877of 32-bit values, but the _PIN values are in fact 16 bits each. This 1878would cause incorrect bit width warnings when using Word (16-bit) fields 1879to access the descriptors. 1880 1881 1882---------------------------------------- 188318 December 2015. Summary of changes for version 20151218: 1884 18851) ACPICA kernel-resident subsystem: 1886 1887Implemented per-AML-table execution of "module-level code" as individual 1888ACPI tables are loaded into the namespace during ACPICA initialization. 1889In other words, any module-level code within an AML table is executed 1890immediately after the table is loaded, instead of batched and executed 1891after all of the tables have been loaded. This provides compatibility 1892with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 1893David Box. 1894 1895To fully support the feature above, the default operation region handlers 1896for the SystemMemory, SystemIO, and PCI_Config address spaces are now 1897installed before any ACPI tables are loaded. This enables module-level 1898code to access these address spaces during the table load and module- 1899level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 1900Box. 1901 1902Implemented several changes to the internal _REG support in conjunction 1903with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 1904utilities for the changes above. Although these tools were changed, host 1905operating systems that simply use the default handlers for SystemMemory, 1906SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 1907 1908For example, in the code below, DEV1 is conditionally added to the 1909namespace by the DSDT via module-level code that accesses an operation 1910region. The SSDT references DEV1 via the Scope operator. DEV1 must be 1911created immediately after the DSDT is loaded in order for the SSDT to 1912successfully reference DEV1. Previously, this code would cause an 1913AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 1914fully supported by ACPICA. 1915 1916 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 1917 { 1918 OperationRegion (OPR1, SystemMemory, 0x400, 32) 1919 Field (OPR1, AnyAcc, NoLock, Preserve) 1920 { 1921 FLD1, 1 1922 } 1923 If (FLD1) 1924 { 1925 Device (\DEV1) 1926 { 1927 } 1928 } 1929 } 1930 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 1931 { 1932 External (\DEV1, DeviceObj) 1933 Scope (\DEV1) 1934 { 1935 } 1936 } 1937 1938Fixed an AML interpreter problem where control method invocations were 1939not handled correctly when the invocation was itself a SuperName argument 1940to another ASL operator. In these cases, the method was not invoked. 1941ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 1942argument: 1943 Store 1944 Acquire, Wait 1945 CondRefOf, RefOf 1946 Decrement, Increment 1947 Load, Unload 1948 Notify 1949 Signal, Release, Reset 1950 SizeOf 1951 1952Implemented automatic String-to-ObjectReference conversion support for 1953packages returned by predefined names (such as _DEP). A common BIOS error 1954is to add double quotes around an ObjectReference namepath, which turns 1955the reference into an unexpected string object. This support detects the 1956problem and corrects it before the package is returned to the caller that 1957invoked the method. Lv Zheng. 1958 1959Implemented extensions to the Concatenate operator. Concatenate now 1960accepts any type of object, it is not restricted to simply 1961Integer/String/Buffer. For objects other than these 3 basic data types, 1962the argument is treated as a string containing the name of the object 1963type. This expands the utility of Concatenate and the Printf/Fprintf 1964macros. ACPICA BZ 1222. 1965 1966Cleaned up the output of the ASL Debug object. The timer() value is now 1967optional and no longer emitted by default. Also, the basic data types of 1968Integer/String/Buffer are simply emitted as their values, without a data 1969type string -- since the data type is obvious from the output. ACPICA BZ 19701221. 1971 1972Example Code and Data Size: These are the sizes for the OS-independent 1973acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1974debug version of the code includes the debug output trace mechanism and 1975has a much larger code and data size. 1976 1977 Current Release: 1978 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1979 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1980 Previous Release: 1981 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1982 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1983 1984 19852) iASL Compiler/Disassembler and Tools: 1986 1987iASL: Fixed some issues with the ASL Include() operator. This operator 1988was incorrectly defined in the iASL parser rules, causing a new scope to 1989be opened for the code within the include file. This could lead to 1990several issues, including allowing ASL code that is technically illegal 1991and not supported by AML interpreters. Note, this does not affect the 1992related #include preprocessor operator. ACPICA BZ 1212. 1993 1994iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 1995operator is essentially an ASL macro since there is no AML opcode 1996associated with it. The code emitted by the iASL compiler for ElseIf is 1997an Else opcode followed immediately by an If opcode. The disassembler 1998will now emit an ElseIf if it finds an Else immediately followed by an 1999If. This simplifies the decoded ASL, especially for deeply nested 2000If..Else and large Switch constructs. Thus, the disassembled code more 2001closely follows the original source ASL. ACPICA BZ 1211. Example: 2002 2003 Old disassembly: 2004 Else 2005 { 2006 If (Arg0 == 0x02) 2007 { 2008 Local0 = 0x05 2009 } 2010 } 2011 2012 New disassembly: 2013 ElseIf (Arg0 == 0x02) 2014 { 2015 Local0 = 0x05 2016 } 2017 2018AcpiExec: Added support for the new module level code behavior and the 2019early region installation. This required a small change to the 2020initialization, since AcpiExec must install its own operation region 2021handlers. 2022 2023AcpiExec: Added support to make the debug object timer optional. Default 2024is timer disabled. This cleans up the debug object output -- the timer 2025data is rarely used. 2026 2027AcpiExec: Multiple ACPI tables are now loaded in the order that they 2028appear on the command line. This can be important when there are 2029interdependencies/references between the tables. 2030 2031iASL/Templates. Add support to generate template files with multiple 2032SSDTs within a single output file. Also added ommand line support to 2033specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 20341223, 1225. 2035 2036 2037---------------------------------------- 203824 November 2015. Summary of changes for version 20151124: 2039 20401) ACPICA kernel-resident subsystem: 2041 2042Fixed a possible regression for a previous update to FADT handling. The 2043FADT no longer has a fixed table ID, causing some issues with code that 2044was hardwired to a specific ID. Lv Zheng. 2045 2046Fixed a problem where the method auto-serialization could interfere with 2047the current SyncLevel. This change makes the auto-serialization support 2048transparent to the SyncLevel support and management. 2049 2050Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 2051interface is intended for early access to the namespace during the 2052initial namespace device discovery walk. The _SUB method has been seen to 2053access operation regions in some cases, causing errors because the 2054operation regions are not fully initialized. 2055 2056AML Debugger: Fixed some issues with the terminate/quit/exit commands 2057that can cause faults. Lv Zheng. 2058 2059AML Debugger: Add thread ID support so that single-step mode only applies 2060to the AML Debugger thread. This prevents runtime errors within some 2061kernels. Lv Zheng. 2062 2063Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 2064methods that are invoked by this interface are optional, removed warnings 2065emitted for the case where one or more of these methods do not exist. 2066ACPICA BZ 1208, original change by Prarit Bhargava. 2067 2068Made a major pass through the entire ACPICA source code base to 2069standardize formatting that has diverged a bit over time. There are no 2070functional changes, but this will of course cause quite a few code 2071differences from the previous ACPICA release. 2072 2073Example Code and Data Size: These are the sizes for the OS-independent 2074acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2075debug version of the code includes the debug output trace mechanism and 2076has a much larger code and data size. 2077 2078 Current Release: 2079 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2080 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2081 Previous Release: 2082 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2083 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2084 2085 20862) iASL Compiler/Disassembler and Tools: 2087 2088iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 2089definition blocks within a single ASL file and the resulting AML file. 2090Support for this type of file was also added to the various tools that 2091use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 2092example code below shows two definition blocks within the same file: 2093 2094 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 20950x12345678) 2096 { 2097 } 2098 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 2099 { 2100 } 2101 2102iASL: Enhanced typechecking for the Name() operator. All expressions for 2103the value of the named object must be reduced/folded to a single constant 2104at compile time, as per the ACPI specification (the AML definition of 2105Name()). 2106 2107iASL: Fixed some code indentation issues for the -ic and -ia options (C 2108and assembly headers). Now all emitted code correctly begins in column 1. 2109 2110iASL: Added an error message for an attempt to open a Scope() on an 2111object defined in an SSDT. The DSDT is always loaded into the namespace 2112first, so any attempt to open a Scope on an SSDT object will fail at 2113runtime. 2114 2115 2116---------------------------------------- 211730 September 2015. Summary of changes for version 20150930: 2118 21191) ACPICA kernel-resident subsystem: 2120 2121Debugger: Implemented several changes and bug fixes to assist support for 2122the in-kernel version of the AML debugger. Lv Zheng. 2123- Fix the "predefined" command for in-kernel debugger. 2124- Do not enter debug command loop for the help and version commands. 2125- Disallow "execute" command during execution/single-step of a method. 2126 2127Interpreter: Updated runtime typechecking for all operators that have 2128target operands. The operand is resolved and validated that it is legal. 2129For example, the target cannot be a non-data object such as a Device, 2130Mutex, ThermalZone, etc., as per the ACPI specification. 2131 2132Debugger: Fixed the double-mutex user I/O handshake to work when local 2133deadlock detection is enabled. 2134 2135Debugger: limited display of method locals and arguments (LocalX and 2136ArgX) to only those that have actually been initialized. This prevents 2137lines of extraneous output. 2138 2139Updated the definition of the NFIT table to correct the bit polarity of 2140one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 2141 2142Example Code and Data Size: These are the sizes for the OS-independent 2143acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2144debug version of the code includes the debug output trace mechanism and 2145has a much larger code and data size. 2146 2147 Current Release: 2148 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2149 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2150 Previous Release: 2151 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2152 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2153 2154 21552) iASL Compiler/Disassembler and Tools: 2156 2157iASL: Improved the compile-time typechecking for operands of many of the 2158ASL operators: 2159 2160-- Added an option to disable compiler operand/operator typechecking (- 2161ot). 2162 2163-- For the following operators, the TermArg operands are now validated 2164when possible to be Integer data objects: BankField, OperationRegion, 2165DataTableRegion, Buffer, and Package. 2166 2167-- Store (Source, Target): Both the source and target operands are 2168resolved and checked that the operands are both legal. For example, 2169neither operand can be a non-data object such as a Device, Mutex, 2170ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 2171operator can be used to store an object to any type of target object. 2172 2173-- Store (Source, Target): If the source is a Package object, the target 2174must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 2175is a Package, the source must also be a Package. 2176 2177-- Store (Source, Target): A warning is issued if the source and target 2178resolve to the identical named object. 2179 2180-- Store (Source, <method invocation>): An error is generated for the 2181target method invocation, as this construct is not supported by the AML 2182interpreter. 2183 2184-- For all ASL math and logic operators, the target operand must be a 2185data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 2186includes the function return value also. 2187 2188-- External declarations are also included in the typechecking where 2189possible. External objects defined using the UnknownObj keyword cannot be 2190typechecked, however. 2191 2192iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 2193operator: 2194- Legacy code: Index(PKG1, 3) 2195- New ASL+ code: PKG1[3] 2196This completes the ACPI 6.0 ASL+ support as it was the only operator not 2197supported. 2198 2199iASL: Fixed the file suffix for the preprocessor output file (.i). Two 2200spaces were inadvertently appended to the filename, causing file access 2201and deletion problems on some systems. 2202 2203ASL Test Suite (ASLTS): Updated the master makefile to generate all 2204possible compiler output files when building the test suite -- thus 2205exercising these features of the compiler. These files are automatically 2206deleted when the test suite exits. 2207 2208 2209---------------------------------------- 221018 August 2015. Summary of changes for version 20150818: 2211 22121) ACPICA kernel-resident subsystem: 2213 2214Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 2215Zheng. ACPICA BZ 1186. 2216 2217Completed development to ensure that the ACPICA Disassembler and Debugger 2218are fully standalone components of ACPICA. Removed cross-component 2219dependences. Lv Zheng. 2220 2221The max-number-of-AML-loops is now runtime configurable (previously was 2222compile-time only). This is essentially a loop timeout to force-abort 2223infinite AML loops. ACPCIA BZ 1192. 2224 2225Debugger: Cleanup output to dump ACPI names and namepaths without any 2226trailing underscores. Lv Zheng. ACPICA BZ 1135. 2227 2228Removed unnecessary conditional compilations across the Debugger and 2229Disassembler components where entire modules could be left uncompiled. 2230 2231The aapits test is deprecated and has been removed from the ACPICA git 2232tree. The test has never been completed and has not been maintained, thus 2233becoming rather useless. ACPICA BZ 1015, 794. 2234 2235A batch of small changes to close bugzilla and other reports: 2236- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 2237- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 2238- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 2239- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 2240Moore. 2241- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 2242ACPICA BZ 1184. 2243- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 2244operators. 2245- Debugger: Split debugger initialization/termination interfaces. Lv 2246Zheng. 2247- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 2248identification. 2249- AcpiExec: Add debug message during _REG method phase during table 2250load/init. 2251- AcpiNames: Fix a regression where some output was missing and no longer 2252emitted. 2253- Debugger: General cleanup and simplification. Lv Zheng. 2254- Disassembler: Cleanup use of several global option variables. Lv Zheng. 2255 2256Example Code and Data Size: These are the sizes for the OS-independent 2257acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2258debug version of the code includes the debug output trace mechanism and 2259has a much larger code and data size. 2260 2261 Current Release: 2262 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2263 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2264 Previous Release: 2265 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2266 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2267 2268 22692) iASL Compiler/Disassembler and Tools: 2270 2271AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 2272were not handled properly and caused load errors. Now, properly invoke 2273and use the ACPICA auto-reallocate mechanism for ACPI table data 2274structures. ACPICA BZ 1188 2275 2276AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 2277BZ 1190. 2278 2279AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 2280AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 2281executed during initialization. ACPICA BZ 1187, 1189. 2282 2283iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 2284that corresponds to each disassembled ASL statement, to simplify 2285debugging. ACPICA BZ 1191. 2286 2287Debugger: Add option to the "objects" command to display a summary of the 2288current namespace objects (Object type and count). This is displayed if 2289the command is entered with no arguments. 2290 2291AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 2292 2293 2294---------------------------------------- 229517 July 2015. Summary of changes for version 20150717: 2296 22971) ACPICA kernel-resident subsystem: 2298 2299Improved the partitioning between the Debugger and Disassembler 2300components. This allows the Debugger to be used standalone within kernel 2301code without the Disassembler (which is used for single stepping also). 2302This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 2303 2304Debugger: Implemented a new command to trace the execution of control 2305methods (Trace). This is especially useful for the in-kernel version of 2306the debugger when file I/O may not be available for method trace output. 2307See the ACPICA reference for more information. Lv Zheng. 2308 2309Moved all C library prototypes (used for the local versions of these 2310functions when requested) to a new header, acclib.h 2311Cleaned up the use of non-ANSI C library functions. These functions are 2312implemented locally in ACPICA. Moved all such functions to a common 2313source file, utnonansi.c 2314 2315Debugger: Fixed a problem with the "!!" command (get last command 2316executed) where the debugger could enter an infinite loop and eventually 2317crash. 2318 2319Removed the use of local macros that were used for some of the standard C 2320library functions to automatically cast input parameters. This mostly 2321affected the is* functions where the input parameter is defined to be an 2322int. This required a few modifications to the main ACPICA source code to 2323provide casting for these functions and eliminate possible compiler 2324warnings for these parameters. 2325 2326Across the source code, added additional status/error checking to resolve 2327issues discovered by static source code analysis tools such as Coverity. 2328 2329Example Code and Data Size: These are the sizes for the OS-independent 2330acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2331debug version of the code includes the debug output trace mechanism and 2332has a much larger code and data size. 2333 2334 Current Release: 2335 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2336 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2337 Previous Release: 2338 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2339 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2340 2341 23422) iASL Compiler/Disassembler and Tools: 2343 2344iASL: Fixed a regression where the device map file feature no longer 2345worked properly when used in conjunction with the disassembler. It only 2346worked properly with the compiler itself. 2347 2348iASL: Implemented a new warning for method LocalX variables that are set 2349but never used (similar to a C compiler such as gcc). This also applies 2350to ArgX variables that are not defined by the parent method, and are 2351instead (legally) used as local variables. 2352 2353iASL/Preprocessor: Finished the pass-through of line numbers from the 2354preprocessor to the compiler. This ensures that compiler errors/warnings 2355have the correct original line numbers and filenames, regardless of any 2356#include files. 2357 2358iASL/Preprocessor: Fixed a couple of issues with comment handling and the 2359pass-through of comments to the preprocessor output file (which becomes 2360the compiler input file). Also fixed a problem with // comments that 2361appear after a math expression. 2362 2363iASL: Added support for the TCPA server table to the table compiler and 2364template generator. (The client table was already previously supported) 2365 2366iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 2367identify the iASL compiler. 2368 2369Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 2370multiple times. The new names are ACPI_SIGN_NEGATIVE and 2371ACPI_SIGN_POSITIVE. 2372 2373AcpiHelp: Update to expand help messages for the iASL preprocessor 2374directives. 2375 2376 2377---------------------------------------- 237819 June 2015. Summary of changes for version 20150619: 2379 2380Two regressions in version 20150616 have been addressed: 2381 2382Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 2383etc.) This update changes ACPICA to only use the standard headers for 2384functions, or the prototypes for the local versions of the C library 2385functions. Across the source code, this required some additional casts 2386for some Clib invocations for portability. Moved all local prototypes to 2387a new file, acclib.h 2388 2389Fixes several problems with recent changes to the handling of the FACS 2390table that could cause some systems not to boot. 2391 2392 2393---------------------------------------- 239416 June 2015. Summary of changes for version 20150616: 2395 2396 23971) ACPICA kernel-resident subsystem: 2398 2399Across the entire ACPICA source code base, the various macros for the C 2400library functions (such as ACPI_STRLEN, etc.) have been removed and 2401replaced by the standard C library names (strlen, etc.) The original 2402purpose for these macros is no longer applicable. This simplification 2403reduces the number of macros used in the ACPICA source code 2404significantly, improving readability and maintainability. 2405 2406Implemented support for a new ACPI table, the OSDT. This table, the 2407"override" SDT, can be loaded directly by the host OS at boot time. It 2408enables the replacement of existing namespace objects that were installed 2409via the DSDT and/or SSDTs. The primary purpose for this is to replace 2410buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 2411for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 2412Moore. 2413 2414Added support for systems with (improperly) two FACS tables -- a "32-bit" 2415table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 2416X field). This change will support both automatically. There continues to 2417be systems found with this issue. This support requires a change to the 2418AcpiSetFirmwareWakingVector interface. Also, a public global variable has 2419been added to allow the host to select which FACS is desired 2420(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 2421details Lv Zheng. 2422 2423Added a new feature to allow for systems that do not contain an FACS. 2424Although this is already supported on hardware-reduced platforms, the 2425feature has been extended for all platforms. The reasoning is that we do 2426not want to abort the entire ACPICA initialization just because the 2427system is seriously buggy and has no FACS. 2428 2429Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 2430not correctly transcribed from the ACPI specification in ACPICA version 243120150515. 2432 2433Implemented support for the _CLS object in the AcpiGetObjectInfo external 2434interface. 2435 2436Updated the definitions of the TCPA and TPM2 ACPI tables to the more 2437recent TCG ACPI Specification, December 14, 2014. Table disassembler and 2438compiler also updated. Note: The TCPA "server" table is not supported by 2439the disassembler/table-compiler at this time. 2440 2441ACPI 6.0: Added definitions for the new GIC version field in the MADT. 2442 2443Example Code and Data Size: These are the sizes for the OS-independent 2444acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2445debug version of the code includes the debug output trace mechanism and 2446has a much larger code and data size. 2447 2448 Current Release: 2449 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2450 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2451 Previous Release: 2452 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2453 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2454 2455 24562) iASL Compiler/Disassembler and Tools: 2457 2458Disassembler: Fixed a problem with the new symbolic operator disassembler 2459where incorrect ASL code could be emitted in some cases for the "non- 2460commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 2461ShiftRight. The actual problem cases seem to be rather unusual in common 2462ASL code, however. David Box. 2463 2464Modified the linux version of acpidump to obtain ACPI tables from not 2465just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 2466Zheng. 2467 2468iASL: Fixed a problem where the user preprocessor output file (.i) 2469contained extra data that was not expected. The compiler was using this 2470file as a temporary file and passed through #line directives in order to 2471keep compiler error messages in sync with the input file and line number 2472across multiple include files. The (.i) is no longer a temporary file as 2473the compiler uses a new, different file for the original purpose. 2474 2475iASL: Fixed a problem where comments within the original ASL source code 2476file were not passed through to the preprocessor output file, nor any 2477listing files. 2478 2479iASL: Fixed some issues for the handling of the "#include" preprocessor 2480directive and the similar (but not the same) "Include" ASL operator. 2481 2482iASL: Add support for the new OSDT in both the disassembler and compiler. 2483 2484iASL: Fixed a problem with the constant folding support where a Buffer 2485object could be incorrectly generated (incorrectly formed) during a 2486conversion to a Store() operator. 2487 2488AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 2489description text for the _REV predefined name. _REV now permanently 2490returns 2, as per the ACPI 6.0 specification. 2491 2492Debugger: Enhanced the output of the Debug ASL object for references 2493produced by the Index operator. For Buffers and strings, only output the 2494actual byte pointed to by the index. For packages, only print the single 2495package element decoded by the index. Previously, the entire 2496buffer/string/package was emitted. 2497 2498iASL/Table-compiler: Fixed a regression where the "generic" data types 2499were no longer recognized, causing errors. 2500 2501 2502---------------------------------------- 250315 May 2015. Summary of changes for version 20150515: 2504 2505This release implements most of ACPI 6.0 as described below. 2506 25071) ACPICA kernel-resident subsystem: 2508 2509Implemented runtime argument checking and return value checking for all 2510new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 2511_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 2512 2513Example Code and Data Size: These are the sizes for the OS-independent 2514acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2515debug version of the code includes the debug output trace mechanism and 2516has a much larger code and data size. 2517 2518 Current Release: 2519 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2520 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2521 Previous Release: 2522 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2523 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2524 2525 25262) iASL Compiler/Disassembler and Tools: 2527 2528iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 2529names (argument count validation and return value typechecking.) 2530 2531iASL disassembler and table compiler: implemented support for all new 2532ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 2533 2534iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 2535tables: FADT, MADT. 2536 2537iASL preprocessor: Added a new directive to enable inclusion of binary 2538blobs into ASL code. The new directive is #includebuffer. It takes a 2539binary file as input and emits a named ascii buffer object into the ASL 2540code. 2541 2542AcpiHelp: Added support for all new ACPI 6.0 predefined names. 2543 2544AcpiHelp: Added a new option, -d, to display all iASL preprocessor 2545directives. 2546 2547AcpiHelp: Added a new option, -t, to display all known/supported ACPI 2548tables. 2549 2550 2551---------------------------------------- 255210 April 2015. Summary of changes for version 20150410: 2553 2554Reverted a change introduced in version 20150408 that caused 2555a regression in the disassembler where incorrect operator 2556symbols could be emitted. 2557 2558 2559---------------------------------------- 256008 April 2015. Summary of changes for version 20150408: 2561 2562 25631) ACPICA kernel-resident subsystem: 2564 2565Permanently set the return value for the _REV predefined name. It now 2566returns 2 (was 5). This matches other ACPI implementations. _REV will be 2567deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 2568for ACPI 2.0 and later. It should never be used to differentiate or 2569identify operating systems. 2570 2571Added the "Windows 2015" string to the _OSI support. ACPICA will now 2572return TRUE to a query with this string. 2573 2574Fixed several issues with the local version of the printf function. 2575 2576Added the C99 compiler option (-std=c99) to the Unix makefiles. 2577 2578 Current Release: 2579 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 2580 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 2581 Previous Release: 2582 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2583 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2584 2585 25862) iASL Compiler/Disassembler and Tools: 2587 2588iASL: Implemented an enhancement to the constant folding feature to 2589transform the parse tree to a simple Store operation whenever possible: 2590 Add (2, 3, X) ==> is converted to: Store (5, X) 2591 X = 2 + 3 ==> is converted to: Store (5, X) 2592 2593Updated support for the SLIC table (Software Licensing Description Table) 2594in both the Data Table compiler and the disassembler. The SLIC table 2595support now conforms to "Microsoft Software Licensing Tables (SLIC and 2596MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 2597following the ACPI header is now defined to be "Proprietary Data", and as 2598such, can only be entered or displayed as a hex data block. 2599 2600Implemented full support for the MSDM table as described in the document 2601above. Note: The format of MSDM is similar to SLIC. Any MSDM data 2602following the ACPI header is defined to be "Proprietary Data", and can 2603only be entered or displayed as a hex data block. 2604 2605Implemented the -Pn option for the iASL Table Compiler (was only 2606implemented for the ASL compiler). This option disables the iASL 2607preprocessor. 2608 2609Disassembler: For disassembly of Data Tables, added a comment field 2610around the Ascii equivalent data that is emitted as part of the "Raw 2611Table Data" block. This prevents the iASL Preprocessor from possible 2612confusion if/when the table is compiled. 2613 2614Disassembler: Added an option (-df) to force the disassembler to assume 2615that the table being disassembled contains valid AML. This feature is 2616useful for disassembling AML files that contain ACPI signatures other 2617than DSDT or SSDT (such as OEMx or other signatures). 2618 2619Changes for the EFI version of the tools: 26201) Fixed a build error/issue 26212) Fixed a cast warning 2622 2623iASL: Fixed a path issue with the __FILE__ operator by making the 2624directory prefix optional within the internal SplitInputFilename 2625function. 2626 2627Debugger: Removed some unused global variables. 2628 2629Tests: Updated the makefile for proper generation of the AAPITS suite. 2630 2631 2632---------------------------------------- 263304 February 2015. Summary of changes for version 20150204: 2634 2635ACPICA kernel-resident subsystem: 2636 2637Updated all ACPICA copyrights and signons to 2014. Added the 2014 2638copyright to all module headers and signons, including the standard Linux 2639header. This affects virtually every file in the ACPICA core subsystem, 2640iASL compiler, all ACPICA utilities, and the test suites. 2641 2642Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 2643A raw gpe handling mechanism was created to allow better handling of GPE 2644storms that aren't easily managed by the normal handler. The raw handler 2645allows disabling/renabling of the the GPE so that interrupt storms can be 2646avoided in cases where events cannot be timely serviced. In this 2647scenario, handlers should use the AcpiSetGpe() API to disable/enable the 2648GPE. This API will leave the reference counts undisturbed, thereby 2649preventing unintentional clearing of the GPE when the intent in only to 2650temporarily disable it. Raw handlers allow enabling and disabling of a 2651GPE by removing GPE register locking. As such, raw handlers much provide 2652their own locks while using GPE API's to protect access to GPE data 2653structures. 2654Lv Zheng 2655 2656Events: Always modify GPE registers under the GPE lock. 2657Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 2658values. Reported as bug by joe.liu@apple.com. 2659 2660Unix makefiles: Separate option to disable optimizations and 2661_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 2662NOOPT disable option and creates a separate flag (NOFORTIFY) for this 2663purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 2664errors when building ACPICA. This allows disabling the option without 2665also having to disable optimazations. 2666David Box 2667 2668 Current Release: 2669 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2670 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 2671 2672-- 2673-------------------------------------- 267407 November 2014. Summary of changes for version 20141107: 2675 2676This release is available at https://acpica.org/downloads 2677 2678This release introduces and implements language extensions to ASL that 2679provide support for symbolic ("C-style") operators and expressions. These 2680language extensions are known collectively as ASL+. 2681 2682 26831) iASL Compiler/Disassembler and Tools: 2684 2685Disassembler: Fixed a problem with disassembly of the UartSerialBus 2686macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 2687Box. 2688 2689Disassembler: Fixed the Unicode macro support to add escape sequences. 2690All non-printable ASCII values are emitted as escape sequences, as well 2691as the standard escapes for quote and backslash. Ensures that the 2692disassembled macro can be correctly recompiled. 2693 2694iASL: Added Printf/Fprintf macros for formatted output. These macros are 2695translated to existing AML Concatenate and Store operations. Printf 2696writes to the ASL Debug object. Fprintf allows the specification of an 2697ASL name as the target. Only a single format specifier is required, %o, 2698since the AML interpreter dynamically converts objects to the required 2699type. David E. Box. 2700 2701 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2702 (Concatenate (Concatenate (Concatenate ("", Arg0), 2703 ": Unexpected value for "), Arg1), ", "), Arg2), 2704 " at line "), Arg3), Debug) 2705 2706 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 2707 Arg0, Arg1, Arg2, Arg3) 2708 2709 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2710 ("", Arg1), ": "), Arg0), " Successful"), STR1) 2711 2712 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 2713 2714iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 2715ASL parse tree before the AML code is generated. This allows blocks of 2716ASL code to be removed in order to help locate and identify problem 2717devices and/or code. David E. Box. 2718 2719AcpiExec: Added support (-fi) for an optional namespace object 2720initialization file. This file specifies initial values for namespace 2721objects as necessary for debugging and testing different ASL code paths 2722that may be taken as a result of BIOS options. 2723 2724 27252) Overview of symbolic operator support for ASL (ASL+) 2726------------------------------------------------------- 2727 2728As an extension to the ASL language, iASL implements support for symbolic 2729(C-style) operators for math and logical expressions. This can greatly 2730simplify ASL code as well as improve both readability and 2731maintainability. These language extensions can exist concurrently with 2732all legacy ASL code and expressions. 2733 2734The symbolic extensions are 100% compatible with existing AML 2735interpreters, since no new AML opcodes are created. To implement the 2736extensions, the iASL compiler transforms the symbolic expressions into 2737the legacy ASL/AML equivalents at compile time. 2738 2739Full symbolic expressions are supported, along with the standard C 2740precedence and associativity rules. 2741 2742Full disassembler support for the symbolic expressions is provided, and 2743creates an automatic migration path for existing ASL code to ASL+ code 2744via the disassembly process. By default, the disassembler now emits ASL+ 2745code with symbolic expressions. An option (-dl) is provided to force the 2746disassembler to emit legacy ASL code if desired. 2747 2748Below is the complete list of the currently supported symbolic operators 2749with examples. See the iASL User Guide for additional information. 2750 2751 2752ASL+ Syntax Legacy ASL Equivalent 2753----------- --------------------- 2754 2755 // Math operators 2756 2757Z = X + Y Add (X, Y, Z) 2758Z = X - Y Subtract (X, Y, Z) 2759Z = X * Y Multiply (X, Y, Z) 2760Z = X / Y Divide (X, Y, , Z) 2761Z = X % Y Mod (X, Y, Z) 2762Z = X << Y ShiftLeft (X, Y, Z) 2763Z = X >> Y ShiftRight (X, Y, Z) 2764Z = X & Y And (X, Y, Z) 2765Z = X | Y Or (X, Y, Z) 2766Z = X ^ Y Xor (X, Y, Z) 2767Z = ~X Not (X, Z) 2768X++ Increment (X) 2769X-- Decrement (X) 2770 2771 // Logical operators 2772 2773(X == Y) LEqual (X, Y) 2774(X != Y) LNotEqual (X, Y) 2775(X < Y) LLess (X, Y) 2776(X > Y) LGreater (X, Y) 2777(X <= Y) LLessEqual (X, Y) 2778(X >= Y) LGreaterEqual (X, Y) 2779(X && Y) LAnd (X, Y) 2780(X || Y) LOr (X, Y) 2781(!X) LNot (X) 2782 2783 // Assignment and compound assignment operations 2784 2785X = Y Store (Y, X) 2786X += Y Add (X, Y, X) 2787X -= Y Subtract (X, Y, X) 2788X *= Y Multiply (X, Y, X) 2789X /= Y Divide (X, Y, , X) 2790X %= Y Mod (X, Y, X) 2791X <<= Y ShiftLeft (X, Y, X) 2792X >>= Y ShiftRight (X, Y, X) 2793X &= Y And (X, Y, X) 2794X |= Y Or (X, Y, X) 2795X ^= Y Xor (X, Y, X) 2796 2797 27983) ASL+ Examples: 2799----------------- 2800 2801Legacy ASL: 2802 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 2803 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 28040x03FB), 2805 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 2806 { 2807 And (MEMB, 0xFFFFFFF0, SRMB) 2808 Store (MEMB, Local2) 2809 Store (PDBM, Local1) 2810 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 2811 Store (SRMB, MEMB) 2812 Or (PDBM, 0x02, PDBM) 2813 } 2814 2815ASL+ version: 2816 If (((R510 & 0x03FB) == 0x02E0) || 2817 ((R520 & 0x03FB) == 0x02E0) || 2818 ((R530 & 0x03FB) == 0x02E0) || 2819 ((R540 & 0x03FB) == 0x02E0)) 2820 { 2821 SRMB = (MEMB & 0xFFFFFFF0) 2822 Local2 = MEMB 2823 Local1 = PDBM 2824 PDBM &= 0xFFFFFFFFFFFFFFF9 2825 MEMB = SRMB 2826 PDBM |= 0x02 2827 } 2828 2829Legacy ASL: 2830 Store (0x1234, Local1) 2831 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 2832 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 2833 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 2834 Store (Index (PKG1, 0x03), Local6) 2835 Store (Add (Local3, Local2), Debug) 2836 Add (Local1, 0x0F, Local2) 2837 Add (Local1, Multiply (Local2, Local3), Local2) 2838 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 2839 2840ASL+ version: 2841 Local1 = 0x1234 2842 Local3 = (((Local1 + TEST) + 0x20) * Local2) 2843 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 2844 Local3 = (Local1 + (TEST + (0x20 * Local2))) 2845 Local6 = Index (PKG1, 0x03) 2846 Debug = (Local3 + Local2) 2847 Local2 = (Local1 + 0x0F) 2848 Local2 = (Local1 + (Local2 * Local3)) 2849 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 2850 2851 2852---------------------------------------- 285326 September 2014. Summary of changes for version 20140926: 2854 28551) ACPICA kernel-resident subsystem: 2856 2857Updated the GPIO operation region handler interface (GeneralPurposeIo). 2858In order to support GPIO Connection objects with multiple pins, along 2859with the related Field objects, the following changes to the interface 2860have been made: The Address is now defined to be the offset in bits of 2861the field unit from the previous invocation of a Connection. It can be 2862viewed as a "Pin Number Index" into the connection resource descriptor. 2863The BitWidth is the exact bit width of the field. It is usually one bit, 2864but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 2865additional information and examples. 2866 2867GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 2868corresponding _Lxx/_Exx methods are disabled (they may have been enabled 2869by the firmware), so that they cannot fire until they are enabled via 2870AcpiUpdateAllGpes. Rafael J. Wysocki. 2871 2872Added a new return flag for the Event/GPE status interfaces -- 2873AcpiGetEventStatus and AcpiGetGpeStatus. The new 2874ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 2875GPE currently has a handler associated with it, and can thus actually 2876affect the system. Lv Zheng. 2877 2878Example Code and Data Size: These are the sizes for the OS-independent 2879acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2880debug version of the code includes the debug output trace mechanism and 2881has a much larger code and data size. 2882 2883 Current Release: 2884 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2885 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2886 Previous Release: 2887 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2888 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2889 28902) iASL Compiler/Disassembler and Tools: 2891 2892iASL: Fixed a memory allocation/free regression introduced in 20140828 2893that could cause the compiler to crash. This was introduced inadvertently 2894during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 28951113. 2896 2897iASL: Removed two error messages that have been found to create false 2898positives, until they can be fixed and fully validated (ACPICA BZ 1112): 28991) Illegal forward reference within a method 29002) Illegal reference across two methods 2901 2902iASL: Implemented a new option (-lm) to create a hardware mapping file 2903that summarizes all GPIO, I2C, SPI, and UART connections. This option 2904works for both the compiler and disassembler. See the iASL compiler user 2905guide for additional information and examples (section 6.4.6). 2906 2907AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 2908version 2. This corrects the AE_BAD_HEADER exception seen on systems with 2909a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 2910 2911AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 2912unless STDIN is actually a terminal. Assists with batch-mode processing. 2913ACPICA BZ 1114. 2914 2915Disassembler/AcpiHelp: Added another large group of recognized _HID 2916values. 2917 2918 2919---------------------------------------- 292028 August 2014. Summary of changes for version 20140828: 2921 29221) ACPICA kernel-resident subsystem: 2923 2924Fixed a problem related to the internal use of the Timer() operator where 2925a 64-bit divide could cause an attempted link to a double-precision math 2926library. This divide is not actually necessary, so the code was 2927restructured to eliminate it. Lv Zheng. 2928 2929ACPI 5.1: Added support for the runtime validation of the _DSD package 2930(similar to the iASL support). 2931 2932ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 2933SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 2934 2935Example Code and Data Size: These are the sizes for the OS-independent 2936acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2937debug version of the code includes the debug output trace mechanism and 2938has a much larger code and data size. 2939 2940 Current Release: 2941 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2942 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2943 Previous Release: 2944 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 2945 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2946 29472) iASL Compiler/Disassembler and Tools: 2948 2949AcpiExec: Fixed a problem on unix systems where the original terminal 2950state was not always properly restored upon exit. Seen when using the -v 2951option. ACPICA BZ 1104. 2952 2953iASL: Fixed a problem with the validation of the ranges/length within the 2954Memory24 resource descriptor. There was a boundary condition when the 2955range was equal to the (length -1) caused by the fact that these values 2956are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 2957 2958Disassembler: Fixed a problem with the GpioInt descriptor interrupt 2959polarity 2960flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 2961is 2962now supported properly. 2963 2964ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 2965in the disassembler, data table compiler, and table template generator. 2966 2967iASL: Added a requirement for Device() objects that one of either a _HID 2968or _ADR must exist within the scope of a Device, as per the ACPI 2969specification. Remove a similar requirement that was incorrectly in place 2970for the _DSD object. 2971 2972iASL: Added error detection for illegal named references within control 2973methods that would cause runtime failures. Now trapped as errors are: 1) 2974References to objects within a non-parent control method. 2) Forward 2975references (within a method) -- for control methods, AML interpreters use 2976a one-pass parse of control methods. ACPICA BZ 1008. 2977 2978iASL: Added error checking for dependencies related to the _PSx power 2979methods. ACPICA BZ 1029. 29801) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 2981_PS3. 29822) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 2983scope. 2984 2985iASL and table compiler: Cleanup miscellaneous memory leaks by fully 2986deploying the existing object and string caches and adding new caches for 2987the table compiler. 2988 2989iASL: Split the huge parser source file into multiple subfiles to improve 2990manageability. Generation now requires the M4 macro preprocessor, which 2991is part of the Bison distribution on both unix and windows platforms. 2992 2993AcpiSrc: Fixed and removed all extraneous warnings generated during 2994entire ACPICA source code scan and/or conversion. 2995 2996 2997---------------------------------------- 2998 299924 July 2014. Summary of changes for version 20140724: 3000 3001The ACPI 5.1 specification has been released and is available at: 3002http://uefi.org/specs/access 3003 3004 30050) ACPI 5.1 support in ACPICA: 3006 3007ACPI 5.1 is fully supported in ACPICA as of this release. 3008 3009New predefined names. Support includes iASL and runtime ACPICA 3010validation. 3011 _CCA (Cache Coherency Attribute). 3012 _DSD (Device-Specific Data). David Box. 3013 3014Modifications to existing ACPI tables. Support includes headers, iASL 3015Data Table compiler, disassembler, and the template generator. 3016 FADT - New fields and flags. Graeme Gregory. 3017 GTDT - One new subtable and new fields. Tomasz Nowicki. 3018 MADT - Two new subtables. Tomasz Nowicki. 3019 PCCT - One new subtable. 3020 3021Miscellaneous. 3022 New notification type for System Resource Affinity change events. 3023 3024 30251) ACPICA kernel-resident subsystem: 3026 3027Fixed a regression introduced in 20140627 where a fault can happen during 3028the deletion of Alias AML namespace objects. The problem affected both 3029the core ACPICA and the ACPICA tools including iASL and AcpiExec. 3030 3031Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 3032simple mechanism to enable wake GPEs that have no associated handler or 3033control method. Rafael Wysocki. 3034 3035Updated the AcpiEnableGpe interface to disallow the enable if there is no 3036handler or control method associated with the particular GPE. This will 3037help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 3038 3039Updated GPE handling and dispatch by disabling the GPE before clearing 3040the status bit for edge-triggered GPEs. Lv Zheng. 3041 3042Added Timer() support to the AML Debug object. The current timer value is 3043now displayed with each invocation of (Store to) the debug object to 3044enable simple generation of execution times for AML code (method 3045execution for example.) ACPICA BZ 1093. 3046 3047Example Code and Data Size: These are the sizes for the OS-independent 3048acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3049debug version of the code includes the debug output trace mechanism and 3050has a much larger code and data size. 3051 3052 Current Release: 3053 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 3054 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3055 Previous Release: 3056 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3057 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3058 3059 30602) iASL Compiler/Disassembler and Tools: 3061 3062Fixed an issue with the recently added local printf implementation, 3063concerning width/precision specifiers that could cause incorrect output. 3064Lv Zheng. ACPICA BZ 1094. 3065 3066Disassembler: Added support to detect buffers that contain UUIDs and 3067disassemble them to an invocation of the ToUUID operator. Also emit 3068commented descriptions of known ACPI-related UUIDs. 3069 3070AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 3071-u. Adds three new files. 3072 3073iASL: Update table compiler and disassembler for DMAR table changes that 3074were introduced in September 2013. With assistance by David Woodhouse. 3075 3076---------------------------------------- 307727 June 2014. Summary of changes for version 20140627: 3078 30791) ACPICA kernel-resident subsystem: 3080 3081Formatted Output: Implemented local versions of standard formatted output 3082utilities such as printf, etc. Over time, it has been discovered that 3083there are in fact many portability issues with printf, and the addition 3084of this feature will fix/prevent these issues once and for all. Some 3085known issues are summarized below: 3086 30871) Output of 64-bit values is not portable. For example, UINT64 is %ull 3088for the Linux kernel and is %uI64 for some MSVC versions. 30892) Invoking printf consistently in a manner that is portable across both 309032-bit and 64-bit platforms is difficult at best in many situations. 30913) The output format for pointers varies from system to system (leading 3092zeros especially), and leads to inconsistent output from ACPICA across 3093platforms. 30944) Certain platform-specific printf formats may conflict with ACPICA use. 30955) If there is no local C library available, ACPICA now has local support 3096for printf. 3097 3098-- To address these printf issues in a complete manner, ACPICA now 3099directly implements a small subset of printf format specifiers, only 3100those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 3101 3102Implemented support for ACPICA generation within the EFI environment. 3103Initially, the AcpiDump utility is supported in the UEFI shell 3104environment. Lv Zheng. 3105 3106Added a new external interface, AcpiLogError, to improve ACPICA 3107portability. This allows the host to redirect error messages from the 3108ACPICA utilities. Lv Zheng. 3109 3110Added and deployed new OSL file I/O interfaces to improve ACPICA 3111portability: 3112 AcpiOsOpenFile 3113 AcpiOsCloseFile 3114 AcpiOsReadFile 3115 AcpiOsWriteFile 3116 AcpiOsGetFileOffset 3117 AcpiOsSetFileOffset 3118There are C library implementations of these functions in the new file 3119service_layers/oslibcfs.c -- however, the functions can be implemented by 3120the local host in any way necessary. Lv Zheng. 3121 3122Implemented a mechanism to disable/enable ACPI table checksum validation 3123at runtime. This can be useful when loading tables very early during OS 3124initialization when it may not be possible to map the entire table in 3125order to compute the checksum. Lv Zheng. 3126 3127Fixed a buffer allocation issue for the Generic Serial Bus support. 3128Originally, a fixed buffer length was used. This change allows for 3129variable-length buffers based upon the protocol indicated by the field 3130access attributes. Reported by Lan Tianyu. Lv Zheng. 3131 3132Fixed a problem where an object detached from a namespace node was not 3133properly terminated/cleared and could cause a circular list problem if 3134reattached. ACPICA BZ 1063. David Box. 3135 3136Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 3137 3138Fixed a possible memory leak in an error return path within the function 3139AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 3140 3141Example Code and Data Size: These are the sizes for the OS-independent 3142acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3143debug version of the code includes the debug output trace mechanism and 3144has a much larger code and data size. 3145 3146 Current Release: 3147 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3148 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3149 Previous Release: 3150 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3151 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3152 3153 31542) iASL Compiler/Disassembler and Tools: 3155 3156Disassembler: Add dump of ASCII equivalent text within a comment at the 3157end of each line of the output for the Buffer() ASL operator. 3158 3159AcpiDump: Miscellaneous changes: 3160 Fixed repetitive table dump in -n mode. 3161 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 3162the ACPI 2.0 GUID fails. 3163 3164iASL: Fixed a problem where the compiler could fault if incorrectly given 3165an acpidump output file as input. ACPICA BZ 1088. David Box. 3166 3167AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 3168they are invoked without any arguments. 3169 3170Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 31711086. Colin Ian King. 3172 3173Disassembler: Cleaned up a block of code that extracts a parent Op 3174object. Added a comment that explains that the parent is guaranteed to be 3175valid in this case. ACPICA BZ 1069. 3176 3177 3178---------------------------------------- 317924 April 2014. Summary of changes for version 20140424: 3180 31811) ACPICA kernel-resident subsystem: 3182 3183Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 3184Some of these tables are known to contain a trailing NULL entry. Lv 3185Zheng. 3186 3187Removed an extraneous error message for the case where there are a large 3188number of system GPEs (> 124). This was the "32-bit FADT register is too 3189long to convert to GAS struct" message, which is irrelevant for GPEs 3190since the GPEx_BLK_LEN fields of the FADT are always used instead of the 3191(limited capacity) GAS bit length. Also, several changes to ensure proper 3192support for GPE numbers > 255, where some "GPE number" fields were 8-bits 3193internally. 3194 3195Implemented and deployed additional configuration support for the public 3196ACPICA external interfaces. Entire classes of interfaces can now be 3197easily modified or configured out, replaced by stubbed inline functions 3198by default. Lv Zheng. 3199 3200Moved all public ACPICA runtime configuration globals to the public 3201ACPICA external interface file for convenience. Also, removed some 3202obsolete/unused globals. See the file acpixf.h. Lv Zheng. 3203 3204Documentation: Added a new section to the ACPICA reference describing the 3205maximum number of GPEs that can be supported by the FADT-defined GPEs in 3206block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 3207reference. 3208 3209Example Code and Data Size: These are the sizes for the OS-independent 3210acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3211debug version of the code includes the debug output trace mechanism and 3212has a much larger code and data size. 3213 3214 Current Release: 3215 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3216 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3217 Previous Release: 3218 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3219 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3220 3221 32222) iASL Compiler/Disassembler and Tools: 3223 3224iASL and disassembler: Add full support for the LPIT table (Low Power 3225Idle Table). Includes support in the disassembler, data table compiler, 3226and template generator. 3227 3228AcpiDump utility: 32291) Add option to force the use of the RSDT (over the XSDT). 32302) Improve validation of the RSDP signature (use 8 chars instead of 4). 3231 3232iASL: Add check for predefined packages that are too large. For 3233predefined names that contain subpackages, check if each subpackage is 3234too large. (Check for too small already exists.) 3235 3236Debugger: Updated the GPE command (which simulates a GPE by executing the 3237GPE code paths in ACPICA). The GPE device is now optional, and defaults 3238to the GPE 0/1 FADT-defined blocks. 3239 3240Unix application OSL: Update line-editing support. Add additional error 3241checking and take care not to reset terminal attributes on exit if they 3242were never set. This should help guarantee that the terminal is always 3243left in the previous state on program exit. 3244 3245 3246---------------------------------------- 324725 March 2014. Summary of changes for version 20140325: 3248 32491) ACPICA kernel-resident subsystem: 3250 3251Updated the auto-serialize feature for control methods. This feature 3252automatically serializes all methods that create named objects in order 3253to prevent runtime errors. The update adds support to ignore the 3254currently executing AML SyncLevel when invoking such a method, in order 3255to prevent disruption of any existing SyncLevel priorities that may exist 3256in the AML code. Although the use of SyncLevels is relatively rare, this 3257change fixes a regression where an AE_AML_MUTEX_ORDER exception can 3258appear on some machines starting with the 20140214 release. 3259 3260Added a new external interface to allow the host to install ACPI tables 3261very early, before the namespace is even created. AcpiInstallTable gives 3262the host additional flexibility for ACPI table management. Tables can be 3263installed directly by the host as if they had originally appeared in the 3264XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 3265(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 3266with additional internal restructuring and cleanup. See the ACPICA 3267Reference for interface details. Lv Zheng. 3268 3269Added validation of the checksum for all incoming dynamically loaded 3270tables (via external interfaces or via AML Load/LoadTable operators). Lv 3271Zheng. 3272 3273Updated the use of the AcpiOsWaitEventsComplete interface during Notify 3274and GPE handler removal. Restructured calls to eliminate possible race 3275conditions. Lv Zheng. 3276 3277Added a warning for the use/execution of the ASL/AML Unload (table) 3278operator. This will help detect and identify machines that use this 3279operator if and when it is ever used. This operator has never been seen 3280in the field and the usage model and possible side-effects of the drastic 3281runtime action of a full table removal are unknown. 3282 3283Reverted the use of #pragma push/pop which was introduced in the 20140214 3284release. It appears that push and pop are not implemented by enough 3285compilers to make the use of this feature feasible for ACPICA at this 3286time. However, these operators may be deployed in a future ACPICA 3287release. 3288 3289Added the missing EXPORT_SYMBOL macros for the install and remove SCI 3290handler interfaces. 3291 3292Source code generation: 32931) Disabled the use of the "strchr" macro for the gcc-specific 3294generation. For some versions of gcc, this macro can periodically expose 3295a compiler bug which in turn causes compile-time error(s). 32962) Added support for PPC64 compilation. Colin Ian King. 3297 3298Example Code and Data Size: These are the sizes for the OS-independent 3299acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3300debug version of the code includes the debug output trace mechanism and 3301has a much larger code and data size. 3302 3303 Current Release: 3304 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3305 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3306 Previous Release: 3307 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3308 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3309 3310 33112) iASL Compiler/Disassembler and Tools: 3312 3313Disassembler: Added several new features to improve the readability of 3314the resulting ASL code. Extra information is emitted within comment 3315fields in the ASL code: 33161) Known _HID/_CID values are decoded to descriptive text. 33172) Standard values for the Notify() operator are decoded to descriptive 3318text. 33193) Target operands are expanded to full pathnames (in a comment) when 3320possible. 3321 3322Disassembler: Miscellaneous updates for extern() handling: 33231) Abort compiler if file specified by -fe option does not exist. 33242) Silence unnecessary warnings about argument count mismatches. 33253) Update warning messages concerning unresolved method externals. 33264) Emit "UnknownObj" keyword for externals whose type cannot be 3327determined. 3328 3329AcpiHelp utility: 33301) Added the -a option to display both the ASL syntax and the AML 3331encoding for an input ASL operator. This effectively displays all known 3332information about an ASL operator with one AcpiHelp invocation. 33332) Added substring match support (similar to a wildcard) for the -i 3334(_HID/PNP IDs) option. 3335 3336iASL/Disassembler: Since this tool does not yet support execution on big- 3337endian machines, added detection of endianness and an error message if 3338execution is attempted on big-endian. Support for big-endian within iASL 3339is a feature that is on the ACPICA to-be-done list. 3340 3341AcpiBin utility: 33421) Remove option to extract binary files from an acpidump; this function 3343is made obsolete by the AcpiXtract utility. 33442) General cleanup of open files and allocated buffers. 3345 3346 3347---------------------------------------- 334814 February 2014. Summary of changes for version 20140214: 3349 33501) ACPICA kernel-resident subsystem: 3351 3352Implemented a new mechanism to proactively prevent problems with ill- 3353behaved reentrant control methods that create named ACPI objects. This 3354behavior is illegal as per the ACPI specification, but is nonetheless 3355frequently seen in the field. Previously, this could lead to an 3356AE_ALREADY_EXISTS exception if the method was actually entered by more 3357than one thread. This new mechanism detects such methods at table load 3358time and marks them "serialized" to prevent reentrancy. A new global 3359option, AcpiGbl_AutoSerializeMethods, has been added to disable this 3360feature if desired. This mechanism and global option obsoletes and 3361supersedes the previous AcpiGbl_SerializeAllMethods option. 3362 3363Added the "Windows 2013" string to the _OSI support. ACPICA will now 3364respond TRUE to _OSI queries with this string. It is the stated policy of 3365ACPICA to add new strings to the _OSI support as soon as possible after 3366they are defined. See the full ACPICA _OSI policy which has been added to 3367the utilities/utosi.c file. 3368 3369Hardened/updated the _PRT return value auto-repair code: 33701) Do not abort the repair on a single subpackage failure, continue to 3371check all subpackages. 33722) Add check for the minimum subpackage length (4). 33733) Properly handle extraneous NULL package elements. 3374 3375Added support to avoid the possibility of infinite loops when traversing 3376object linked lists. Never allow an infinite loop, even in the face of 3377corrupted object lists. 3378 3379ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 3380pack(pop) directives to ensure that the ACPICA headers are independent of 3381compiler settings or other host headers. 3382 3383Example Code and Data Size: These are the sizes for the OS-independent 3384acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3385debug version of the code includes the debug output trace mechanism and 3386has a much larger code and data size. 3387 3388 Current Release: 3389 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3390 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3391 Previous Release: 3392 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3393 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3394 3395 33962) iASL Compiler/Disassembler and Tools: 3397 3398iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 3399first reserved field was incorrectly forced to have a value of zero. This 3400change correctly forces the field to have a value of one. ACPICA BZ 1081. 3401 3402Debugger: Added missing support for the "Extra" and "Data" subobjects 3403when displaying object data. 3404 3405Debugger: Added support to display entire object linked lists when 3406displaying object data. 3407 3408iASL: Removed the obsolete -g option to obtain ACPI tables from the 3409Windows registry. This feature has been superseded by the acpidump 3410utility. 3411 3412 3413---------------------------------------- 341414 January 2014. Summary of changes for version 20140114: 3415 34161) ACPICA kernel-resident subsystem: 3417 3418Updated all ACPICA copyrights and signons to 2014. Added the 2014 3419copyright to all module headers and signons, including the standard Linux 3420header. This affects virtually every file in the ACPICA core subsystem, 3421iASL compiler, all ACPICA utilities, and the test suites. 3422 3423Improved parameter validation for AcpiInstallGpeBlock. Added the 3424following checks: 34251) The incoming device handle refers to type ACPI_TYPE_DEVICE. 34262) There is not already a GPE block attached to the device. 3427Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 3428device. 3429 3430Correctly support "references" in the ACPI_OBJECT. This change fixes the 3431support to allow references (namespace nodes) to be passed as arguments 3432to control methods via the evaluate object interface. This is probably 3433most useful for testing purposes, however. 3434 3435Improved support for 32/64 bit physical addresses in printf()-like 3436output. This change improves the support for physical addresses in printf 3437debug statements and other output on both 32-bit and 64-bit hosts. It 3438consistently outputs the appropriate number of bytes for each host. The 3439%p specifier is unsatisfactory since it does not emit uniform output on 3440all hosts/clib implementations (on some, leading zeros are not supported, 3441leading to difficult-to-read output). 3442 3443Example Code and Data Size: These are the sizes for the OS-independent 3444acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3445debug version of the code includes the debug output trace mechanism and 3446has a much larger code and data size. 3447 3448 Current Release: 3449 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3450 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3451 Previous Release: 3452 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3453 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3454 3455 34562) iASL Compiler/Disassembler and Tools: 3457 3458iASL: Fix a possible fault when using the Connection() operator. Fixes a 3459problem if the parent Field definition for the Connection operator refers 3460to an operation region that does not exist. ACPICA BZ 1064. 3461 3462AcpiExec: Load of local test tables is now optional. The utility has the 3463capability to load some various tables to test features of ACPICA. 3464However, there are enough of them that the output of the utility became 3465confusing. With this change, only the required local tables are displayed 3466(RSDP, XSDT, etc.) along with the actual tables loaded via the command 3467line specification. This makes the default output simler and easier to 3468understand. The -el command line option restores the original behavior 3469for testing purposes. 3470 3471AcpiExec: Added support for overlapping operation regions. This change 3472expands the simulation of operation regions by supporting regions that 3473overlap within the given address space. Supports SystemMemory and 3474SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 3475 3476AcpiExec: Added region handler support for PCI_Config and EC spaces. This 3477allows AcpiExec to simulate these address spaces, similar to the current 3478support for SystemMemory and SystemIO. 3479 3480Debugger: Added new command to read/write/compare all namespace objects. 3481The command "test objects" will exercise the entire namespace by writing 3482new values to each data object, and ensuring that the write was 3483successful. The original value is then restored and verified. 3484 3485Debugger: Added the "test predefined" command. This change makes this 3486test public and puts it under the new "test" command. The test executes 3487each and every predefined name within the current namespace. 3488 3489 3490---------------------------------------- 349118 December 2013. Summary of changes for version 20131218: 3492 3493Global note: The ACPI 5.0A specification was released this month. There 3494are no changes needed for ACPICA since this release of ACPI is an 3495errata/clarification release. The specification is available at 3496acpi.info. 3497 3498 34991) ACPICA kernel-resident subsystem: 3500 3501Added validation of the XSDT root table if it is present. Some older 3502platforms contain an XSDT that is ill-formed or otherwise invalid (such 3503as containing some or all entries that are NULL pointers). This change 3504adds a new function to validate the XSDT before actually using it. If the 3505XSDT is found to be invalid, ACPICA will now automatically fall back to 3506using the RSDT instead. Original implementation by Zhao Yakui. Ported to 3507ACPICA and enhanced by Lv Zheng and Bob Moore. 3508 3509Added a runtime option to ignore the XSDT and force the use of the RSDT. 3510This change adds a runtime option that will force ACPICA to use the RSDT 3511instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 3512requires that an XSDT be used instead of the RSDT, the XSDT has been 3513found to be corrupt or ill-formed on some machines. Lv Zheng. 3514 3515Added a runtime option to favor 32-bit FADT register addresses over the 351664-bit addresses. This change adds an option to favor 32-bit FADT 3517addresses when there is a conflict between the 32-bit and 64-bit versions 3518of the same register. The default behavior is to use the 64-bit version 3519in accordance with the ACPI specification. This can now be overridden via 3520the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 3521 3522During the change above, the internal "Convert FADT" and "Verify FADT" 3523functions have been merged to simplify the code, making it easier to 3524understand and maintain. ACPICA BZ 933. 3525 3526Improve exception reporting and handling for GPE block installation. 3527Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 3528status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 3529 3530Added helper macros to extract bus/segment numbers from the HEST table. 3531This change adds two macros to extract the encoded bus and segment 3532numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 3533Betty Dall <betty.dall@hp.com> 3534 3535Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 3536by ACPICA. It is not a public macro, so it should have no effect on 3537existing OSV code. Lv Zheng. 3538 3539Example Code and Data Size: These are the sizes for the OS-independent 3540acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3541debug version of the code includes the debug output trace mechanism and 3542has a much larger code and data size. 3543 3544 Current Release: 3545 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3546 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3547 Previous Release: 3548 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3549 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3550 3551 35522) iASL Compiler/Disassembler and Tools: 3553 3554Disassembler: Improved pathname support for emitted External() 3555statements. This change adds full pathname support for external names 3556that have been resolved internally by the inclusion of additional ACPI 3557tables (via the iASL -e option). Without this change, the disassembler 3558can emit multiple externals for the same object, or it become confused 3559when the Scope() operator is used on an external object. Overall, greatly 3560improves the ability to actually recompile the emitted ASL code when 3561objects a referenced across multiple ACPI tables. Reported by Michael 3562Tsirkin (mst@redhat.com). 3563 3564Tests/ASLTS: Updated functional control suite to execute with no errors. 3565David Box. Fixed several errors related to the testing of the interpreter 3566slack mode. Lv Zheng. 3567 3568iASL: Added support to detect names that are declared within a control 3569method, but are unused (these are temporary names that are only valid 3570during the time the method is executing). A remark is issued for these 3571cases. ACPICA BZ 1022. 3572 3573iASL: Added full support for the DBG2 table. Adds full disassembler, 3574table compiler, and template generator support for the DBG2 table (Debug 3575Port 2 table). 3576 3577iASL: Added full support for the PCCT table, update the table definition. 3578Updates the PCCT table definition in the actbl3.h header and adds table 3579compiler and template generator support. 3580 3581iASL: Added an option to emit only error messages (no warnings/remarks). 3582The -ve option will enable only error messages, warnings and remarks are 3583suppressed. This can simplify debugging when only the errors are 3584important, such as when an ACPI table is disassembled and there are many 3585warnings and remarks -- but only the actual errors are of real interest. 3586 3587Example ACPICA code (source/tools/examples): Updated the example code so 3588that it builds to an actual working program, not just example code. Added 3589ACPI tables and execution of an example control method in the DSDT. Added 3590makefile support for Unix generation. 3591 3592 3593---------------------------------------- 359415 November 2013. Summary of changes for version 20131115: 3595 3596This release is available at https://acpica.org/downloads 3597 3598 35991) ACPICA kernel-resident subsystem: 3600 3601Resource Manager: Fixed loop termination for the "get AML length" 3602function. The loop previously had an error termination on a NULL resource 3603pointer, which can never happen since the loop simply increments a valid 3604resource pointer. This fix changes the loop to terminate with an error on 3605an invalid end-of-buffer condition. The problem can be seen as an 3606infinite loop by callers to AcpiSetCurrentResources with an invalid or 3607corrupted resource descriptor, or a resource descriptor that is missing 3608an END_TAG descriptor. Reported by Dan Carpenter 3609<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 3610 3611Table unload and ACPICA termination: Delete all attached data objects 3612during namespace node deletion. This fix updates namespace node deletion 3613to delete the entire list of attached objects (attached via 3614AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 36151024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 3616 3617ACPICA termination: Added support to delete all objects attached to the 3618root namespace node. This fix deletes any and all objects that have been 3619attached to the root node via AcpiAttachData. Previously, none of these 3620objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 3621 3622Debug output: Do not emit the function nesting level for the in-kernel 3623build. The nesting level is really only useful during a single-thread 3624execution. Therefore, only enable this output for the AcpiExec utility. 3625Also, only emit the thread ID when executing under AcpiExec (Context 3626switches are still always detected and a message is emitted). ACPICA BZ 3627972. 3628 3629Example Code and Data Size: These are the sizes for the OS-independent 3630acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3631debug version of the code includes the debug output trace mechanism and 3632has a much larger code and data size. 3633 3634 Current Release: 3635 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3636 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3637 Previous Release: 3638 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3639 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3640 3641 36422) iASL Compiler/Disassembler and Tools: 3643 3644AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 3645correct portable POSIX header for terminal control functions. 3646 3647Disassembler: Fixed control method invocation issues related to the use 3648of the CondRefOf() operator. The problem is seen in the disassembly where 3649control method invocations may not be disassembled properly if the 3650control method name has been used previously as an argument to CondRefOf. 3651The solution is to not attempt to emit an external declaration for the 3652CondRefOf target (it is not necessary in the first place). This prevents 3653disassembler object type confusion. ACPICA BZ 988. 3654 3655Unix Makefiles: Added an option to disable compiler optimizations and the 3656_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 3657with optimizations (reportedly, gcc 4.4 for example). This change adds a 3658command line option for make (NOOPT) that disables all compiler 3659optimizations and the _FORTIFY_SOURCE compiler flag. The default 3660optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 36611034. Lv Zheng, Bob Moore. 3662 3663Tests/ASLTS: Added options to specify individual test cases and modes. 3664This allows testers running aslts.sh to optionally specify individual 3665test modes and test cases. Also added an option to disable the forced 3666generation of the ACPICA tools from source if desired. Lv Zheng. 3667 3668---------------------------------------- 366927 September 2013. Summary of changes for version 20130927: 3670 3671This release is available at https://acpica.org/downloads 3672 3673 36741) ACPICA kernel-resident subsystem: 3675 3676Fixed a problem with store operations to reference objects. This change 3677fixes a problem where a Store operation to an ArgX object that contained 3678a 3679reference to a field object did not complete the automatic dereference 3680and 3681then write to the actual field object. Instead, the object type of the 3682field object was inadvertently changed to match the type of the source 3683operand. The new behavior will actually write to the field object (buffer 3684field or field unit), thus matching the correct ACPI-defined behavior. 3685 3686Implemented support to allow the host to redefine individual OSL 3687prototypes. This change enables the host to redefine OSL prototypes found 3688in the acpiosxf.h file. This allows the host to implement OSL interfaces 3689with a macro or inlined function. Further, it allows the host to add any 3690additional required modifiers such as __iomem, __init, __exit, etc., as 3691necessary on a per-interface basis. Enables maximum flexibility for the 3692OSL interfaces. Lv Zheng. 3693 3694Hardcoded the access width for the FADT-defined reset register. The ACPI 3695specification requires the reset register width to be 8 bits. ACPICA now 3696hardcodes the width to 8 and ignores the FADT width value. This provides 3697compatibility with other ACPI implementations that have allowed BIOS code 3698with bad register width values to go unnoticed. Matthew Garett, Bob 3699Moore, 3700Lv Zheng. 3701 3702Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 3703used 3704in the OSL header (acpiosxf). The change modifies the position of this 3705macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 3706build issues if the OSL defines the implementation of the interface to be 3707an inline stub function. Lv Zheng. 3708 3709Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 3710initialization interfaces. This change adds a new macro for the main init 3711and terminate external interfaces in order to support hosts that require 3712additional or different processing for these functions. Changed from 3713ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 3714Zheng, Bob Moore. 3715 3716Cleaned up the memory allocation macros for configurability. In the 3717common 3718case, the ACPI_ALLOCATE and related macros now resolve directly to their 3719respective AcpiOs* OSL interfaces. Two options: 37201) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 3721default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 37222) For AcpiExec (and for debugging), the macros can optionally be 3723resolved 3724to the local ACPICA interfaces that track each allocation (local tracking 3725is used to immediately detect memory leaks). 3726Lv Zheng. 3727 3728Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 3729to predefine this macro to either TRUE or FALSE during the system build. 3730 3731Replaced __FUNCTION_ with __func__ in the gcc-specific header. 3732 3733Example Code and Data Size: These are the sizes for the OS-independent 3734acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3735debug version of the code includes the debug output trace mechanism and 3736has a much larger code and data size. 3737 3738 Current Release: 3739 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3740 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3741 Previous Release: 3742 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3743 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3744 3745 37462) iASL Compiler/Disassembler and Tools: 3747 3748iASL: Implemented wildcard support for the -e option. This simplifies use 3749when there are many SSDTs that must be included to resolve external 3750method 3751declarations. ACPICA BZ 1041. Example: 3752 iasl -e ssdt*.dat -d dsdt.dat 3753 3754AcpiExec: Add history/line-editing for Unix/Linux systems. This change 3755adds a portable module that implements full history and limited line 3756editing for Unix and Linux systems. It does not use readline() due to 3757portability issues. Instead it uses the POSIX termio interface to put the 3758terminal in raw input mode so that the various special keys can be 3759trapped 3760(such as up/down-arrow for history support and left/right-arrow for line 3761editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 3762 3763AcpiXtract: Add support to handle (ignore) "empty" lines containing only 3764one or more spaces. This provides compatible with early or different 3765versions of the AcpiDump utility. ACPICA BZ 1044. 3766 3767AcpiDump: Do not ignore tables that contain only an ACPI table header. 3768Apparently, some BIOSs create SSDTs that contain an ACPI table header but 3769no other data. This change adds support to dump these tables. Any tables 3770shorter than the length of an ACPI table header remain in error (an error 3771message is emitted). Reported by Yi Li. 3772 3773Debugger: Echo actual command along with the "unknown command" message. 3774 3775---------------------------------------- 377623 August 2013. Summary of changes for version 20130823: 3777 37781) ACPICA kernel-resident subsystem: 3779 3780Implemented support for host-installed System Control Interrupt (SCI) 3781handlers. Certain ACPI functionality requires the host to handle raw 3782SCIs. For example, the "SCI Doorbell" that is defined for memory power 3783state support requires the host device driver to handle SCIs to examine 3784if the doorbell has been activated. Multiple SCI handlers can be 3785installed to allow for future expansion. New external interfaces are 3786AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 3787details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 3788 3789Operation region support: Never locally free the handler "context" 3790pointer. This change removes some dangerous code that attempts to free 3791the handler context pointer in some (rare) circumstances. The owner of 3792the handler owns this pointer and the ACPICA code should never touch it. 3793Although not seen to be an issue in any kernel, it did show up as a 3794problem (fault) under AcpiExec. Also, set the internal storage field for 3795the context pointer to zero when the region is deactivated, simply for 3796sanity. David Box. ACPICA BZ 1039. 3797 3798AcpiRead: On error, do not modify the return value target location. If an 3799error happens in the middle of a split 32/32 64-bit I/O operation, do not 3800modify the target of the return value pointer. Makes the code consistent 3801with the rest of ACPICA. Bjorn Helgaas. 3802 3803Example Code and Data Size: These are the sizes for the OS-independent 3804acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3805debug version of the code includes the debug output trace mechanism and 3806has a much larger code and data size. 3807 3808 Current Release: 3809 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3810 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3811 Previous Release: 3812 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3813 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 3814 3815 38162) iASL Compiler/Disassembler and Tools: 3817 3818AcpiDump: Implemented several new features and fixed some problems: 38191) Added support to dump the RSDP, RSDT, and XSDT tables. 38202) Added support for multiple table instances (SSDT, UEFI). 38213) Added option to dump "customized" (overridden) tables (-c). 38224) Fixed a problem where some table filenames were improperly 3823constructed. 38245) Improved some error messages, removed some unnecessary messages. 3825 3826iASL: Implemented additional support for disassembly of ACPI tables that 3827contain invocations of external control methods. The -fe<file> option 3828allows the import of a file that specifies the external methods along 3829with the required number of arguments for each -- allowing for the 3830correct disassembly of the table. This is a workaround for a limitation 3831of AML code where the disassembler often cannot determine the number of 3832arguments required for an external control method and generates incorrect 3833ASL code. See the iASL reference for details. ACPICA BZ 1030. 3834 3835Debugger: Implemented a new command (paths) that displays the full 3836pathnames (namepaths) and object types of all objects in the namespace. 3837This is an alternative to the namespace command. 3838 3839Debugger: Implemented a new command (sci) that invokes the SCI dispatch 3840mechanism and any installed handlers. 3841 3842iASL: Fixed a possible segfault for "too many parent prefixes" condition. 3843This can occur if there are too many parent prefixes in a namepath (for 3844example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 3845 3846Application OSLs: Set the return value for the PCI read functions. These 3847functions simply return AE_OK, but should set the return value to zero 3848also. This change implements this. ACPICA BZ 1038. 3849 3850Debugger: Prevent possible command line buffer overflow. Increase the 3851size of a couple of the debugger line buffers, and ensure that overflow 3852cannot happen. ACPICA BZ 1037. 3853 3854iASL: Changed to abort immediately on serious errors during the parsing 3855phase. Due to the nature of ASL, there is no point in attempting to 3856compile these types of errors, and they typically end up causing a 3857cascade of hundreds of errors which obscure the original problem. 3858 3859---------------------------------------- 386025 July 2013. Summary of changes for version 20130725: 3861 38621) ACPICA kernel-resident subsystem: 3863 3864Fixed a problem with the DerefOf operator where references to FieldUnits 3865and BufferFields incorrectly returned the parent object, not the actual 3866value of the object. After this change, a dereference of a FieldUnit 3867reference results in a read operation on the field to get the value, and 3868likewise, the appropriate BufferField value is extracted from the target 3869buffer. 3870 3871Fixed a problem where the _WAK method could cause a fault under these 3872circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 3873method returned no value. The problem is rarely seen because most kernels 3874run ACPICA in slack mode. 3875 3876For the DerefOf operator, a fatal error now results if an attempt is made 3877to dereference a reference (created by the Index operator) to a NULL 3878package element. Provides compatibility with other ACPI implementations, 3879and this behavior will be added to a future version of the ACPI 3880specification. 3881 3882The ACPI Power Management Timer (defined in the FADT) is now optional. 3883This provides compatibility with other ACPI implementations and will 3884appear in the next version of the ACPI specification. If there is no PM 3885Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 3886zero in the FADT indicates no PM timer. 3887 3888Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 3889allows the host to globally enable/disable all vendor strings, all 3890feature strings, or both. Intended to be primarily used for debugging 3891purposes only. Lv Zheng. 3892 3893Expose the collected _OSI data to the host via a global variable. This 3894data tracks the highest level vendor ID that has been invoked by the BIOS 3895so that the host (and potentially ACPICA itself) can change behaviors 3896based upon the age of the BIOS. 3897 3898Example Code and Data Size: These are the sizes for the OS-independent 3899acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3900debug version of the code includes the debug output trace mechanism and 3901has a much larger code and data size. 3902 3903 Current Release: 3904 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3905 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3906 Previous Release: 3907 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3908 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3909 3910 39112) iASL Compiler/Disassembler and Tools: 3912 3913iASL: Created the following enhancements for the -so option (create 3914offset table): 39151)Add offsets for the last nameseg in each namepath for every supported 3916object type 39172)Add support for Processor, Device, Thermal Zone, and Scope objects 39183)Add the actual AML opcode for the parent object of every supported 3919object type 39204)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 3921 3922Disassembler: Emit all unresolved external symbols in a single block. 3923These are external references to control methods that could not be 3924resolved, and thus, the disassembler had to make a guess at the number of 3925arguments to parse. 3926 3927iASL: The argument to the -T option (create table template) is now 3928optional. If not specified, the default table is a DSDT, typically the 3929most common case. 3930 3931---------------------------------------- 393226 June 2013. Summary of changes for version 20130626: 3933 39341) ACPICA kernel-resident subsystem: 3935 3936Fixed an issue with runtime repair of the _CST object. Null or invalid 3937elements were not always removed properly. Lv Zheng. 3938 3939Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 3940FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 3941the maximum number of GPEs is 1016. Use of multiple GPE block devices 3942makes the system-wide number of GPEs essentially unlimited. 3943 3944Example Code and Data Size: These are the sizes for the OS-independent 3945acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3946debug version of the code includes the debug output trace mechanism and 3947has a much larger code and data size. 3948 3949 Current Release: 3950 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3951 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3952 Previous Release: 3953 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3954 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3955 3956 39572) iASL Compiler/Disassembler and Tools: 3958 3959Portable AcpiDump: Implemented full support for the Linux and FreeBSD 3960hosts. Now supports Linux, FreeBSD, and Windows. 3961 3962Disassembler: Added some missing types for the HEST and EINJ tables: "Set 3963Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 3964 3965iASL/Preprocessor: Implemented full support for nested 3966#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 3967 3968Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 3969max. The original purpose of this constraint was to limit the amount of 3970debug output. However, the string function in question (UtPrintString) is 3971now used for the disassembler also, where 256 bytes is insufficient. 3972Reported by RehabMan@GitHub. 3973 3974iASL/DataTables: Fixed some problems and issues with compilation of DMAR 3975tables. ACPICA BZ 999. Lv Zheng. 3976 3977iASL: Fixed a couple of error exit issues that could result in a "Could 3978not delete <file>" message during ASL compilation. 3979 3980AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 3981the actual signatures for these tables are "FACP" and "APIC", 3982respectively. 3983 3984AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 3985tables are allowed to have multiple instances. 3986 3987---------------------------------------- 398817 May 2013. Summary of changes for version 20130517: 3989 39901) ACPICA kernel-resident subsystem: 3991 3992Fixed a regression introduced in version 20130328 for _INI methods. This 3993change fixes a problem introduced in 20130328 where _INI methods are no 3994longer executed properly because of a memory block that was not 3995initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 3996<tomasz.nowicki@linaro.org>. 3997 3998Fixed a possible problem with the new extended sleep registers in the 3999ACPI 40005.0 FADT. Do not use these registers (even if populated) unless the HW- 4001reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 40021020. Lv Zheng. 4003 4004Implemented return value repair code for _CST predefined objects: Sort 4005the 4006list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 4007 4008Implemented a debug-only option to disable loading of SSDTs from the 4009RSDT/XSDT during ACPICA initialization. This can be useful for debugging 4010ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 4011acglobal.h - ACPICA BZ 1005. Lv Zheng. 4012 4013Fixed some issues in the ACPICA initialization and termination code: 4014Tomasz Nowicki <tomasz.nowicki@linaro.org> 40151) Clear events initialized flag upon event component termination. ACPICA 4016BZ 1013. 40172) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 40183) Delete global lock pending lock during termination. ACPICA BZ 1012. 40194) Clear debug buffer global on termination to prevent possible multiple 4020delete. ACPICA BZ 1010. 4021 4022Standardized all switch() blocks across the entire source base. After 4023many 4024years, different formatting for switch() had crept in. This change makes 4025the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 4026 4027Split some files to enhance ACPICA modularity and configurability: 40281) Split buffer dump routines into utilities/utbuffer.c 40292) Split internal error message routines into utilities/uterror.c 40303) Split table print utilities into tables/tbprint.c 40314) Split iASL command-line option processing into asloptions.c 4032 4033Makefile enhancements: 40341) Support for all new files above. 40352) Abort make on errors from any subcomponent. Chao Guan. 40363) Add build support for Apple Mac OS X. Liang Qi. 4037 4038Example Code and Data Size: These are the sizes for the OS-independent 4039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4040debug version of the code includes the debug output trace mechanism and 4041has a much larger code and data size. 4042 4043 Current Release: 4044 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4045 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4046 Previous Release: 4047 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4048 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4049 4050 40512) iASL Compiler/Disassembler and Tools: 4052 4053New utility: Implemented an easily portable version of the acpidump 4054utility to extract ACPI tables from the system (or a file) in an ASCII 4055hex 4056dump format. The top-level code implements the various command line 4057options, file I/O, and table dump routines. To port to a new host, only 4058three functions need to be implemented to get tables -- since this 4059functionality is OS-dependent. See the tools/acpidump/apmain.c module and 4060the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 40611) The Windows version obtains the ACPI tables from the Registry. 40622) The Linux version is under development. 40633) Other hosts - If an OS-dependent module is submitted, it will be 4064distributed with ACPICA. 4065 4066iASL: Fixed a regression for -D preprocessor option (define symbol). A 4067restructuring/change to the initialization sequence caused this option to 4068no longer work properly. 4069 4070iASL: Implemented a mechanism to disable specific warnings and remarks. 4071Adds a new command line option, "-vw <messageid> as well as "#pragma 4072disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 4073 4074iASL: Fix for too-strict package object validation. The package object 4075validation for return values from the predefined names is a bit too 4076strict, it does not allow names references within the package (which will 4077be resolved at runtime.) These types of references cannot be validated at 4078compile time. This change ignores named references within package objects 4079for names that return or define static packages. 4080 4081Debugger: Fixed the 80-character command line limitation for the History 4082command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 4083 4084iASL: Added control method and package support for the -so option 4085(generates AML offset table for BIOS support.) 4086 4087iASL: issue a remark if a non-serialized method creates named objects. If 4088a thread blocks within the method for any reason, and another thread 4089enters the method, the method will fail because an attempt will be made 4090to 4091create the same (named) object twice. In this case, issue a remark that 4092the method should be marked serialized. NOTE: may become a warning later. 4093ACPICA BZ 909. 4094 4095---------------------------------------- 409618 April 2013. Summary of changes for version 20130418: 4097 40981) ACPICA kernel-resident subsystem: 4099 4100Fixed a possible buffer overrun during some rare but specific field unit 4101read operations. This overrun can only happen if the DSDT version is 1 -- 4102meaning that all AML integers are 32 bits -- and the field length is 4103between 33 and 55 bits long. During the read, an internal buffer object 4104is 4105created for the field unit because the field is larger than an integer 4106(32 4107bits). However, in this case, the buffer will be incorrectly written 4108beyond the end because the buffer length is less than the internal 4109minimum 4110of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 4111long, but a full 8 bytes will be written. 4112 4113Updated the Embedded Controller "orphan" _REG method support. This refers 4114to _REG methods under the EC device that have no corresponding operation 4115region. This is allowed by the ACPI specification. This update removes a 4116dependency on the existence an ECDT table. It will execute an orphan _REG 4117method as long as the operation region handler for the EC is installed at 4118the EC device node and not the namespace root. Rui Zhang (original 4119update), Bob Moore (update/integrate). 4120 4121Implemented run-time argument typechecking for all predefined ACPI names 4122(_STA, _BIF, etc.) This change performs object typechecking on all 4123incoming arguments for all predefined names executed via 4124AcpiEvaluateObject. This ensures that ACPI-related device drivers are 4125passing correct object types as well as the correct number of arguments 4126(therefore identifying any issues immediately). Also, the ASL/namespace 4127definition of the predefined name is checked against the ACPI 4128specification for the proper argument count. Adds one new file, 4129nsarguments.c 4130 4131Changed an exception code for the ASL UnLoad() operator. Changed the 4132exception code for the case where the input DdbHandle is invalid, from 4133AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 4134 4135Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 4136global makefile. The use of this flag causes compiler errors on earlier 4137versions of GCC, so it has been removed for compatibility. 4138 4139Miscellaneous cleanup: 41401) Removed some unused/obsolete macros 41412) Fixed a possible memory leak in the _OSI support 41423) Removed an unused variable in the predefined name support 41434) Windows OSL: remove obsolete reference to a memory list field 4144 4145Example Code and Data Size: These are the sizes for the OS-independent 4146acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4147debug version of the code includes the debug output trace mechanism and 4148has a much larger code and data size. 4149 4150 Current Release: 4151 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4152 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4153 Previous Release: 4154 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4155 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4156 4157 41582) iASL Compiler/Disassembler and Tools: 4159 4160AcpiExec: Added installation of a handler for the SystemCMOS address 4161space. This prevents control method abort if a method accesses this 4162space. 4163 4164AcpiExec: Added support for multiple EC devices, and now install EC 4165operation region handler(s) at the actual EC device instead of the 4166namespace root. This reflects the typical behavior of host operating 4167systems. 4168 4169AcpiExec: Updated to ensure that all operation region handlers are 4170installed before the _REG methods are executed. This prevents a _REG 4171method from aborting if it accesses an address space has no handler. 4172AcpiExec installs a handler for every possible address space. 4173 4174Debugger: Enhanced the "handlers" command to display non-root handlers. 4175This change enhances the handlers command to display handlers associated 4176with individual devices throughout the namespace, in addition to the 4177currently supported display of handlers associated with the root 4178namespace 4179node. 4180 4181ASL Test Suite: Several test suite errors have been identified and 4182resolved, reducing the total error count during execution. Chao Guan. 4183 4184---------------------------------------- 418528 March 2013. Summary of changes for version 20130328: 4186 41871) ACPICA kernel-resident subsystem: 4188 4189Fixed several possible race conditions with the internal object reference 4190counting mechanism. Some of the external ACPICA interfaces update object 4191reference counts without holding the interpreter or namespace lock. This 4192change adds a spinlock to protect reference count updates on the internal 4193ACPICA objects. Reported by and with assistance from Andriy Gapon 4194(avg@FreeBSD.org). 4195 4196FADT support: Removed an extraneous warning for very large GPE register 4197sets. This change removes a size mismatch warning if the legacy length 4198field for a GPE register set is larger than the 64-bit GAS structure can 4199accommodate. GPE register sets can be larger than the 255-bit width 4200limitation of the GAS structure. Linn Crosetto (linn@hp.com). 4201 4202_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 4203return from this interface. Handles a possible timeout case if 4204ACPI_WAIT_FOREVER is modified by the host to be a value less than 4205"forever". Jung-uk Kim. 4206 4207Predefined name support: Add allowed/required argument type information 4208to 4209the master predefined info table. This change adds the infrastructure to 4210enable typechecking on incoming arguments for all predefined 4211methods/objects. It does not actually contain the code that will fully 4212utilize this information, this is still under development. Also condenses 4213some duplicate code for the predefined names into a new module, 4214utilities/utpredef.c 4215 4216Example Code and Data Size: These are the sizes for the OS-independent 4217acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4218debug version of the code includes the debug output trace mechanism and 4219has a much larger code and data size. 4220 4221 Previous Release: 4222 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4223 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4224 Current Release: 4225 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4226 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4227 4228 42292) iASL Compiler/Disassembler and Tools: 4230 4231iASL: Implemented a new option to simplify the development of ACPI- 4232related 4233BIOS code. Adds support for a new "offset table" output file. The -so 4234option will create a C table containing the AML table offsets of various 4235named objects in the namespace so that BIOS code can modify them easily 4236at 4237boot time. This can simplify BIOS runtime code by eliminating expensive 4238searches for "magic values", enhancing boot times and adding greater 4239reliability. With assistance from Lee Hamel. 4240 4241iASL: Allow additional predefined names to return zero-length packages. 4242Now, all predefined names that are defined by the ACPI specification to 4243return a "variable-length package of packages" are allowed to return a 4244zero length top-level package. This allows the BIOS to tell the host that 4245the requested feature is not supported, and supports existing BIOS/ASL 4246code and practices. 4247 4248iASL: Changed the "result not used" warning to an error. This is the case 4249where an ASL operator is effectively a NOOP because the result of the 4250operation is not stored anywhere. For example: 4251 Add (4, Local0) 4252There is no target (missing 3rd argument), nor is the function return 4253value used. This is potentially a very serious problem -- since the code 4254was probably intended to do something, but for whatever reason, the value 4255was not stored. Therefore, this issue has been upgraded from a warning to 4256an error. 4257 4258AcpiHelp: Added allowable/required argument types to the predefined names 4259info display. This feature utilizes the recent update to the predefined 4260names table (above). 4261 4262---------------------------------------- 426314 February 2013. Summary of changes for version 20130214: 4264 42651) ACPICA Kernel-resident Subsystem: 4266 4267Fixed a possible regression on some hosts: Reinstated the safe return 4268macros (return_ACPI_STATUS, etc.) that ensure that the argument is 4269evaluated only once. Although these macros are not needed for the ACPICA 4270code itself, they are often used by ACPI-related host device drivers 4271where 4272the safe feature may be necessary. 4273 4274Fixed several issues related to the ACPI 5.0 reduced hardware support 4275(SOC): Now ensure that if the platform declares itself as hardware- 4276reduced 4277via the FADT, the following functions become NOOPs (and always return 4278AE_OK) because ACPI is always enabled by definition on these machines: 4279 AcpiEnable 4280 AcpiDisable 4281 AcpiHwGetMode 4282 AcpiHwSetMode 4283 4284Dynamic Object Repair: Implemented additional runtime repairs for 4285predefined name return values. Both of these repairs can simplify code in 4286the related device drivers that invoke these methods: 42871) For the _STR and _MLS names, automatically repair/convert an ASCII 4288string to a Unicode buffer. 42892) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 4290a 4291lone end tag descriptor in the following cases: A Return(0) was executed, 4292a null buffer was returned, or no object at all was returned (non-slack 4293mode only). Adds a new file, nsconvert.c 4294ACPICA BZ 998. Bob Moore, Lv Zheng. 4295 4296Resource Manager: Added additional code to prevent possible infinite 4297loops 4298while traversing corrupted or ill-formed resource template buffers. Check 4299for zero-length resource descriptors in all code that loops through 4300resource templates (the length field is used to index through the 4301template). This change also hardens the external AcpiWalkResources and 4302AcpiWalkResourceBuffer interfaces. 4303 4304Local Cache Manager: Enhanced the main data structure to eliminate an 4305unnecessary mechanism to access the next object in the list. Actually 4306provides a small performance enhancement for hosts that use the local 4307ACPICA cache manager. Jung-uk Kim. 4308 4309Example Code and Data Size: These are the sizes for the OS-independent 4310acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4311debug version of the code includes the debug output trace mechanism and 4312has a much larger code and data size. 4313 4314 Previous Release: 4315 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4316 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4317 Current Release: 4318 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4319 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4320 4321 43222) iASL Compiler/Disassembler and Tools: 4323 4324iASL/Disassembler: Fixed several issues with the definition of the ACPI 43255.0 RASF table (RAS Feature Table). This change incorporates late changes 4326that were made to the ACPI 5.0 specification. 4327 4328iASL/Disassembler: Added full support for the following new ACPI tables: 4329 1) The MTMR table (MID Timer Table) 4330 2) The VRTC table (Virtual Real Time Clock Table). 4331Includes header file, disassembler, table compiler, and template support 4332for both tables. 4333 4334iASL: Implemented compile-time validation of package objects returned by 4335predefined names. This new feature validates static package objects 4336returned by the various predefined names defined to return packages. Both 4337object types and package lengths are validated, for both parent packages 4338and sub-packages, if any. The code is similar in structure and behavior 4339to 4340the runtime repair mechanism within the AML interpreter and uses the 4341existing predefined name information table. Adds a new file, aslprepkg.c. 4342ACPICA BZ 938. 4343 4344iASL: Implemented auto-detection of binary ACPI tables for disassembly. 4345This feature detects a binary file with a valid ACPI table header and 4346invokes the disassembler automatically. Eliminates the need to 4347specifically invoke the disassembler with the -d option. ACPICA BZ 862. 4348 4349iASL/Disassembler: Added several warnings for the case where there are 4350unresolved control methods during the disassembly. This can potentially 4351cause errors when the output file is compiled, because the disassembler 4352assumes zero method arguments in these cases (it cannot determine the 4353actual number of arguments without resolution/definition of the method). 4354 4355Debugger: Added support to display all resources with a single command. 4356Invocation of the resources command with no arguments will now display 4357all 4358resources within the current namespace. 4359 4360AcpiHelp: Added descriptive text for each ACPICA exception code displayed 4361via the -e option. 4362 4363---------------------------------------- 436417 January 2013. Summary of changes for version 20130117: 4365 43661) ACPICA Kernel-resident Subsystem: 4367 4368Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 4369return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 4370objects to return a package containing one integer, most BIOS code 4371returns 4372two integers and the previous code reflects that. However, we also need 4373to 4374support BIOS code that actually implements to the ACPI spec, and this 4375change reflects this. 4376 4377Fixed two issues with the ACPI_DEBUG_PRINT macros: 43781) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 4379C compilers that require this support. 43802) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 4381ACPI_DEBUG is already used by many of the various hosts. 4382 4383Updated all ACPICA copyrights and signons to 2013. Added the 2013 4384copyright to all module headers and signons, including the standard Linux 4385header. This affects virtually every file in the ACPICA core subsystem, 4386iASL compiler, all ACPICA utilities, and the test suites. 4387 4388Example Code and Data Size: These are the sizes for the OS-independent 4389acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4390debug version of the code includes the debug output trace mechanism and 4391has a much larger code and data size. 4392 4393 Previous Release: 4394 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4395 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4396 Current Release: 4397 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4398 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4399 4400 44012) iASL Compiler/Disassembler and Tools: 4402 4403Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 4404prevent a possible fault on some hosts. Some C libraries modify the arg 4405pointer parameter to vfprintf making it difficult to call it twice in the 4406AcpiOsVprintf function. Use a local buffer to workaround this issue. This 4407does not affect the Windows OSL since the Win C library does not modify 4408the arg pointer. Chao Guan, Bob Moore. 4409 4410iASL: Fixed a possible infinite loop when the maximum error count is 4411reached. If an output file other than the .AML file is specified (such as 4412a listing file), and the maximum number of errors is reached, do not 4413attempt to flush data to the output file(s) as the compiler is aborting. 4414This can cause an infinite loop as the max error count code essentially 4415keeps calling itself. 4416 4417iASL/Disassembler: Added an option (-in) to ignore NOOP 4418opcodes/operators. 4419Implemented for both the compiler and the disassembler. Often, the NOOP 4420opcode is used as padding for packages that are changed dynamically by 4421the 4422BIOS. When disassembled and recompiled, these NOOPs will cause syntax 4423errors. This option causes the disassembler to ignore all NOOP opcodes 4424(0xA3), and it also causes the compiler to ignore all ASL source code 4425NOOP 4426statements as well. 4427 4428Debugger: Enhanced the Sleep command to execute all sleep states. This 4429change allows Sleep to be invoked with no arguments and causes the 4430debugger to execute all of the sleep states, 0-5, automatically. 4431 4432---------------------------------------- 443320 December 2012. Summary of changes for version 20121220: 4434 44351) ACPICA Kernel-resident Subsystem: 4436 4437Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 4438alternate entry point for AcpiWalkResources and improves the usability of 4439the resource manager by accepting as input a buffer containing the output 4440of either a _CRS, _PRS, or _AEI method. The key functionality is that the 4441input buffer is not deleted by this interface so that it can be used by 4442the host later. See the ACPICA reference for details. 4443 4444Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 4445(DSDT version < 2). The constant will be truncated and this warning 4446reflects that behavior. 4447 4448Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 4449ExtendedInterrupt, and GpioInt descriptors. This change adds support to 4450both get and set the new wake bit in these descriptors, separately from 4451the existing share bit. Reported by Aaron Lu. 4452 4453Interpreter: Fix Store() when an implicit conversion is not possible. For 4454example, in the cases such as a store of a string to an existing package 4455object, implement the store as a CopyObject(). This is a small departure 4456from the ACPI specification which states that the control method should 4457be 4458aborted in this case. However, the ASLTS suite depends on this behavior. 4459 4460Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 4461macros: check if debug output is currently enabled as soon as possible to 4462minimize performance impact if debug is in fact not enabled. 4463 4464Source code restructuring: Cleanup to improve modularity. The following 4465new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 4466psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 4467Associated makefiles and project files have been updated. 4468 4469Changed an exception code for LoadTable operator. For the case where one 4470of the input strings is too long, change the returned exception code from 4471AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 4472 4473Fixed a possible memory leak in dispatcher error path. On error, delete 4474the mutex object created during method mutex creation. Reported by 4475tim.gardner@canonical.com. 4476 4477Example Code and Data Size: These are the sizes for the OS-independent 4478acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4479debug version of the code includes the debug output trace mechanism and 4480has a much larger code and data size. 4481 4482 Previous Release: 4483 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4484 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4485 Current Release: 4486 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4487 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4488 4489 44902) iASL Compiler/Disassembler and Tools: 4491 4492iASL: Disallow a method call as argument to the ObjectType ASL operator. 4493This change tracks an errata to the ACPI 5.0 document. The AML grammar 4494will not allow the interpreter to differentiate between a method and a 4495method invocation when these are used as an argument to the ObjectType 4496operator. The ACPI specification change is to disallow a method 4497invocation 4498(UserTerm) for the ObjectType operator. 4499 4500Finish support for the TPM2 and CSRT tables in the headers, table 4501compiler, and disassembler. 4502 4503Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 4504always expires immediately if the semaphore is not available. The 4505original 4506code was using a relative-time timeout, but sem_timedwait requires the 4507use 4508of an absolute time. 4509 4510iASL: Added a remark if the Timer() operator is used within a 32-bit 4511table. This operator returns a 64-bit time value that will be truncated 4512within a 32-bit table. 4513 4514iASL Source code restructuring: Cleanup to improve modularity. The 4515following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 4516aslmethod.c, and aslfileio.c. Associated makefiles and project files have 4517been updated. 4518 4519 4520---------------------------------------- 452114 November 2012. Summary of changes for version 20121114: 4522 45231) ACPICA Kernel-resident Subsystem: 4524 4525Implemented a performance enhancement for ACPI/AML Package objects. This 4526change greatly increases the performance of Package objects within the 4527interpreter. It changes the processing of reference counts for packages 4528by 4529optimizing for the most common case where the package sub-objects are 4530either Integers, Strings, or Buffers. Increases the overall performance 4531of 4532the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 45332X.) 4534Chao Guan. ACPICA BZ 943. 4535 4536Implemented and deployed common macros to extract flag bits from resource 4537descriptors. Improves readability and maintainability of the code. Fixes 4538a 4539problem with the UART serial bus descriptor for the number of data bits 4540flags (was incorrectly 2 bits, should be 3). 4541 4542Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 4543of the macros and changed the SETx macros to the style of (destination, 4544source). Also added ACPI_CASTx companion macros. Lv Zheng. 4545 4546Example Code and Data Size: These are the sizes for the OS-independent 4547acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4548debug version of the code includes the debug output trace mechanism and 4549has a much larger code and data size. 4550 4551 Previous Release: 4552 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4553 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4554 Current Release: 4555 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4556 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4557 4558 45592) iASL Compiler/Disassembler and Tools: 4560 4561Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 4562adds the ShareAndWake and ExclusiveAndWake flags which were added to the 4563Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 4564 4565Disassembler: Fixed a problem with external declaration generation. Fixes 4566a problem where an incorrect pathname could be generated for an external 4567declaration if the original reference to the object includes leading 4568carats (^). ACPICA BZ 984. 4569 4570Debugger: Completed a major update for the Disassemble<method> command. 4571This command was out-of-date and did not properly disassemble control 4572methods that had any reasonable complexity. This fix brings the command 4573up 4574to the same level as the rest of the disassembler. Adds one new file, 4575dmdeferred.c, which is existing code that is now common with the main 4576disassembler and the debugger disassemble command. ACPICA MZ 978. 4577 4578iASL: Moved the parser entry prototype to avoid a duplicate declaration. 4579Newer versions of Bison emit this prototype, so moved the prototype out 4580of 4581the iASL header to where it is actually used in order to avoid a 4582duplicate 4583declaration. 4584 4585iASL/Tools: Standardized use of the stream I/O functions: 4586 1) Ensure check for I/O error after every fopen/fread/fwrite 4587 2) Ensure proper order of size/count arguments for fread/fwrite 4588 3) Use test of (Actual != Requested) after all fwrite, and most fread 4589 4) Standardize I/O error messages 4590Improves reliability and maintainability of the code. Bob Moore, Lv 4591Zheng. 4592ACPICA BZ 981. 4593 4594Disassembler: Prevent duplicate External() statements. During generation 4595of external statements, detect similar pathnames that are actually 4596duplicates such as these: 4597 External (\ABCD) 4598 External (ABCD) 4599Remove all leading '\' characters from pathnames during the external 4600statement generation so that duplicates will be detected and tossed. 4601ACPICA BZ 985. 4602 4603Tools: Replace low-level I/O with stream I/O functions. Replace 4604open/read/write/close with the stream I/O equivalents 4605fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 4606Moore. 4607 4608AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 4609name header so that AcpiXtract recognizes the output file/table. 4610 4611iASL: Remove obsolete -2 option flag. Originally intended to force the 4612compiler/disassembler into an ACPI 2.0 mode, this was never implemented 4613and the entire concept is now obsolete. 4614 4615---------------------------------------- 461618 October 2012. Summary of changes for version 20121018: 4617 4618 46191) ACPICA Kernel-resident Subsystem: 4620 4621Updated support for the ACPI 5.0 MPST table. Fixes some problems 4622introduced by late changes to the table as it was added to the ACPI 5.0 4623specification. Includes header, disassembler, and data table compiler 4624support as well as a new version of the MPST template. 4625 4626AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 46275.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 4628methods: _HID, _CID, and _UID. 4629 4630Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 4631ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 4632name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 4633names for their various drivers. Affects the AcpiGetObjectInfo external 4634interface, and other internal interfaces as well. 4635 4636Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 4637This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 4638on machines that support non-aligned transfers. Optimizes for this case 4639rather than using a strncpy. With assistance from Zheng Lv. 4640 4641Resource Manager: Small fix for buffer size calculation. Fixed a one byte 4642error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 4643 4644Added a new debug print message for AML mutex objects that are force- 4645released. At control method termination, any currently acquired mutex 4646objects are force-released. Adds a new debug-only message for each one 4647that is released. 4648 4649Audited/updated all ACPICA return macros and the function debug depth 4650counter: 1) Ensure that all functions that use the various TRACE macros 4651also use the appropriate ACPICA return macros. 2) Ensure that all normal 4652return statements surround the return expression (value) with parens to 4653ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 4654Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 4655 4656Global source code changes/maintenance: All extra lines at the start and 4657end of each source file have been removed for consistency. Also, within 4658comments, all new sentences start with a single space instead of a double 4659space, again for consistency across the code base. 4660 4661Example Code and Data Size: These are the sizes for the OS-independent 4662acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4663debug version of the code includes the debug output trace mechanism and 4664has a much larger code and data size. 4665 4666 Previous Release: 4667 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4668 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4669 Current Release: 4670 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4671 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4672 4673 46742) iASL Compiler/Disassembler and Tools: 4675 4676AcpiExec: Improved the algorithm used for memory leak/corruption 4677detection. Added some intelligence to the code that maintains the global 4678list of allocated memory. The list is now ordered by allocated memory 4679address, significantly improving performance. When running AcpiExec on 4680the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 4681on the platform and/or the environment. Note, this performance 4682enhancement affects the AcpiExec utility only, not the kernel-resident 4683ACPICA code. 4684 4685Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 4686the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 4687incorrect table offset reported for invalid opcodes. Report the original 468832-bit value for bad ACPI_NAMEs (as well as the repaired name.) 4689 4690Disassembler: Enhanced the -vt option to emit the binary table data in 4691hex format to assist with debugging. 4692 4693Fixed a potential filename buffer overflow in osunixdir.c. Increased the 4694size of file structure. Colin Ian King. 4695 4696---------------------------------------- 469713 September 2012. Summary of changes for version 20120913: 4698 4699 47001) ACPICA Kernel-resident Subsystem: 4701 4702ACPI 5.0: Added two new notify types for the Hardware Error Notification 4703Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 4704and 4705MCE(6). 4706 4707Table Manager: Merged/removed duplicate code in the root table resize 4708functions. One function is external, the other is internal. Lv Zheng, 4709ACPICA 4710BZ 846. 4711 4712Makefiles: Completely removed the obsolete "Linux" makefiles under 4713acpica/generate/linux. These makefiles are obsolete and have been 4714replaced 4715by 4716the generic unix makefiles under acpica/generate/unix. 4717 4718Makefiles: Ensure that binary files always copied properly. Minor rule 4719change 4720to ensure that the final binary output files are always copied up to the 4721appropriate binary directory (bin32 or bin64.) 4722 4723Example Code and Data Size: These are the sizes for the OS-independent 4724acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4725debug 4726version of the code includes the debug output trace mechanism and has a 4727much 4728larger code and data size. 4729 4730 Previous Release: 4731 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4732 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4733 Current Release: 4734 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4735 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4736 4737 47382) iASL Compiler/Disassembler and Tools: 4739 4740Disassembler: Fixed a possible fault during the disassembly of resource 4741descriptors when a second parse is required because of the invocation of 4742external control methods within the table. With assistance from 4743adq@lidskialf.net. ACPICA BZ 976. 4744 4745iASL: Fixed a namepath optimization problem. An error can occur if the 4746parse 4747node that contains the namepath to be optimized does not have a parent 4748node 4749that is a named object. This change fixes the problem. 4750 4751iASL: Fixed a regression where the AML file is not deleted on errors. The 4752AML 4753output file should be deleted if there are any errors during the 4754compiler. 4755The 4756only exception is if the -f (force output) option is used. ACPICA BZ 974. 4757 4758iASL: Added a feature to automatically increase internal line buffer 4759sizes. 4760Via realloc(), automatically increase the internal line buffer sizes as 4761necessary to support very long source code lines. The current version of 4762the 4763preprocessor requires a buffer long enough to contain full source code 4764lines. 4765This change increases the line buffer(s) if the input lines go beyond the 4766current buffer size. This eliminates errors that occurred when a source 4767code 4768line was longer than the buffer. 4769 4770iASL: Fixed a problem with constant folding in method declarations. The 4771SyncLevel term is a ByteConstExpr, and incorrect code would be generated 4772if a 4773Type3 opcode was used. 4774 4775Debugger: Improved command help support. For incorrect argument count, 4776display 4777full help for the command. For help command itself, allow an argument to 4778specify a command. 4779 4780Test Suites: Several bug fixes for the ASLTS suite reduces the number of 4781errors during execution of the suite. Guan Chao. 4782 4783---------------------------------------- 478416 August 2012. Summary of changes for version 20120816: 4785 4786 47871) ACPICA Kernel-resident Subsystem: 4788 4789Removed all use of the deprecated _GTS and _BFS predefined methods. The 4790_GTS 4791(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 4792deprecated and will probably be removed from the ACPI specification. 4793Windows 4794does not invoke them, and reportedly never will. The final nail in the 4795coffin 4796is that the ACPI specification states that these methods must be run with 4797interrupts off, which is not going to happen in a kernel interpreter. 4798Note: 4799Linux has removed all use of the methods also. It was discovered that 4800invoking these functions caused failures on some machines, probably 4801because 4802they were never tested since Windows does not call them. Affects two 4803external 4804interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 4805ACPICA BZ 969. 4806 4807Implemented support for complex bit-packed buffers returned from the _PLD 4808(Physical Location of Device) predefined method. Adds a new external 4809interface, AcpiDecodePldBuffer that parses the buffer into a more usable 4810C 4811structure. Note: C Bitfields cannot be used for this type of predefined 4812structure since the memory layout of individual bitfields is not defined 4813by 4814the C language. In addition, there are endian concerns where a compiler 4815will 4816change the bitfield ordering based on the machine type. The new ACPICA 4817interface eliminates these issues, and should be called after _PLD is 4818executed. ACPICA BZ 954. 4819 4820Implemented a change to allow a scope change to root (via "Scope (\)") 4821during 4822execution of module-level ASL code (code that is executed at table load 4823time.) Lin Ming. 4824 4825Added the Windows8/Server2012 string for the _OSI method. This change 4826adds 4827a 4828new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 48292012. 4830 4831Added header support for the new ACPI tables DBG2 (Debug Port Table Type 48322) 4833and CSRT (Core System Resource Table). 4834 4835Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 4836names. This simplifies access to the buffers returned by these predefined 4837names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 4838 4839GPE support: Removed an extraneous parameter from the various low-level 4840internal GPE functions. Tang Feng. 4841 4842Removed the linux makefiles from the unix packages. The generate/linux 4843makefiles are obsolete and have been removed from the unix tarball 4844release 4845packages. The replacement makefiles are under generate/unix, and there is 4846a 4847top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 4848 4849Updates for Unix makefiles: 48501) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 48512) Update linker flags (move to end of command line) for AcpiExec 4852utility. 4853Guan Chao. 4854 4855Split ACPICA initialization functions to new file, utxfinit.c. Split from 4856utxface.c to improve modularity and reduce file size. 4857 4858Example Code and Data Size: These are the sizes for the OS-independent 4859acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4860debug version of the code includes the debug output trace mechanism and 4861has a 4862much larger code and data size. 4863 4864 Previous Release: 4865 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4866 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4867 Current Release: 4868 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4869 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4870 4871 48722) iASL Compiler/Disassembler and Tools: 4873 4874iASL: Fixed a problem with constant folding for fixed-length constant 4875expressions. The constant-folding code was not being invoked for constant 4876expressions that allow the use of type 3/4/5 opcodes to generate 4877constants 4878for expressions such as ByteConstExpr, WordConstExpr, etc. This could 4879result 4880in the generation of invalid AML bytecode. ACPICA BZ 970. 4881 4882iASL: Fixed a generation issue on newer versions of Bison. Newer versions 4883apparently automatically emit some of the necessary externals. This 4884change 4885handles these versions in order to eliminate generation warnings. 4886 4887Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 4888 4889Disassembler: Add support to decode _PLD buffers. The decoded buffer 4890appears 4891within comments in the output file. 4892 4893Debugger: Fixed a regression with the "Threads" command where 4894AE_BAD_PARAMETER was always returned. 4895 4896---------------------------------------- 489711 July 2012. Summary of changes for version 20120711: 4898 48991) ACPICA Kernel-resident Subsystem: 4900 4901Fixed a possible fault in the return package object repair code. Fixes a 4902problem that can occur when a lone package object is wrapped with an 4903outer 4904package object in order to force conformance to the ACPI specification. 4905Can 4906affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 4907_DLM, 4908_CSD, _PSD, _TSD. 4909 4910Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 4911PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 4912ARB_DIS bit must be implemented in the host-dependent C3 processor power 4913state 4914support. Note, ARB_DIS is obsolete and only applies to older chipsets, 4915both 4916Intel and other vendors. (for Intel: ICH4-M and earlier) 4917 4918This change removes the code to disable/enable bus master arbitration 4919during 4920suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 4921causes 4922resume problems on some machines. The change has been in use for over 4923seven 4924years within Linux. 4925 4926Implemented two new external interfaces to support host-directed dynamic 4927ACPI 4928table load and unload. They are intended to simplify the host 4929implementation 4930of hot-plug support: 4931 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 4932 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 4933table. 4934See the ACPICA reference for additional details. Adds one new file, 4935components/tables/tbxfload.c 4936 4937Implemented and deployed two new interfaces for errors and warnings that 4938are 4939known to be caused by BIOS/firmware issues: 4940 AcpiBiosError: Prints "ACPI Firmware Error" message. 4941 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 4942Deployed these new interfaces in the ACPICA Table Manager code for ACPI 4943table 4944and FADT errors. Additional deployment to be completed as appropriate in 4945the 4946future. The associated conditional macros are ACPI_BIOS_ERROR and 4947ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 4948ACPICA 4949BZ 4950843. 4951 4952Implicit notify support: ensure that no memory allocation occurs within a 4953critical region. This fix moves a memory allocation outside of the time 4954that a 4955spinlock is held. Fixes issues on systems that do not allow this 4956behavior. 4957Jung-uk Kim. 4958 4959Split exception code utilities and tables into a new file, 4960utilities/utexcep.c 4961 4962Example Code and Data Size: These are the sizes for the OS-independent 4963acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4964debug 4965version of the code includes the debug output trace mechanism and has a 4966much 4967larger code and data size. 4968 4969 Previous Release: 4970 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4971 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4972 Current Release: 4973 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4974 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4975 4976 49772) iASL Compiler/Disassembler and Tools: 4978 4979iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 4980of 49810. Jung-uk Kim. 4982 4983Debugger: Enhanced the "tables" command to emit additional information 4984about 4985the current set of ACPI tables, including the owner ID and flags decode. 4986 4987Debugger: Reimplemented the "unload" command to use the new 4988AcpiUnloadParentTable external interface. This command was disable 4989previously 4990due to need for an unload interface. 4991 4992AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 4993option 4994will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 4995 4996---------------------------------------- 499720 June 2012. Summary of changes for version 20120620: 4998 4999 50001) ACPICA Kernel-resident Subsystem: 5001 5002Implemented support to expand the "implicit notify" feature to allow 5003multiple 5004devices to be notified by a single GPE. This feature automatically 5005generates a 5006runtime device notification in the absence of a BIOS-provided GPE control 5007method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 5008notify is 5009provided by ACPICA for Windows compatibility, and is a workaround for 5010BIOS 5011AML 5012code errors. See the description of the AcpiSetupGpeForWake interface in 5013the 5014APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 5015 5016Changed some comments and internal function names to simplify and ensure 5017correctness of the Linux code translation. No functional changes. 5018 5019Example Code and Data Size: These are the sizes for the OS-independent 5020acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5021debug 5022version of the code includes the debug output trace mechanism and has a 5023much 5024larger code and data size. 5025 5026 Previous Release: 5027 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5028 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5029 Current Release: 5030 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5031 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5032 5033 50342) iASL Compiler/Disassembler and Tools: 5035 5036Disassembler: Added support to emit short, commented descriptions for the 5037ACPI 5038predefined names in order to improve the readability of the disassembled 5039output. ACPICA BZ 959. Changes include: 5040 1) Emit descriptions for all standard predefined names (_INI, _STA, 5041_PRW, 5042etc.) 5043 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 5044 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 5045etc.) 5046 5047AcpiSrc: Fixed several long-standing Linux code translation issues. 5048Argument 5049descriptions in function headers are now translated properly to lower 5050case 5051and 5052underscores. ACPICA BZ 961. Also fixes translation problems such as 5053these: 5054(old -> new) 5055 i_aSL -> iASL 5056 00-7_f -> 00-7F 5057 16_k -> 16K 5058 local_fADT -> local_FADT 5059 execute_oSI -> execute_OSI 5060 5061iASL: Fixed a problem where null bytes were inadvertently emitted into 5062some 5063listing files. 5064 5065iASL: Added the existing debug options to the standard help screen. There 5066are 5067no longer two different help screens. ACPICA BZ 957. 5068 5069AcpiHelp: Fixed some typos in the various predefined name descriptions. 5070Also 5071expand some of the descriptions where appropriate. 5072 5073iASL: Fixed the -ot option (display compile times/statistics). Was not 5074working 5075properly for standard output; only worked for the debug file case. 5076 5077---------------------------------------- 507818 May 2012. Summary of changes for version 20120518: 5079 5080 50811) ACPICA Core Subsystem: 5082 5083Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 5084defined 5085to block until asynchronous events such as notifies and GPEs have 5086completed. 5087Within ACPICA, it is only called before a notify or GPE handler is 5088removed/uninstalled. It also may be useful for the host OS within related 5089drivers such as the Embedded Controller driver. See the ACPICA reference 5090for 5091additional information. ACPICA BZ 868. 5092 5093ACPI Tables: Added a new error message for a possible overflow failure 5094during 5095the conversion of FADT 32-bit legacy register addresses to internal 5096common 509764- 5098bit GAS structure representation. The GAS has a one-byte "bit length" 5099field, 5100thus limiting the register length to 255 bits. ACPICA BZ 953. 5101 5102Example Code and Data Size: These are the sizes for the OS-independent 5103acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5104debug 5105version of the code includes the debug output trace mechanism and has a 5106much 5107larger code and data size. 5108 5109 Previous Release: 5110 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5111 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5112 Current Release: 5113 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5114 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5115 5116 51172) iASL Compiler/Disassembler and Tools: 5118 5119iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 5120macro. 5121This keyword was added late in the ACPI 5.0 release cycle and was not 5122implemented until now. 5123 5124Disassembler: Added support for Operation Region externals. Adds missing 5125support for operation regions that are defined in another table, and 5126referenced locally via a Field or BankField ASL operator. Now generates 5127the 5128correct External statement. 5129 5130Disassembler: Several additional fixes for the External() statement 5131generation 5132related to some ASL operators. Also, order the External() statements 5133alphabetically in the disassembler output. Fixes the External() 5134generation 5135for 5136the Create* field, Alias, and Scope operators: 5137 1) Create* buffer field operators - fix type mismatch warning on 5138disassembly 5139 2) Alias - implement missing External support 5140 3) Scope - fix to make sure all necessary externals are emitted. 5141 5142iASL: Improved pathname support. For include files, merge the prefix 5143pathname 5144with the file pathname and eliminate unnecessary components. Convert 5145backslashes in all pathnames to forward slashes, for readability. Include 5146file 5147pathname changes affect both #include and Include() type operators. 5148 5149iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 5150end 5151of a valid line by inserting a newline and then returning the EOF during 5152the 5153next call to GetNextLine. Prevents the line from being ignored due to EOF 5154condition. 5155 5156iASL: Implemented some changes to enhance the IDE support (-vi option.) 5157Error 5158and Warning messages are now correctly recognized for both the source 5159code 5160browser and the global error and warning counts. 5161 5162---------------------------------------- 516320 April 2012. Summary of changes for version 20120420: 5164 5165 51661) ACPICA Core Subsystem: 5167 5168Implemented support for multiple notify handlers. This change adds 5169support 5170to 5171allow multiple system and device notify handlers on Device, Thermal Zone, 5172and 5173Processor objects. This can simplify the host OS notification 5174implementation. 5175Also re-worked and restructured the entire notify support code to 5176simplify 5177handler installation, handler removal, notify event queuing, and notify 5178dispatch to handler(s). Note: there can still only be two global notify 5179handlers - one for system notifies and one for device notifies. There are 5180no 5181changes to the existing handler install/remove interfaces. Lin Ming, Bob 5182Moore, Rafael Wysocki. 5183 5184Fixed a regression in the package repair code where the object reference 5185count was calculated incorrectly. Regression was introduced in the commit 5186"Support to add Package wrappers". 5187 5188Fixed a couple possible memory leaks in the AML parser, in the error 5189recovery 5190path. Jesper Juhl, Lin Ming. 5191 5192Example Code and Data Size: These are the sizes for the OS-independent 5193acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5194debug version of the code includes the debug output trace mechanism and 5195has a 5196much larger code and data size. 5197 5198 Previous Release: 5199 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5200 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5201 Current Release: 5202 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5203 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5204 5205 52062) iASL Compiler/Disassembler and Tools: 5207 5208iASL: Fixed a problem with the resource descriptor support where the 5209length 5210of the StartDependentFn and StartDependentFnNoPrio descriptors were not 5211included in cumulative descriptor offset, resulting in incorrect values 5212for 5213resource tags within resource descriptors appearing after a 5214StartDependent* 5215descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 5216 5217iASL and Preprocessor: Implemented full support for the #line directive 5218to 5219correctly track original source file line numbers through the .i 5220preprocessor 5221output file - for error and warning messages. 5222 5223iASL: Expand the allowable byte constants for address space IDs. 5224Previously, 5225the allowable range was 0x80-0xFF (user-defined spaces), now the range is 52260x0A-0xFF to allow for custom and new IDs without changing the compiler. 5227 5228iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 5229 5230iASL: Add option to completely disable the preprocessor (-Pn). 5231 5232iASL: Now emit all error/warning messages to standard error (stderr) by 5233default (instead of the previous stdout). 5234 5235ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 5236Update 5237for resource descriptor offset fix above. Update/cleanup error output 5238routines. Enable and send iASL errors/warnings to an error logfile 5239(error.txt). Send all other iASL output to a logfile (compiler.txt). 5240Fixed 5241several extraneous "unrecognized operator" messages. 5242 5243---------------------------------------- 524420 March 2012. Summary of changes for version 20120320: 5245 5246 52471) ACPICA Core Subsystem: 5248 5249Enhanced the sleep/wake interfaces to optionally execute the _GTS method 5250(Going To Sleep) and the _BFS method (Back From Sleep). Windows 5251apparently 5252does not execute these methods, and therefore these methods are often 5253untested. It has been seen on some systems where the execution of these 5254methods causes errors and also prevents the machine from entering S5. It 5255is 5256therefore suggested that host operating systems do not execute these 5257methods 5258by default. In the future, perhaps these methods can be optionally 5259executed 5260based on the age of the system and/or what is the newest version of 5261Windows 5262that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 5263and 5264AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 5265Ming. 5266 5267Fixed a problem where the length of the local/common FADT was set too 5268early. 5269The local FADT table length cannot be set to the common length until the 5270original length has been examined. There is code that checks the table 5271length 5272and sets various fields appropriately. This can affect older machines 5273with 5274early FADT versions. For example, this can cause inadvertent writes to 5275the 5276CST_CNT register. Julian Anastasov. 5277 5278Fixed a mapping issue related to a physical table override. Use the 5279deferred 5280mapping mechanism for tables loaded via the physical override OSL 5281interface. 5282This allows for early mapping before the virtual memory manager is 5283available. 5284Thomas Renninger, Bob Moore. 5285 5286Enhanced the automatic return-object repair code: Repair a common problem 5287with 5288predefined methods that are defined to return a variable-length Package 5289of 5290sub-objects. If there is only one sub-object, some BIOS ASL code 5291mistakenly 5292simply returns the single object instead of a Package with one sub- 5293object. 5294This new support will repair this error by wrapping a Package object 5295around 5296the original object, creating the correct and expected Package with one 5297sub- 5298object. Names that can be repaired in this manner include: _ALR, _CSD, 5299_HPX, 5300_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 5301939. 5302 5303Changed the exception code returned for invalid ACPI paths passed as 5304parameters to external interfaces such as AcpiEvaluateObject. Was 5305AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 5306 5307Example Code and Data Size: These are the sizes for the OS-independent 5308acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5309debug 5310version of the code includes the debug output trace mechanism and has a 5311much 5312larger code and data size. 5313 5314 Previous Release: 5315 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5316 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5317 Current Release: 5318 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5319 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5320 5321 53222) iASL Compiler/Disassembler and Tools: 5323 5324iASL: Added the infrastructure and initial implementation of a integrated 5325C- 5326like preprocessor. This will simplify BIOS development process by 5327eliminating 5328the need for a separate preprocessing step during builds. On Windows, it 5329also 5330eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 5331features including full #define() macro support are still under 5332development. 5333These preprocessor directives are supported: 5334 #define 5335 #elif 5336 #else 5337 #endif 5338 #error 5339 #if 5340 #ifdef 5341 #ifndef 5342 #include 5343 #pragma message 5344 #undef 5345 #warning 5346In addition, these new command line options are supported: 5347 -D <symbol> Define symbol for preprocessor use 5348 -li Create preprocessed output file (*.i) 5349 -P Preprocess only and create preprocessor output file (*.i) 5350 5351Table Compiler: Fixed a problem where the equals operator within an 5352expression 5353did not work properly. 5354 5355Updated iASL to use the current versions of Bison/Flex. Updated the 5356Windows 5357project file to invoke these tools from the standard location. ACPICA BZ 5358904. 5359Versions supported: 5360 Flex for Windows: V2.5.4 5361 Bison for Windows: V2.4.1 5362 5363---------------------------------------- 536415 February 2012. Summary of changes for version 20120215: 5365 5366 53671) ACPICA Core Subsystem: 5368 5369There have been some major changes to the sleep/wake support code, as 5370described below (a - e). 5371 5372a) The AcpiLeaveSleepState has been split into two interfaces, similar to 5373AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 5374AcpiLeaveSleepStatePrep. This allows the host to perform actions between 5375the 5376time the _BFS method is called and the _WAK method is called. NOTE: all 5377hosts 5378must update their wake/resume code or else sleep/wake will not work 5379properly. 5380Rafael Wysocki. 5381 5382b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 5383_WAK 5384method. Some machines require that the GPEs are enabled before the _WAK 5385method 5386is executed. Thomas Renninger. 5387 5388c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 5389bit. 5390Some BIOS code assumes that WAK_STS will be cleared on resume and use it 5391to 5392determine whether the system is rebooting or resuming. Matthew Garrett. 5393 5394d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 5395Sleep) to 5396match the ACPI specification requirement. Rafael Wysocki. 5397 5398e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 5399registers within the V5 FADT. This support adds two new files: 5400hardware/hwesleep.c implements the support for the new registers. Moved 5401all 5402sleep/wake external interfaces to hardware/hwxfsleep.c. 5403 5404 5405Added a new OSL interface for ACPI table overrides, 5406AcpiOsPhysicalTableOverride. This interface allows the host to override a 5407table via a physical address, instead of the logical address required by 5408AcpiOsTableOverride. This simplifies the host implementation. Initial 5409implementation by Thomas Renninger. The ACPICA implementation creates a 5410single 5411shared function for table overrides that attempts both a logical and a 5412physical override. 5413 5414Expanded the OSL memory read/write interfaces to 64-bit data 5415(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 5416transfer support for GAS register structures passed to AcpiRead and 5417AcpiWrite. 5418 5419Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 5420custom 5421build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 5422model. 5423See the ACPICA reference for details. ACPICA BZ 942. This option removes 5424about 542510% of the code and 5% of the static data, and the following hardware 5426ACPI 5427features become unavailable: 5428 PM Event and Control registers 5429 SCI interrupt (and handler) 5430 Fixed Events 5431 General Purpose Events (GPEs) 5432 Global Lock 5433 ACPI PM timer 5434 FACS table (Waking vectors and Global Lock) 5435 5436Updated the unix tarball directory structure to match the ACPICA git 5437source 5438tree. This ensures that the generic unix makefiles work properly (in 5439generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 5440867. 5441 5442Updated the return value of the _REV predefined method to integer value 5 5443to 5444reflect ACPI 5.0 support. 5445 5446Moved the external ACPI PM timer interface prototypes to the public 5447acpixf.h 5448file where they belong. 5449 5450Example Code and Data Size: These are the sizes for the OS-independent 5451acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5452debug 5453version of the code includes the debug output trace mechanism and has a 5454much 5455larger code and data size. 5456 5457 Previous Release: 5458 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5459 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5460 Current Release: 5461 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5462 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5463 5464 54652) iASL Compiler/Disassembler and Tools: 5466 5467Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 5468descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 5469incorrectly displayed. 5470 5471AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 5472specification. 5473 5474---------------------------------------- 547511 January 2012. Summary of changes for version 20120111: 5476 5477 54781) ACPICA Core Subsystem: 5479 5480Implemented a new mechanism to allow host device drivers to check for 5481address 5482range conflicts with ACPI Operation Regions. Both SystemMemory and 5483SystemIO 5484address spaces are supported. A new external interface, 5485AcpiCheckAddressRange, 5486allows drivers to check an address range against the ACPI namespace. See 5487the 5488ACPICA reference for additional details. Adds one new file, 5489utilities/utaddress.c. Lin Ming, Bob Moore. 5490 5491Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 5492Control 5493and 5494Status registers, update the ACPI 5.0 flags, and update internal data 5495structures to handle an FADT larger than 256 bytes. The size of the ACPI 54965.0 5497FADT is 268 bytes. 5498 5499Updated all ACPICA copyrights and signons to 2012. Added the 2012 5500copyright to 5501all module headers and signons, including the standard Linux header. This 5502affects virtually every file in the ACPICA core subsystem, iASL compiler, 5503and 5504all ACPICA utilities. 5505 5506Example Code and Data Size: These are the sizes for the OS-independent 5507acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5508debug 5509version of the code includes the debug output trace mechanism and has a 5510much 5511larger code and data size. 5512 5513 Previous Release: 5514 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5515 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5516 Current Release: 5517 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5518 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5519 5520 55212) iASL Compiler/Disassembler and Tools: 5522 5523Disassembler: fixed a problem with the automatic resource tag generation 5524support. Fixes a problem where the resource tags are inadvertently not 5525constructed if the table being disassembled contains external references 5526to 5527control methods. Moved the actual construction of the tags to after the 5528final 5529namespace is constructed (after 2nd parse is invoked due to external 5530control 5531method references.) ACPICA BZ 941. 5532 5533Table Compiler: Make all "generic" operators caseless. These are the 5534operators 5535like UINT8, String, etc. Making these caseless improves ease-of-use. 5536ACPICA BZ 5537934. 5538 5539---------------------------------------- 554023 November 2011. Summary of changes for version 20111123: 5541 55420) ACPI 5.0 Support: 5543 5544This release contains full support for the ACPI 5.0 specification, as 5545summarized below. 5546 5547Reduced Hardware Support: 5548------------------------- 5549 5550This support allows for ACPI systems without the usual ACPI hardware. 5551This 5552support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 5553will 5554not attempt to initialize or use any of the usual ACPI hardware. Note, 5555when 5556this flag is set, all of the following ACPI hardware is assumed to be not 5557present and is not initialized or accessed: 5558 5559 General Purpose Events (GPEs) 5560 Fixed Events (PM1a/PM1b and PM Control) 5561 Power Management Timer and Console Buttons (power/sleep) 5562 Real-time Clock Alarm 5563 Global Lock 5564 System Control Interrupt (SCI) 5565 The FACS is assumed to be non-existent 5566 5567ACPI Tables: 5568------------ 5569 5570All new tables and updates to existing tables are fully supported in the 5571ACPICA headers (for use by device drivers), the disassembler, and the 5572iASL 5573Data Table Compiler. ACPI 5.0 defines these new tables: 5574 5575 BGRT /* Boot Graphics Resource Table */ 5576 DRTM /* Dynamic Root of Trust for Measurement table */ 5577 FPDT /* Firmware Performance Data Table */ 5578 GTDT /* Generic Timer Description Table */ 5579 MPST /* Memory Power State Table */ 5580 PCCT /* Platform Communications Channel Table */ 5581 PMTT /* Platform Memory Topology Table */ 5582 RASF /* RAS Feature table */ 5583 5584Operation Regions/SpaceIDs: 5585--------------------------- 5586 5587All new operation regions are fully supported by the iASL compiler, the 5588disassembler, and the ACPICA runtime code (for dispatch to region 5589handlers.) 5590The new operation region Space IDs are: 5591 5592 GeneralPurposeIo 5593 GenericSerialBus 5594 5595Resource Descriptors: 5596--------------------- 5597 5598All new ASL resource descriptors are fully supported by the iASL 5599compiler, 5600the 5601ASL/AML disassembler, and the ACPICA runtime Resource Manager code 5602(including 5603all new predefined resource tags). New descriptors are: 5604 5605 FixedDma 5606 GpioIo 5607 GpioInt 5608 I2cSerialBus 5609 SpiSerialBus 5610 UartSerialBus 5611 5612ASL/AML Operators, New and Modified: 5613------------------------------------ 5614 5615One new operator is added, the Connection operator, which is used to 5616associate 5617a GeneralPurposeIo or GenericSerialBus resource descriptor with 5618individual 5619field objects within an operation region. Several new protocols are 5620associated 5621with the AccessAs operator. All are fully supported by the iASL compiler, 5622disassembler, and runtime ACPICA AML interpreter: 5623 5624 Connection // Declare Field Connection 5625attributes 5626 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 5627 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 5628Protocol 5629 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 5630 RawDataBuffer // Data type for Vendor Data 5631fields 5632 5633Predefined ASL/AML Objects: 5634--------------------------- 5635 5636All new predefined objects/control-methods are supported by the iASL 5637compiler 5638and the ACPICA runtime validation/repair (arguments and return values.) 5639New 5640predefined names include the following: 5641 5642Standard Predefined Names (Objects or Control Methods): 5643 _AEI, _CLS, _CPC, _CWS, _DEP, 5644 _DLM, _EVT, _GCP, _CRT, _GWS, 5645 _HRV, _PRE, _PSE, _SRT, _SUB. 5646 5647Resource Tags (Names used to access individual fields within resource 5648descriptors): 5649 _DBT, _DPL, _DRS, _END, _FLC, 5650 _IOR, _LIN, _MOD, _PAR, _PHA, 5651 _PIN, _PPI, _POL, _RXL, _SLV, 5652 _SPE, _STB, _TXL, _VEN. 5653 5654ACPICA External Interfaces: 5655--------------------------- 5656 5657Several new interfaces have been defined for use by ACPI-related device 5658drivers and other host OS services: 5659 5660AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 5661to 5662acquire and release AML mutexes that are defined in the DSDT/SSDT tables 5663provided by the BIOS. They are intended to be used in conjunction with 5664the 5665ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 5666mutual exclusion with the AML code/interpreter. 5667 5668AcpiGetEventResources: Returns the (formatted) resource descriptors as 5669defined 5670by the ACPI 5.0 _AEI object (ACPI Event Information). This object 5671provides 5672resource descriptors associated with hardware-reduced platform events, 5673similar 5674to the AcpiGetCurrentResources interface. 5675 5676Operation Region Handlers: For General Purpose IO and Generic Serial Bus 5677operation regions, information about the Connection() object and any 5678optional 5679length information is passed to the region handler within the Context 5680parameter. 5681 5682AcpiBufferToResource: This interface converts a raw AML buffer containing 5683a 5684resource template or resource descriptor to the ACPI_RESOURCE internal 5685format 5686suitable for use by device drivers. Can be used by an operation region 5687handler 5688to convert the Connection() buffer object into a ACPI_RESOURCE. 5689 5690Miscellaneous/Tools/TestSuites: 5691------------------------------- 5692 5693Support for extended _HID names (Four alpha characters instead of three). 5694Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 5695Support for ACPI 5.0 features in the ASLTS test suite. 5696Fully updated documentation (ACPICA and iASL reference documents.) 5697 5698ACPI Table Definition Language: 5699------------------------------- 5700 5701Support for this language was implemented and released as a subsystem of 5702the 5703iASL compiler in 2010. (See the iASL compiler User Guide.) 5704 5705 5706Non-ACPI 5.0 changes for this release: 5707-------------------------------------- 5708 57091) ACPICA Core Subsystem: 5710 5711Fix a problem with operation region declarations where a failure can 5712occur 5713if 5714the region name and an argument that evaluates to an object (such as the 5715region address) are in different namespace scopes. Lin Ming, ACPICA BZ 5716937. 5717 5718Do not abort an ACPI table load if an invalid space ID is found within. 5719This 5720will be caught later if the offending method is executed. ACPICA BZ 925. 5721 5722Fixed an issue with the FFixedHW space ID where the ID was not always 5723recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 5724 5725Fixed a problem with the 32-bit generation of the unix-specific OSL 5726(osunixxf.c). Lin Ming, ACPICA BZ 936. 5727 5728Several changes made to enable generation with the GCC 4.6 compiler. 5729ACPICA BZ 5730935. 5731 5732New error messages: Unsupported I/O requests (not 8/16/32 bit), and 5733Index/Bank 5734field registers out-of-range. 5735 57362) iASL Compiler/Disassembler and Tools: 5737 5738iASL: Implemented the __PATH__ operator, which returns the full pathname 5739of 5740the current source file. 5741 5742AcpiHelp: Automatically display expanded keyword information for all ASL 5743operators. 5744 5745Debugger: Add "Template" command to disassemble/dump resource template 5746buffers. 5747 5748Added a new master script to generate and execute the ASLTS test suite. 5749Automatically handles 32- and 64-bit generation. See tests/aslts.sh 5750 5751iASL: Fix problem with listing generation during processing of the 5752Switch() 5753operator where AML listing was disabled until the entire Switch block was 5754completed. 5755 5756iASL: Improve support for semicolon statement terminators. Fix "invalid 5757character" message for some cases when the semicolon is used. Semicolons 5758are 5759now allowed after every <Term> grammar element. ACPICA BZ 927. 5760 5761iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 5762923. 5763 5764Disassembler: Fix problem with disassembly of the DataTableRegion 5765operator 5766where an inadvertent "Unhandled deferred opcode" message could be 5767generated. 5768 57693) Example Code and Data Size 5770 5771These are the sizes for the OS-independent acpica.lib produced by the 5772Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5773includes the debug output trace mechanism and has a much larger code and 5774data 5775size. 5776 5777 Previous Release: 5778 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5779 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5780 Current Release: 5781 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5782 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5783 5784---------------------------------------- 578522 September 2011. Summary of changes for version 20110922: 5786 57870) ACPI 5.0 News: 5788 5789Support for ACPI 5.0 in ACPICA has been underway for several months and 5790will 5791be released at the same time that ACPI 5.0 is officially released. 5792 5793The ACPI 5.0 specification is on track for release in the next few 5794months. 5795 57961) ACPICA Core Subsystem: 5797 5798Fixed a problem where the maximum sleep time for the Sleep() operator was 5799intended to be limited to two seconds, but was inadvertently limited to 580020 5801seconds instead. 5802 5803Linux and Unix makefiles: Added header file dependencies to ensure 5804correct 5805generation of ACPICA core code and utilities. Also simplified the 5806makefiles 5807considerably through the use of the vpath variable to specify search 5808paths. 5809ACPICA BZ 924. 5810 58112) iASL Compiler/Disassembler and Tools: 5812 5813iASL: Implemented support to check the access length for all fields 5814created to 5815access named Resource Descriptor fields. For example, if a resource field 5816is 5817defined to be two bits, a warning is issued if a CreateXxxxField() is 5818used 5819with an incorrect bit length. This is implemented for all current 5820resource 5821descriptor names. ACPICA BZ 930. 5822 5823Disassembler: Fixed a byte ordering problem with the output of 24-bit and 582456- 5825bit integers. 5826 5827iASL: Fixed a couple of issues associated with variable-length package 5828objects. 1) properly handle constants like One, Ones, Zero -- do not make 5829a 5830VAR_PACKAGE when these are used as a package length. 2) Allow the 5831VAR_PACKAGE 5832opcode (in addition to PACKAGE) when validating object types for 5833predefined 5834names. 5835 5836iASL: Emit statistics for all output files (instead of just the ASL input 5837and 5838AML output). Includes listings, hex files, etc. 5839 5840iASL: Added -G option to the table compiler to allow the compilation of 5841custom 5842ACPI tables. The only part of a table that is required is the standard 584336- 5844byte 5845ACPI header. 5846 5847AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 5848headers), 5849which also adds correct 64-bit support. Also, now all output filenames 5850are 5851completely lower case. 5852 5853AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 5854loading table files. A warning is issued for any such tables. The only 5855exception is an FADT. This also fixes a possible fault when attempting to 5856load 5857non-AML tables. ACPICA BZ 932. 5858 5859AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 5860a 5861missing table terminator could cause a fault when using the -p option. 5862 5863AcpiSrc: Fixed a possible divide-by-zero fault when generating file 5864statistics. 5865 58663) Example Code and Data Size 5867 5868These are the sizes for the OS-independent acpica.lib produced by the 5869Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5870includes the debug output trace mechanism and has a much larger code and 5871data 5872size. 5873 5874 Previous Release (VC 9.0): 5875 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5876 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5877 Current Release (VC 9.0): 5878 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5879 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5880 5881 5882---------------------------------------- 588323 June 2011. Summary of changes for version 20110623: 5884 58851) ACPI CA Core Subsystem: 5886 5887Updated the predefined name repair mechanism to not attempt repair of a 5888_TSS 5889return object if a _PSS object is present. We can only sort the _TSS 5890return 5891package if there is no _PSS within the same scope. This is because if 5892_PSS 5893is 5894present, the ACPI specification dictates that the _TSS Power Dissipation 5895field 5896is to be ignored, and therefore some BIOSs leave garbage values in the 5897_TSS 5898Power field(s). In this case, it is best to just return the _TSS package 5899as- 5900is. Reported by, and fixed with assistance from Fenghua Yu. 5901 5902Added an option to globally disable the control method return value 5903validation 5904and repair. This runtime option can be used to disable return value 5905repair 5906if 5907this is causing a problem on a particular machine. Also added an option 5908to 5909AcpiExec (-dr) to set this disable flag. 5910 5911All makefiles and project files: Major changes to improve generation of 5912ACPICA 5913tools. ACPICA BZ 912: 5914 Reduce default optimization levels to improve compatibility 5915 For Linux, add strict-aliasing=0 for gcc 4 5916 Cleanup and simplify use of command line defines 5917 Cleanup multithread library support 5918 Improve usage messages 5919 5920Linux-specific header: update handling of THREAD_ID and pthread. For the 592132- 5922bit case, improve casting to eliminate possible warnings, especially with 5923the 5924acpica tools. 5925 5926Example Code and Data Size: These are the sizes for the OS-independent 5927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5928debug 5929version of the code includes the debug output trace mechanism and has a 5930much 5931larger code and data size. 5932 5933 Previous Release (VC 9.0): 5934 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5935 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5936 Current Release (VC 9.0): 5937 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5938 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5939 59402) iASL Compiler/Disassembler and Tools: 5941 5942With this release, a new utility named "acpihelp" has been added to the 5943ACPICA 5944package. This utility summarizes the ACPI specification chapters for the 5945ASL 5946and AML languages. It generates under Linux/Unix as well as Windows, and 5947provides the following functionality: 5948 Find/display ASL operator(s) -- with description and syntax. 5949 Find/display ASL keyword(s) -- with exact spelling and descriptions. 5950 Find/display ACPI predefined name(s) -- with description, number 5951 of arguments, and the return value data type. 5952 Find/display AML opcode name(s) -- with opcode, arguments, and 5953grammar. 5954 Decode/display AML opcode -- with opcode name, arguments, and 5955grammar. 5956 5957Service Layers: Make multi-thread support configurable. Conditionally 5958compile 5959the multi-thread support so that threading libraries will not be linked 5960if 5961not 5962necessary. The only tool that requires multi-thread support is AcpiExec. 5963 5964iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 5965of 5966Bison appear to want the interface to yyerror to be a const char * (or at 5967least this is a problem when generating iASL on some systems.) ACPICA BZ 5968923 5969Pierre Lejeune. 5970 5971Tools: Fix for systems where O_BINARY is not defined. Only used for 5972Windows 5973versions of the tools. 5974 5975---------------------------------------- 597627 May 2011. Summary of changes for version 20110527: 5977 59781) ACPI CA Core Subsystem: 5979 5980ASL Load() operator: Reinstate most restrictions on the incoming ACPI 5981table 5982signature. Now, only allow SSDT, OEMx, and a null signature. History: 5983 1) Originally, we checked the table signature for "SSDT" or "PSDT". 5984 (PSDT is now obsolete.) 5985 2) We added support for OEMx tables, signature "OEM" plus a fourth 5986 "don't care" character. 5987 3) Valid tables were encountered with a null signature, so we just 5988 gave up on validating the signature, (05/2008). 5989 4) We encountered non-AML tables such as the MADT, which caused 5990 interpreter errors and kernel faults. So now, we once again allow 5991 only SSDT, OEMx, and now, also a null signature. (05/2011). 5992 5993Added the missing _TDL predefined name to the global name list in order 5994to 5995enable validation. Affects both the core ACPICA code and the iASL 5996compiler. 5997 5998Example Code and Data Size: These are the sizes for the OS-independent 5999acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6000debug 6001version of the code includes the debug output trace mechanism and has a 6002much 6003larger code and data size. 6004 6005 Previous Release (VC 9.0): 6006 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6007 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6008 Current Release (VC 9.0): 6009 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6010 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6011 60122) iASL Compiler/Disassembler and Tools: 6013 6014Debugger/AcpiExec: Implemented support for "complex" method arguments on 6015the 6016debugger command line. This adds support beyond simple integers -- 6017including 6018Strings, Buffers, and Packages. Includes support for nested packages. 6019Increased the default command line buffer size to accommodate these 6020arguments. 6021See the ACPICA reference for details and syntax. ACPICA BZ 917. 6022 6023Debugger/AcpiExec: Implemented support for "default" method arguments for 6024the 6025Execute/Debug command. Now, the debugger will always invoke a control 6026method 6027with the required number of arguments -- even if the command line 6028specifies 6029none or insufficient arguments. It uses default integer values for any 6030missing 6031arguments. Also fixes a bug where only six method arguments maximum were 6032supported instead of the required seven. 6033 6034Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 6035and 6036also return status in order to prevent buffer overruns. See the ACPICA 6037reference for details and syntax. ACPICA BZ 921 6038 6039iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 6040makefiles to simplify support for the two different but similar parser 6041generators, bison and yacc. 6042 6043Updated the generic unix makefile for gcc 4. The default gcc version is 6044now 6045expected to be 4 or greater, since options specific to gcc 4 are used. 6046 6047---------------------------------------- 604813 April 2011. Summary of changes for version 20110413: 6049 60501) ACPI CA Core Subsystem: 6051 6052Implemented support to execute a so-called "orphan" _REG method under the 6053EC 6054device. This change will force the execution of a _REG method underneath 6055the 6056EC 6057device even if there is no corresponding operation region of type 6058EmbeddedControl. Fixes a problem seen on some machines and apparently is 6059compatible with Windows behavior. ACPICA BZ 875. 6060 6061Added more predefined methods that are eligible for automatic NULL 6062package 6063element removal. This change adds another group of predefined names to 6064the 6065list 6066of names that can be repaired by having NULL package elements dynamically 6067removed. This group are those methods that return a single variable- 6068length 6069package containing simple data types such as integers, buffers, strings. 6070This 6071includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 6072_PSL, 6073_Sx, 6074and _TZD. ACPICA BZ 914. 6075 6076Split and segregated all internal global lock functions to a new file, 6077evglock.c. 6078 6079Updated internal address SpaceID for DataTable regions. Moved this 6080internal 6081space 6082id in preparation for ACPI 5.0 changes that will include some new space 6083IDs. 6084This 6085change should not affect user/host code. 6086 6087Example Code and Data Size: These are the sizes for the OS-independent 6088acpica.lib 6089produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6090version of 6091the code includes the debug output trace mechanism and has a much larger 6092code 6093and 6094data size. 6095 6096 Previous Release (VC 9.0): 6097 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6098 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6099 Current Release (VC 9.0): 6100 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6101 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6102 61032) iASL Compiler/Disassembler and Tools: 6104 6105iASL/DTC: Major update for new grammar features. Allow generic data types 6106in 6107custom ACPI tables. Field names are now optional. Any line can be split 6108to 6109multiple lines using the continuation char (\). Large buffers now use 6110line- 6111continuation character(s) and no colon on the continuation lines. See the 6112grammar 6113update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 6114Moore. 6115 6116iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 6117statements. 6118Since the parser stuffs a "zero" as the return value for these statements 6119(due 6120to 6121the underlying AML grammar), they were seen as "return with value" by the 6122iASL 6123semantic checking. They are now seen correctly as "null" return 6124statements. 6125 6126iASL: Check if a_REG declaration has a corresponding Operation Region. 6127Adds a 6128check for each _REG to ensure that there is in fact a corresponding 6129operation 6130region declaration in the same scope. If not, the _REG method is not very 6131useful 6132since it probably won't be executed. ACPICA BZ 915. 6133 6134iASL/DTC: Finish support for expression evaluation. Added a new 6135expression 6136parser 6137that implements c-style operator precedence and parenthesization. ACPICA 6138bugzilla 6139908. 6140 6141Disassembler/DTC: Remove support for () and <> style comments in data 6142tables. 6143Now 6144that DTC has full expression support, we don't want to have comment 6145strings 6146that 6147start with a parentheses or a less-than symbol. Now, only the standard /* 6148and 6149// 6150comments are supported, as well as the bracket [] comments. 6151 6152AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 6153"unusual" 6154headers in the acpidump file. Update the header validation to support 6155these 6156tables. Problem introduced in previous AcpiXtract version in the change 6157to 6158support "wrong checksum" error messages emitted by acpidump utility. 6159 6160iASL: Add a * option to generate all template files (as a synonym for 6161ALL) 6162as 6163in 6164"iasl -T *" or "iasl -T ALL". 6165 6166iASL/DTC: Do not abort compiler on fatal errors. We do not want to 6167completely 6168abort the compiler on "fatal" errors, simply should abort the current 6169compile. 6170This allows multiple compiles with a single (possibly wildcard) compiler 6171invocation. 6172 6173---------------------------------------- 617416 March 2011. Summary of changes for version 20110316: 6175 61761) ACPI CA Core Subsystem: 6177 6178Fixed a problem caused by a _PRW method appearing at the namespace root 6179scope 6180during the setup of wake GPEs. A fault could occur if a _PRW directly 6181under 6182the 6183root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 6184 6185Implemented support for "spurious" Global Lock interrupts. On some 6186systems, a 6187global lock interrupt can occur without the pending flag being set. Upon 6188a 6189GL 6190interrupt, we now ensure that a thread is actually waiting for the lock 6191before 6192signaling GL availability. Rafael Wysocki, Bob Moore. 6193 6194Example Code and Data Size: These are the sizes for the OS-independent 6195acpica.lib 6196produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6197version of 6198the code includes the debug output trace mechanism and has a much larger 6199code 6200and 6201data size. 6202 6203 Previous Release (VC 9.0): 6204 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6205 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6206 Current Release (VC 9.0): 6207 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6208 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6209 62102) iASL Compiler/Disassembler and Tools: 6211 6212Implemented full support for the "SLIC" ACPI table. Includes support in 6213the 6214header files, disassembler, table compiler, and template generator. Bob 6215Moore, 6216Lin Ming. 6217 6218AcpiXtract: Correctly handle embedded comments and messages from 6219AcpiDump. 6220Apparently some or all versions of acpidump will occasionally emit a 6221comment 6222like 6223"Wrong checksum", etc., into the dump file. This was causing problems for 6224AcpiXtract. ACPICA BZ 905. 6225 6226iASL: Fix the Linux makefile by removing an inadvertent double file 6227inclusion. 6228ACPICA BZ 913. 6229 6230AcpiExec: Update installation of operation region handlers. Install one 6231handler 6232for a user-defined address space. This is used by the ASL test suite 6233(ASLTS). 6234 6235---------------------------------------- 623611 February 2011. Summary of changes for version 20110211: 6237 62381) ACPI CA Core Subsystem: 6239 6240Added a mechanism to defer _REG methods for some early-installed 6241handlers. 6242Most user handlers should be installed before call to 6243AcpiEnableSubsystem. 6244However, Event handlers and region handlers should be installed after 6245AcpiInitializeObjects. Override handlers for the "default" regions should 6246be 6247installed early, however. This change executes all _REG methods for the 6248default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 6249chicken/egg issues between them. ACPICA BZ 848. 6250 6251Implemented an optimization for GPE detection. This optimization will 6252simply 6253ignore GPE registers that contain no enabled GPEs -- there is no need to 6254read the register since this information is available internally. This 6255becomes more important on machines with a large GPE space. ACPICA 6256bugzilla 6257884. Lin Ming. Suggestion from Joe Liu. 6258 6259Removed all use of the highly unreliable FADT revision field. The 6260revision 6261number in the FADT has been found to be completely unreliable and cannot 6262be 6263trusted. Only the actual table length can be used to infer the version. 6264This 6265change updates the ACPICA core and the disassembler so that both no 6266longer 6267even look at the FADT version and instead depend solely upon the FADT 6268length. 6269 6270Fix an unresolved name issue for the no-debug and no-error-message source 6271generation cases. The _AcpiModuleName was left undefined in these cases, 6272but 6273it is actually needed as a parameter to some interfaces. Define 6274_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 6275 6276Split several large files (makefiles and project files updated) 6277 utglobal.c -> utdecode.c 6278 dbcomds.c -> dbmethod.c dbnames.c 6279 dsopcode.c -> dsargs.c dscontrol.c 6280 dsload.c -> dsload2.c 6281 aslanalyze.c -> aslbtypes.c aslwalks.c 6282 6283Example Code and Data Size: These are the sizes for the OS-independent 6284acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6285debug version of the code includes the debug output trace mechanism and 6286has 6287a much larger code and data size. 6288 6289 Previous Release (VC 9.0): 6290 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6291 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6292 Current Release (VC 9.0): 6293 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6294 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6295 62962) iASL Compiler/Disassembler and Tools: 6297 6298iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 6299These are useful C-style macros with the standard definitions. ACPICA 6300bugzilla 898. 6301 6302iASL/DTC: Added support for integer expressions and labels. Support for 6303full 6304expressions for all integer fields in all ACPI tables. Support for labels 6305in 6306"generic" portions of tables such as UEFI. See the iASL reference manual. 6307 6308Debugger: Added a command to display the status of global handlers. The 6309"handlers" command will display op region, fixed event, and miscellaneous 6310global handlers. installation status -- and for op regions, whether 6311default 6312or user-installed handler will be used. 6313 6314iASL: Warn if reserved method incorrectly returns a value. Many 6315predefined 6316names are defined such that they do not return a value. If implemented as 6317a 6318method, issue a warning if such a name explicitly returns a value. ACPICA 6319Bugzilla 855. 6320 6321iASL: Added detection of GPE method name conflicts. Detects a conflict 6322where 6323there are two GPE methods of the form _Lxy and _Exy in the same scope. 6324(For 6325example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 6326 6327iASL/DTC: Fixed a couple input scanner issues with comments and line 6328numbers. Comment remover could get confused and miss a comment ending. 6329Fixed 6330a problem with line counter maintenance. 6331 6332iASL/DTC: Reduced the severity of some errors from fatal to error. There 6333is 6334no need to abort on simple errors within a field definition. 6335 6336Debugger: Simplified the output of the help command. All help output now 6337in 6338a single screen, instead of help subcommands. ACPICA Bugzilla 897. 6339 6340---------------------------------------- 634112 January 2011. Summary of changes for version 20110112: 6342 63431) ACPI CA Core Subsystem: 6344 6345Fixed a race condition between method execution and namespace walks that 6346can 6347possibly cause a fault. The problem was apparently introduced in version 634820100528 as a result of a performance optimization that reduces the 6349number 6350of 6351namespace walks upon method exit by using the delete_namespace_subtree 6352function instead of the delete_namespace_by_owner function used 6353previously. 6354Bug is a missing namespace lock in the delete_namespace_subtree function. 6355dana.myers@oracle.com 6356 6357Fixed several issues and a possible fault with the automatic "serialized" 6358method support. History: This support changes a method to "serialized" on 6359the 6360fly if the method generates an AE_ALREADY_EXISTS error, indicating the 6361possibility that it cannot handle reentrancy. This fix repairs a couple 6362of 6363issues seen in the field, especially on machines with many cores: 6364 6365 1) Delete method children only upon the exit of the last thread, 6366 so as to not delete objects out from under other running threads 6367 (and possibly causing a fault.) 6368 2) Set the "serialized" bit for the method only upon the exit of the 6369 Last thread, so as to not cause deadlock when running threads 6370 attempt to exit. 6371 3) Cleanup the use of the AML "MethodFlags" and internal method flags 6372 so that there is no longer any confusion between the two. 6373 6374 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 6375 6376Debugger: Now lock the namespace for duration of a namespace dump. 6377Prevents 6378issues if the namespace is changing dynamically underneath the debugger. 6379Especially affects temporary namespace nodes, since the debugger displays 6380these also. 6381 6382Updated the ordering of include files. The ACPICA headers should appear 6383before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 6384set 6385any necessary compiler-specific defines, etc. Affects the ACPI-related 6386tools 6387and utilities. 6388 6389Updated all ACPICA copyrights and signons to 2011. Added the 2011 6390copyright 6391to all module headers and signons, including the Linux header. This 6392affects 6393virtually every file in the ACPICA core subsystem, iASL compiler, and all 6394utilities. 6395 6396Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 6397project files for VC++ 6.0 are now obsolete. New project files can be 6398found 6399under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 6400details. 6401 6402Example Code and Data Size: These are the sizes for the OS-independent 6403acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6404debug version of the code includes the debug output trace mechanism and 6405has a 6406much larger code and data size. 6407 6408 Previous Release (VC 6.0): 6409 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6410 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6411 Current Release (VC 9.0): 6412 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6413 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6414 64152) iASL Compiler/Disassembler and Tools: 6416 6417iASL: Added generic data types to the Data Table compiler. Add "generic" 6418data 6419types such as UINT32, String, Unicode, etc., to simplify the generation 6420of 6421platform-defined tables such as UEFI. Lin Ming. 6422 6423iASL: Added listing support for the Data Table Compiler. Adds listing 6424support 6425(-l) to display actual binary output for each line of input code. 6426 6427---------------------------------------- 642809 December 2010. Summary of changes for version 20101209: 6429 64301) ACPI CA Core Subsystem: 6431 6432Completed the major overhaul of the GPE support code that was begun in 6433July 64342010. Major features include: removal of _PRW execution in ACPICA (host 6435executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 6436changes to existing interfaces, simplification of GPE handler operation, 6437and 6438a handful of new interfaces: 6439 6440 AcpiUpdateAllGpes 6441 AcpiFinishGpe 6442 AcpiSetupGpeForWake 6443 AcpiSetGpeWakeMask 6444 One new file, evxfgpe.c to consolidate all external GPE interfaces. 6445 6446See the ACPICA Programmer Reference for full details and programming 6447information. See the new section 4.4 "General Purpose Event (GPE) 6448Support" 6449for a full overview, and section 8.7 "ACPI General Purpose Event 6450Management" 6451for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 6452Ming, 6453Bob Moore, Rafael Wysocki. 6454 6455Implemented a new GPE feature for Windows compatibility, the "Implicit 6456Wake 6457GPE Notify". This feature will automatically issue a Notify(2) on a 6458device 6459when a Wake GPE is received if there is no corresponding GPE method or 6460handler. ACPICA BZ 870. 6461 6462Fixed a problem with the Scope() operator during table parse and load 6463phase. 6464During load phase (table load or method execution), the scope operator 6465should 6466not enter the target into the namespace. Instead, it should open a new 6467scope 6468at the target location. Linux BZ 19462, ACPICA BZ 882. 6469 6470Example Code and Data Size: These are the sizes for the OS-independent 6471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6472debug version of the code includes the debug output trace mechanism and 6473has a 6474much larger code and data size. 6475 6476 Previous Release: 6477 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6478 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6479 Current Release: 6480 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6481 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6482 64832) iASL Compiler/Disassembler and Tools: 6484 6485iASL: Relax the alphanumeric restriction on _CID strings. These strings 6486are 6487"bus-specific" per the ACPI specification, and therefore any characters 6488are 6489acceptable. The only checks that can be performed are for a null string 6490and 6491perhaps for a leading asterisk. ACPICA BZ 886. 6492 6493iASL: Fixed a problem where a syntax error that caused a premature EOF 6494condition on the source file emitted a very confusing error message. The 6495premature EOF is now detected correctly. ACPICA BZ 891. 6496 6497Disassembler: Decode the AccessSize within a Generic Address Structure 6498(byte 6499access, word access, etc.) Note, this field does not allow arbitrary bit 6500access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 6501 6502New: AcpiNames utility - Example namespace dump utility. Shows an example 6503of 6504ACPICA configuration for a minimal namespace dump utility. Uses table and 6505namespace managers, but no AML interpreter. Does not add any 6506functionality 6507over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 6508partition and configure ACPICA. ACPICA BZ 883. 6509 6510AML Debugger: Increased the debugger buffer size for method return 6511objects. 6512Was 4K, increased to 16K. Also enhanced error messages for debugger 6513method 6514execution, including the buffer overflow case. 6515 6516---------------------------------------- 651713 October 2010. Summary of changes for version 20101013: 6518 65191) ACPI CA Core Subsystem: 6520 6521Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 6522now 6523clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 6524HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 6525 6526Changed the type of the predefined namespace object _TZ from ThermalZone 6527to 6528Device. This was found to be confusing to the host software that 6529processes 6530the various thermal zones, since _TZ is not really a ThermalZone. 6531However, 6532a 6533Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 6534Zhang. 6535 6536Added Windows Vista SP2 to the list of supported _OSI strings. The actual 6537string is "Windows 2006 SP2". 6538 6539Eliminated duplicate code in AcpiUtExecute* functions. Now that the 6540nsrepair 6541code automatically repairs _HID-related strings, this type of code is no 6542longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 6543878. 6544 6545Example Code and Data Size: These are the sizes for the OS-independent 6546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6547debug version of the code includes the debug output trace mechanism and 6548has a 6549much larger code and data size. 6550 6551 Previous Release: 6552 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6553 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6554 Current Release: 6555 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6556 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6557 65582) iASL Compiler/Disassembler and Tools: 6559 6560iASL: Implemented additional compile-time validation for _HID strings. 6561The 6562non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 6563length 6564of 6565the string must be exactly seven or eight characters. For both _HID and 6566_CID 6567strings, all characters must be alphanumeric. ACPICA BZ 874. 6568 6569iASL: Allow certain "null" resource descriptors. Some BIOS code creates 6570descriptors that are mostly or all zeros, with the expectation that they 6571will 6572be filled in at runtime. iASL now allows this as long as there is a 6573"resource 6574tag" (name) associated with the descriptor, which gives the ASL a handle 6575needed to modify the descriptor. ACPICA BZ 873. 6576 6577Added single-thread support to the generic Unix application OSL. 6578Primarily 6579for iASL support, this change removes the use of semaphores in the 6580single- 6581threaded ACPICA tools/applications - increasing performance. The 6582_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 6583option. ACPICA BZ 879. 6584 6585AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 6586support 6587for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 6588 6589iASL: Moved all compiler messages to a new file, aslmessages.h. 6590 6591---------------------------------------- 659215 September 2010. Summary of changes for version 20100915: 6593 65941) ACPI CA Core Subsystem: 6595 6596Removed the AcpiOsDerivePciId OSL interface. The various host 6597implementations 6598of this function were not OS-dependent and are now obsolete and can be 6599removed from all host OSLs. This function has been replaced by 6600AcpiHwDerivePciId, which is now part of the ACPICA core code. 6601AcpiHwDerivePciId has been implemented without recursion. Adds one new 6602module, hwpci.c. ACPICA BZ 857. 6603 6604Implemented a dynamic repair for _HID and _CID strings. The following 6605problems are now repaired at runtime: 1) Remove a leading asterisk in the 6606string, and 2) the entire string is uppercased. Both repairs are in 6607accordance with the ACPI specification and will simplify host driver 6608code. 6609ACPICA BZ 871. 6610 6611The ACPI_THREAD_ID type is no longer configurable, internally it is now 6612always UINT64. This simplifies the ACPICA code, especially any printf 6613output. 6614UINT64 is the only common data type for all thread_id types across all 6615operating systems. It is now up to the host OSL to cast the native 6616thread_id 6617type to UINT64 before returning the value to ACPICA (via 6618AcpiOsGetThreadId). 6619Lin Ming, Bob Moore. 6620 6621Added the ACPI_INLINE type to enhance the ACPICA configuration. The 6622"inline" 6623keyword is not standard across compilers, and this type allows inline to 6624be 6625configured on a per-compiler basis. Lin Ming. 6626 6627Made the system global AcpiGbl_SystemAwakeAndRunning publically 6628available. 6629Added an extern for this boolean in acpixf.h. Some hosts utilize this 6630value 6631during suspend/restore operations. ACPICA BZ 869. 6632 6633All code that implements error/warning messages with the "ACPI:" prefix 6634has 6635been moved to a new module, utxferror.c. 6636 6637The UINT64_OVERLAY was moved to utmath.c, which is the only module where 6638it 6639is used. ACPICA BZ 829. Lin Ming, Bob Moore. 6640 6641Example Code and Data Size: These are the sizes for the OS-independent 6642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6643debug version of the code includes the debug output trace mechanism and 6644has a 6645much larger code and data size. 6646 6647 Previous Release: 6648 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6649 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6650 Current Release: 6651 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6652 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6653 66542) iASL Compiler/Disassembler and Tools: 6655 6656iASL/Disassembler: Write ACPI errors to stderr instead of the output 6657file. 6658This keeps the output files free of random error messages that may 6659originate 6660from within the namespace/interpreter code. Used this opportunity to 6661merge 6662all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 6663866. Lin Ming, Bob Moore. 6664 6665Tools: update some printfs for ansi warnings on size_t. Handle width 6666change 6667of size_t on 32-bit versus 64-bit generations. Lin Ming. 6668 6669---------------------------------------- 667006 August 2010. Summary of changes for version 20100806: 6671 66721) ACPI CA Core Subsystem: 6673 6674Designed and implemented a new host interface to the _OSI support code. 6675This 6676will allow the host to dynamically add or remove multiple _OSI strings, 6677as 6678well as install an optional handler that is called for each _OSI 6679invocation. 6680Also added a new AML debugger command, 'osi' to display and modify the 6681global 6682_OSI string table, and test support in the AcpiExec utility. See the 6683ACPICA 6684reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 6685New Functions: 6686 AcpiInstallInterface - Add an _OSI string. 6687 AcpiRemoveInterface - Delete an _OSI string. 6688 AcpiInstallInterfaceHandler - Install optional _OSI handler. 6689Obsolete Functions: 6690 AcpiOsValidateInterface - no longer used. 6691New Files: 6692 source/components/utilities/utosi.c 6693 6694Re-introduced the support to enable multi-byte transfers for Embedded 6695Controller (EC) operation regions. A reported problem was found to be a 6696bug 6697in the host OS, not in the multi-byte support. Previously, the maximum 6698data 6699size passed to the EC operation region handler was a single byte. There 6700are 6701often EC Fields larger than one byte that need to be transferred, and it 6702is 6703useful for the EC driver to lock these as a single transaction. This 6704change 6705enables single transfers larger than 8 bits. This effectively changes the 6706access to the EC space from ByteAcc to AnyAcc, and will probably require 6707changes to the host OS Embedded Controller driver to enable 16/32/64/256- 6708bit 6709transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 6710 6711Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 6712prototype in acpiosxf.h had the output value pointer as a (void *). 6713It should be a (UINT64 *). This may affect some host OSL code. 6714 6715Fixed a couple problems with the recently modified Linux makefiles for 6716iASL 6717and AcpiExec. These new makefiles place the generated object files in the 6718local directory so that there can be no collisions between the files that 6719are 6720shared between them that are compiled with different options. 6721 6722Example Code and Data Size: These are the sizes for the OS-independent 6723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6724debug version of the code includes the debug output trace mechanism and 6725has a 6726much larger code and data size. 6727 6728 Previous Release: 6729 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6730 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6731 Current Release: 6732 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6733 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6734 67352) iASL Compiler/Disassembler and Tools: 6736 6737iASL/Disassembler: Added a new option (-da, "disassemble all") to load 6738the 6739namespace from and disassemble an entire group of AML files. Useful for 6740loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 6741and 6742disassembling with one simple command. ACPICA BZ 865. Lin Ming. 6743 6744iASL: Allow multiple invocations of -e option. This change allows 6745multiple 6746uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 6747834. 6748Lin Ming. 6749 6750---------------------------------------- 675102 July 2010. Summary of changes for version 20100702: 6752 67531) ACPI CA Core Subsystem: 6754 6755Implemented several updates to the recently added GPE reference count 6756support. The model for "wake" GPEs is changing to give the host OS 6757complete 6758control of these GPEs. Eventually, the ACPICA core will not execute any 6759_PRW 6760methods, since the host already must execute them. Also, additional 6761changes 6762were made to help ensure that the reference counts are kept in proper 6763synchronization with reality. Rafael J. Wysocki. 6764 67651) Ensure that GPEs are not enabled twice during initialization. 67662) Ensure that GPE enable masks stay in sync with the reference count. 67673) Do not inadvertently enable GPEs when writing GPE registers. 67684) Remove the internal wake reference counter and add new AcpiGpeWakeup 6769interface. This interface will set or clear individual GPEs for wakeup. 67705) Remove GpeType argument from AcpiEnable and AcpiDisable. These 6771interfaces 6772are now used for "runtime" GPEs only. 6773 6774Changed the behavior of the GPE install/remove handler interfaces. The 6775GPE 6776is 6777no longer disabled during this process, as it was found to cause problems 6778on 6779some machines. Rafael J. Wysocki. 6780 6781Reverted a change introduced in version 20100528 to enable Embedded 6782Controller multi-byte transfers. This change was found to cause problems 6783with 6784Index Fields and possibly Bank Fields. It will be reintroduced when these 6785problems have been resolved. 6786 6787Fixed a problem with references to Alias objects within Package Objects. 6788A 6789reference to an Alias within the definition of a Package was not always 6790resolved properly. Aliases to objects like Processors, Thermal zones, 6791etc. 6792were resolved to the actual object instead of a reference to the object 6793as 6794it 6795should be. Package objects are only allowed to contain integer, string, 6796buffer, package, and reference objects. Redhat bugzilla 608648. 6797 6798Example Code and Data Size: These are the sizes for the OS-independent 6799acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6800debug version of the code includes the debug output trace mechanism and 6801has a 6802much larger code and data size. 6803 6804 Previous Release: 6805 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6806 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6807 Current Release: 6808 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6809 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6810 68112) iASL Compiler/Disassembler and Tools: 6812 6813iASL: Implemented a new compiler subsystem to allow definition and 6814compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 6815These 6816are called "ACPI Data Tables", and the new compiler is the "Data Table 6817Compiler". This compiler is intended to simplify the existing error-prone 6818process of creating these tables for the BIOS, as well as allowing the 6819disassembly, modification, recompilation, and override of existing ACPI 6820data 6821tables. See the iASL User Guide for detailed information. 6822 6823iASL: Implemented a new Template Generator option in support of the new 6824Data 6825Table Compiler. This option will create examples of all known ACPI tables 6826that can be used as the basis for table development. See the iASL 6827documentation and the -T option. 6828 6829Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 6830Descriptor Table). 6831 6832Updated the Linux makefiles for iASL and AcpiExec to place the generated 6833object files in the local directory so that there can be no collisions 6834between the shared files between them that are generated with different 6835options. 6836 6837Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 6838Use 6839the #define __APPLE__ to enable this support. 6840 6841---------------------------------------- 684228 May 2010. Summary of changes for version 20100528: 6843 6844Note: The ACPI 4.0a specification was released on April 5, 2010 and is 6845available at www.acpi.info. This is primarily an errata release. 6846 68471) ACPI CA Core Subsystem: 6848 6849Undefined ACPI tables: We are looking for the definitions for the 6850following 6851ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 6852 6853Implemented support to enable multi-byte transfers for Embedded 6854Controller 6855(EC) operation regions. Previously, the maximum data size passed to the 6856EC 6857operation region handler was a single byte. There are often EC Fields 6858larger 6859than one byte that need to be transferred, and it is useful for the EC 6860driver 6861to lock these as a single transaction. This change enables single 6862transfers 6863larger than 8 bits. This effectively changes the access to the EC space 6864from 6865ByteAcc to AnyAcc, and will probably require changes to the host OS 6866Embedded 6867Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 6868bit 6869transfers. Alexey Starikovskiy, Lin Ming 6870 6871Implemented a performance enhancement for namespace search and access. 6872This 6873change enhances the performance of namespace searches and walks by adding 6874a 6875backpointer to the parent in each namespace node. On large namespaces, 6876this 6877change can improve overall ACPI performance by up to 9X. Adding a pointer 6878to 6879each namespace node increases the overall size of the internal namespace 6880by 6881about 5%, since each namespace entry usually consists of both a namespace 6882node and an ACPI operand object. However, this is the first growth of the 6883namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 6884 6885Implemented a performance optimization that reduces the number of 6886namespace 6887walks. On control method exit, only walk the namespace if the method is 6888known 6889to have created namespace objects outside of its local scope. Previously, 6890the 6891entire namespace was traversed on each control method exit. This change 6892can 6893improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 6894Moore. 6895 6896Added support to truncate I/O addresses to 16 bits for Windows 6897compatibility. 6898Some ASL code has been seen in the field that inadvertently has bits set 6899above bit 15. This feature is optional and is enabled if the BIOS 6900requests 6901any Windows OSI strings. It can also be enabled by the host OS. Matthew 6902Garrett, Bob Moore. 6903 6904Added support to limit the maximum time for the ASL Sleep() operator. To 6905prevent accidental deep sleeps, limit the maximum time that Sleep() will 6906actually sleep. Configurable, the default maximum is two seconds. ACPICA 6907bugzilla 854. 6908 6909Added run-time validation support for the _WDG and_WED Microsoft 6910predefined 6911methods. These objects are defined by "Windows Instrumentation", and are 6912not 6913part of the ACPI spec. ACPICA BZ 860. 6914 6915Expanded all statistic counters used during namespace and device 6916initialization from 16 to 32 bits in order to support very large 6917namespaces. 6918 6919Replaced all instances of %d in printf format specifiers with %u since 6920nearly 6921all integers in ACPICA are unsigned. 6922 6923Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 6924returned 6925as AE_NO_HANDLER. 6926 6927Example Code and Data Size: These are the sizes for the OS-independent 6928acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6929debug version of the code includes the debug output trace mechanism and 6930has a 6931much larger code and data size. 6932 6933 Previous Release: 6934 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6935 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6936 Current Release: 6937 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6938 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6939 69402) iASL Compiler/Disassembler and Tools: 6941 6942iASL: Added compiler support for the _WDG and_WED Microsoft predefined 6943methods. These objects are defined by "Windows Instrumentation", and are 6944not 6945part of the ACPI spec. ACPICA BZ 860. 6946 6947AcpiExec: added option to disable the memory tracking mechanism. The -dt 6948option will disable the tracking mechanism, which improves performance 6949considerably. 6950 6951AcpiExec: Restructured the command line options into -d (disable) and -e 6952(enable) options. 6953 6954---------------------------------------- 695528 April 2010. Summary of changes for version 20100428: 6956 69571) ACPI CA Core Subsystem: 6958 6959Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 6960including FADT-based and GPE Block Devices, execute any _PRW methods in 6961the 6962new table, and process any _Lxx/_Exx GPE methods in the new table. Any 6963runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 6964immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 6965Devices. Provides compatibility with other ACPI implementations. Two new 6966files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 6967Moore. 6968 6969Fixed a regression introduced in version 20100331 within the table 6970manager 6971where initial table loading could fail. This was introduced in the fix 6972for 6973AcpiReallocateRootTable. Also, renamed some of fields in the table 6974manager 6975data structures to clarify their meaning and use. 6976 6977Fixed a possible allocation overrun during internal object copy in 6978AcpiUtCopySimpleObject. The original code did not correctly handle the 6979case 6980where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 6981847. 6982 6983Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 6984possible access beyond end-of-allocation. Also, now fully validate 6985descriptor 6986(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 6987 6988Example Code and Data Size: These are the sizes for the OS-independent 6989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6990debug version of the code includes the debug output trace mechanism and 6991has a 6992much larger code and data size. 6993 6994 Previous Release: 6995 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6996 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6997 Current Release: 6998 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6999 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7000 70012) iASL Compiler/Disassembler and Tools: 7002 7003iASL: Implemented Min/Max/Len/Gran validation for address resource 7004descriptors. This change implements validation for the address fields 7005that 7006are common to all address-type resource descriptors. These checks are 7007implemented: Checks for valid Min/Max, length within the Min/Max window, 7008valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 7009per 7010table 6-40 in the ACPI 4.0a specification. Also split the large 7011aslrestype1.c 7012and aslrestype2.c files into five new files. ACPICA BZ 840. 7013 7014iASL: Added support for the _Wxx predefined names. This support was 7015missing 7016and these names were not recognized by the compiler as valid predefined 7017names. ACPICA BZ 851. 7018 7019iASL: Added an error for all predefined names that are defined to return 7020no 7021value and thus must be implemented as Control Methods. These include all 7022of 7023the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 7024names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 7025 7026iASL: Implemented the -ts option to emit hex AML data in ASL format, as 7027an 7028ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 7029be 7030dynamically loaded via the Load() operator. Also cleaned up output for 7031the 7032- 7033ta and -tc options. ACPICA BZ 853. 7034 7035Tests: Added a new file with examples of extended iASL error checking. 7036Demonstrates the advanced error checking ability of the iASL compiler. 7037Available at tests/misc/badcode.asl. 7038 7039---------------------------------------- 704031 March 2010. Summary of changes for version 20100331: 7041 70421) ACPI CA Core Subsystem: 7043 7044Completed a major update for the GPE support in order to improve support 7045for 7046shared GPEs and to simplify both host OS and ACPICA code. Added a 7047reference 7048count mechanism to support shared GPEs that require multiple device 7049drivers. 7050Several external interfaces have changed. One external interface has been 7051removed. One new external interface was added. Most of the GPE external 7052interfaces now use the GPE spinlock instead of the events mutex (and the 7053Flags parameter for many GPE interfaces has been removed.) See the 7054updated 7055ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 7056Rafael 7057Wysocki. ACPICA BZ 831. 7058 7059Changed: 7060 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 7061Removed: 7062 AcpiSetGpeType 7063New: 7064 AcpiSetGpe 7065 7066Implemented write support for DataTable operation regions. These regions 7067are 7068defined via the DataTableRegion() operator. Previously, only read support 7069was 7070implemented. The ACPI specification allows DataTableRegions to be 7071read/write, 7072however. 7073 7074Implemented a new subsystem option to force a copy of the DSDT to local 7075memory. Optionally copy the entire DSDT to local memory (instead of 7076simply 7077mapping it.) There are some (albeit very rare) BIOSs that corrupt or 7078replace 7079the original DSDT, creating the need for this option. Default is FALSE, 7080do 7081not copy the DSDT. 7082 7083Implemented detection of a corrupted or replaced DSDT. This change adds 7084support to detect a DSDT that has been corrupted and/or replaced from 7085outside 7086the OS (by firmware). This is typically catastrophic for the system, but 7087has 7088been seen on some machines. Once this problem has been detected, the DSDT 7089copy option can be enabled via system configuration. Lin Ming, Bob Moore. 7090 7091Fixed two problems with AcpiReallocateRootTable during the root table 7092copy. 7093When copying the root table to the new allocation, the length used was 7094incorrect. The new size was used instead of the current table size, 7095meaning 7096too much data was copied. Also, the count of available slots for ACPI 7097tables 7098was not set correctly. Alexey Starikovskiy, Bob Moore. 7099 7100Example Code and Data Size: These are the sizes for the OS-independent 7101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7102debug version of the code includes the debug output trace mechanism and 7103has a 7104much larger code and data size. 7105 7106 Previous Release: 7107 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7108 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7109 Current Release: 7110 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7111 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7112 71132) iASL Compiler/Disassembler and Tools: 7114 7115iASL: Implement limited typechecking for values returned from predefined 7116control methods. The type of any returned static (unnamed) object is now 7117validated. For example, Return(1). ACPICA BZ 786. 7118 7119iASL: Fixed a predefined name object verification regression. Fixes a 7120problem 7121introduced in version 20100304. An error is incorrectly generated if a 7122predefined name is declared as a static named object with a value defined 7123using the keywords "Zero", "One", or "Ones". Lin Ming. 7124 7125iASL: Added Windows 7 support for the -g option (get local ACPI tables) 7126by 7127reducing the requested registry access rights. ACPICA BZ 842. 7128 7129Disassembler: fixed a possible fault when generating External() 7130statements. 7131Introduced in commit ae7d6fd: Properly handle externals with parent- 7132prefix 7133(carat). Fixes a string length allocation calculation. Lin Ming. 7134 7135---------------------------------------- 713604 March 2010. Summary of changes for version 20100304: 7137 71381) ACPI CA Core Subsystem: 7139 7140Fixed a possible problem with the AML Mutex handling function 7141AcpiExReleaseMutex where the function could fault under the very rare 7142condition when the interpreter has blocked, the interpreter lock is 7143released, 7144the interpreter is then reentered via the same thread, and attempts to 7145acquire an AML mutex that was previously acquired. FreeBSD report 140979. 7146Lin 7147Ming. 7148 7149Implemented additional configuration support for the AML "Debug Object". 7150Output from the debug object can now be enabled via a global variable, 7151AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 7152debugging. 7153This debug output is now available in the release version of ACPICA 7154instead 7155of just the debug version. Also, the entire debug output module can now 7156be 7157configured out of the ACPICA build if desired. One new file added, 7158executer/exdebug.c. Lin Ming, Bob Moore. 7159 7160Added header support for the ACPI MCHI table (Management Controller Host 7161Interface Table). This table was added in ACPI 4.0, but the defining 7162document 7163has only recently become available. 7164 7165Standardized output of integer values for ACPICA warnings/errors. Always 7166use 71670x prefix for hex output, always use %u for unsigned integer decimal 7168output. 7169Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 7170400 7171invocations.) These invocations were converted from the original 7172ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 7173 7174Example Code and Data Size: These are the sizes for the OS-independent 7175acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7176debug version of the code includes the debug output trace mechanism and 7177has a 7178much larger code and data size. 7179 7180 Previous Release: 7181 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7182 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7183 Current Release: 7184 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7185 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7186 71872) iASL Compiler/Disassembler and Tools: 7188 7189iASL: Implemented typechecking support for static (non-control method) 7190predefined named objects that are declared with the Name() operator. For 7191example, the type of this object is now validated to be of type Integer: 7192Name(_BBN, 1). This change migrates the compiler to using the core 7193predefined 7194name table instead of maintaining a local version. Added a new file, 7195aslpredef.c. ACPICA BZ 832. 7196 7197Disassembler: Added support for the ACPI 4.0 MCHI table. 7198 7199---------------------------------------- 720021 January 2010. Summary of changes for version 20100121: 7201 72021) ACPI CA Core Subsystem: 7203 7204Added the 2010 copyright to all module headers and signons. This affects 7205virtually every file in the ACPICA core subsystem, the iASL compiler, the 7206tools/utilities, and the test suites. 7207 7208Implemented a change to the AcpiGetDevices interface to eliminate 7209unnecessary 7210invocations of the _STA method. In the case where a specific _HID is 7211requested, do not run _STA until a _HID match is found. This eliminates 7212potentially dozens of _STA calls during a search for a particular 7213device/HID, 7214which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 7215 7216Implemented an additional repair for predefined method return values. 7217Attempt 7218to repair unexpected NULL elements within returned Package objects. 7219Create 7220an 7221Integer of value zero, a NULL String, or a zero-length Buffer as 7222appropriate. 7223ACPICA BZ 818. Lin Ming, Bob Moore. 7224 7225Removed the obsolete ACPI_INTEGER data type. This type was introduced as 7226the 7227code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 7228(with 722964-bit AML integers). It is now obsolete and this change removes it from 7230the 7231ACPICA code base, replaced by UINT64. The original typedef has been 7232retained 7233for now for compatibility with existing device driver code. ACPICA BZ 7234824. 7235 7236Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 7237in 7238the parse tree object. 7239 7240Added additional warning options for the gcc-4 generation. Updated the 7241source 7242accordingly. This includes some code restructuring to eliminate 7243unreachable 7244code, elimination of some gotos, elimination of unused return values, 7245some 7246additional casting, and removal of redundant declarations. 7247 7248Example Code and Data Size: These are the sizes for the OS-independent 7249acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7250debug version of the code includes the debug output trace mechanism and 7251has a 7252much larger code and data size. 7253 7254 Previous Release: 7255 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7256 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7257 Current Release: 7258 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7259 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7260 72612) iASL Compiler/Disassembler and Tools: 7262 7263No functional changes for this release. 7264 7265---------------------------------------- 726614 December 2009. Summary of changes for version 20091214: 7267 72681) ACPI CA Core Subsystem: 7269 7270Enhanced automatic data type conversions for predefined name repairs. 7271This 7272change expands the automatic repairs/conversions for predefined name 7273return 7274values to make Integers, Strings, and Buffers fully interchangeable. 7275Also, 7276a 7277Buffer can be converted to a Package of Integers if necessary. The 7278nsrepair.c 7279module was completely restructured. Lin Ming, Bob Moore. 7280 7281Implemented automatic removal of null package elements during predefined 7282name 7283repairs. This change will automatically remove embedded and trailing NULL 7284package elements from returned package objects that are defined to 7285contain 7286a 7287variable number of sub-packages. The driver is then presented with a 7288package 7289with no null elements to deal with. ACPICA BZ 819. 7290 7291Implemented a repair for the predefined _FDE and _GTM names. The expected 7292return value for both names is a Buffer of 5 DWORDs. This repair fixes 7293two 7294possible problems (both seen in the field), where a package of integers 7295is 7296returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 7297Kim. 7298 7299Implemented additional module-level code support. This change will 7300properly 7301execute module-level code that is not at the root of the namespace (under 7302a 7303Device object, etc.). Now executes the code within the current scope 7304instead 7305of the root. ACPICA BZ 762. Lin Ming. 7306 7307Fixed possible mutex acquisition errors when running _REG methods. Fixes 7308a 7309problem where mutex errors can occur when running a _REG method that is 7310in 7311the same scope as a method-defined operation region or an operation 7312region 7313under a module-level IF block. This type of code is rare, so the problem 7314has 7315not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 7316 7317Fixed a possible memory leak during module-level code execution. An 7318object 7319could be leaked for each block of executed module-level code if the 7320interpreter slack mode is enabled This change deletes any implicitly 7321returned 7322object from the module-level code block. Lin Ming. 7323 7324Removed messages for successful predefined repair(s). The repair 7325mechanism 7326was considered too wordy. Now, messages are only unconditionally emitted 7327if 7328the return object cannot be repaired. Existing messages for successful 7329repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 7330827. 7331 7332Example Code and Data Size: These are the sizes for the OS-independent 7333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7334debug version of the code includes the debug output trace mechanism and 7335has a 7336much larger code and data size. 7337 7338 Previous Release: 7339 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7340 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7341 Current Release: 7342 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7343 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7344 73452) iASL Compiler/Disassembler and Tools: 7346 7347iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 7348files 7349were no longer automatically removed at the termination of the compile. 7350 7351acpiexec: Implemented the -f option to specify default region fill value. 7352This option specifies the value used to initialize buffers that simulate 7353operation regions. Default value is zero. Useful for debugging problems 7354that 7355depend on a specific initial value for a region or field. 7356 7357---------------------------------------- 735812 November 2009. Summary of changes for version 20091112: 7359 73601) ACPI CA Core Subsystem: 7361 7362Implemented a post-order callback to AcpiWalkNamespace. The existing 7363interface only has a pre-order callback. This change adds an additional 7364parameter for a post-order callback which will be more useful for bus 7365scans. 7366ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 7367 7368Modified the behavior of the operation region memory mapping cache for 7369SystemMemory. Ensure that the memory mappings created for operation 7370regions 7371do not cross 4K page boundaries. Crossing a page boundary while mapping 7372regions can cause kernel warnings on some hosts if the pages have 7373different 7374attributes. Such regions are probably BIOS bugs, and this is the 7375workaround. 7376Linux BZ 14445. Lin Ming. 7377 7378Implemented an automatic repair for predefined methods that must return 7379sorted lists. This change will repair (by sorting) packages returned by 7380_ALR, 7381_PSS, and _TSS. Drivers can now assume that the packages are correctly 7382sorted 7383and do not contain NULL package elements. Adds one new file, 7384namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 7385 7386Fixed a possible fault during predefined name validation if a return 7387Package 7388object contains NULL elements. Also adds a warning if a NULL element is 7389followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 7390may 7391include repair or removal of all such NULL elements where possible. 7392 7393Implemented additional module-level executable AML code support. This 7394change 7395will execute module-level code that is not at the root of the namespace 7396(under a Device object, etc.) at table load time. Module-level executable 7397AML 7398code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 7399 7400Implemented a new internal function to create Integer objects. This 7401function 7402simplifies miscellaneous object creation code. ACPICA BZ 823. 7403 7404Reduced the severity of predefined repair messages, Warning to Info. 7405Since 7406the object was successfully repaired, a warning is too severe. Reduced to 7407an 7408info message for now. These messages may eventually be changed to debug- 7409only. 7410ACPICA BZ 812. 7411 7412Example Code and Data Size: These are the sizes for the OS-independent 7413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7414debug version of the code includes the debug output trace mechanism and 7415has a 7416much larger code and data size. 7417 7418 Previous Release: 7419 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7420 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7421 Current Release: 7422 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7423 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7424 74252) iASL Compiler/Disassembler and Tools: 7426 7427iASL: Implemented Switch() with While(1) so that Break works correctly. 7428This 7429change correctly implements the Switch operator with a surrounding 7430While(1) 7431so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 7432 7433iASL: Added a message if a package initializer list is shorter than 7434package 7435length. Adds a new remark for a Package() declaration if an initializer 7436list 7437exists, but is shorter than the declared length of the package. Although 7438technically legal, this is probably a coding error and it is seen in the 7439field. ACPICA BZ 815. Lin Ming, Bob Moore. 7440 7441iASL: Fixed a problem where the compiler could fault after the maximum 7442number 7443of errors was reached (200). 7444 7445acpixtract: Fixed a possible warning for pointer cast if the compiler 7446warning 7447level set very high. 7448 7449---------------------------------------- 745013 October 2009. Summary of changes for version 20091013: 7451 74521) ACPI CA Core Subsystem: 7453 7454Fixed a problem where an Operation Region _REG method could be executed 7455more 7456than once. If a custom address space handler is installed by the host 7457before 7458the "initialize operation regions" phase of the ACPICA initialization, 7459any 7460_REG methods for that address space could be executed twice. This change 7461fixes the problem. ACPICA BZ 427. Lin Ming. 7462 7463Fixed a possible memory leak for the Scope() ASL operator. When the exact 7464invocation of "Scope(\)" is executed (change scope to root), one internal 7465operand object was leaked. Lin Ming. 7466 7467Implemented a run-time repair for the _MAT predefined method. If the _MAT 7468return value is defined as a Field object in the AML, and the field 7469size is less than or equal to the default width of an integer (32 or 747064),_MAT 7471can incorrectly return an Integer instead of a Buffer. ACPICA now 7472automatically repairs this problem. ACPICA BZ 810. 7473 7474Implemented a run-time repair for the _BIF and _BIX predefined methods. 7475The 7476"OEM Information" field is often incorrectly returned as an Integer with 7477value zero if the field is not supported by the platform. This is due to 7478an 7479ambiguity in the ACPI specification. The field should always be a string. 7480ACPICA now automatically repairs this problem by returning a NULL string 7481within the returned Package. ACPICA BZ 807. 7482 7483Example Code and Data Size: These are the sizes for the OS-independent 7484acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7485debug version of the code includes the debug output trace mechanism and 7486has a 7487much larger code and data size. 7488 7489 Previous Release: 7490 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7491 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7492 Current Release: 7493 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7494 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7495 74962) iASL Compiler/Disassembler and Tools: 7497 7498Disassembler: Fixed a problem where references to external symbols that 7499contained one or more parent-prefixes (carats) were not handled 7500correctly, 7501possibly causing a fault. ACPICA BZ 806. Lin Ming. 7502 7503Disassembler: Restructured the code so that all functions that handle 7504external symbols are in a single module. One new file is added, 7505common/dmextern.c. 7506 7507AML Debugger: Added a max count argument for the Batch command (which 7508executes multiple predefined methods within the namespace.) 7509 7510iASL: Updated the compiler documentation (User Reference.) Available at 7511http://www.acpica.org/documentation/. ACPICA BZ 750. 7512 7513AcpiXtract: Updated for Lint and other formatting changes. Close all open 7514files. 7515 7516---------------------------------------- 751703 September 2009. Summary of changes for version 20090903: 7518 75191) ACPI CA Core Subsystem: 7520 7521For Windows Vista compatibility, added the automatic execution of an _INI 7522method located at the namespace root (\_INI). This method is executed at 7523table load time. This support is in addition to the automatic execution 7524of 7525\_SB._INI. Lin Ming. 7526 7527Fixed a possible memory leak in the interpreter for AML package objects 7528if 7529the package initializer list is longer than the defined size of the 7530package. 7531This apparently can only happen if the BIOS changes the package size on 7532the 7533fly (seen in a _PSS object), as ASL compilers do not allow this. The 7534interpreter will truncate the package to the defined size (and issue an 7535error 7536message), but previously could leave the extra objects undeleted if they 7537were 7538pre-created during the argument processing (such is the case if the 7539package 7540consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 7541 7542Fixed a problem seen when a Buffer or String is stored to itself via ASL. 7543This has been reported in the field. Previously, ACPICA would zero out 7544the 7545buffer/string. Now, the operation is treated as a noop. Provides Windows 7546compatibility. ACPICA BZ 803. Lin Ming. 7547 7548Removed an extraneous error message for ASL constructs of the form 7549Store(LocalX,LocalX) when LocalX is uninitialized. These curious 7550statements 7551are seen in many BIOSs and are once again treated as NOOPs and no error 7552is 7553emitted when they are encountered. ACPICA BZ 785. 7554 7555Fixed an extraneous warning message if a _DSM reserved method returns a 7556Package object. _DSM can return any type of object, so validation on the 7557return type cannot be performed. ACPICA BZ 802. 7558 7559Example Code and Data Size: These are the sizes for the OS-independent 7560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7561debug version of the code includes the debug output trace mechanism and 7562has a 7563much larger code and data size. 7564 7565 Previous Release: 7566 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7567 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7568 Current Release: 7569 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7570 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7571 75722) iASL Compiler/Disassembler and Tools: 7573 7574iASL: Fixed a problem with the use of the Alias operator and Resource 7575Templates. The correct alias is now constructed and no error is emitted. 7576ACPICA BZ 738. 7577 7578iASL: Implemented the -I option to specify additional search directories 7579for 7580include files. Allows multiple additional search paths for include files. 7581Directories are searched in the order specified on the command line 7582(after 7583the local directory is searched.) ACPICA BZ 800. 7584 7585iASL: Fixed a problem where the full pathname for include files was not 7586emitted for warnings/errors. This caused the IDE support to not work 7587properly. ACPICA BZ 765. 7588 7589iASL: Implemented the -@ option to specify a Windows-style response file 7590containing additional command line options. ACPICA BZ 801. 7591 7592AcpiExec: Added support to load multiple AML files simultaneously (such 7593as 7594a 7595DSDT and multiple SSDTs). Also added support for wildcards within the AML 7596pathname. These features allow all machine tables to be easily loaded and 7597debugged together. ACPICA BZ 804. 7598 7599Disassembler: Added missing support for disassembly of HEST table Error 7600Bank 7601subtables. 7602 7603---------------------------------------- 760430 July 2009. Summary of changes for version 20090730: 7605 7606The ACPI 4.0 implementation for ACPICA is complete with this release. 7607 76081) ACPI CA Core Subsystem: 7609 7610ACPI 4.0: Added header file support for all new and changed ACPI tables. 7611Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 7612new 7613for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 7614BERT, 7615EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 7616There 7617have been some ACPI 4.0 changes to other existing tables. Split the large 7618actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 7619 7620ACPI 4.0: Implemented predefined name validation for all new names. There 7621are 762231 new names in ACPI 4.0. The predefined validation module was split into 7623two 7624files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 7625 7626Implemented support for so-called "module-level executable code". This is 7627executable AML code that exists outside of any control method and is 7628intended 7629to be executed at table load time. Although illegal since ACPI 2.0, this 7630type 7631of code still exists and is apparently still being created. Blocks of 7632this 7633code are now detected and executed as intended. Currently, the code 7634blocks 7635must exist under either an If, Else, or While construct; these are the 7636typical cases seen in the field. ACPICA BZ 762. Lin Ming. 7637 7638Implemented an automatic dynamic repair for predefined names that return 7639nested Package objects. This applies to predefined names that are defined 7640to 7641return a variable-length Package of sub-packages. If the number of sub- 7642packages is one, BIOS code is occasionally seen that creates a simple 7643single 7644package with no sub-packages. This code attempts to fix the problem by 7645wrapping a new package object around the existing package. These methods 7646can 7647be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 7648BZ 7649790. 7650 7651Fixed a regression introduced in 20090625 for the AcpiGetDevices 7652interface. 7653The _HID/_CID matching was broken and no longer matched IDs correctly. 7654ACPICA 7655BZ 793. 7656 7657Fixed a problem with AcpiReset where the reset would silently fail if the 7658register was one of the protected I/O ports. AcpiReset now bypasses the 7659port 7660validation mechanism. This may eventually be driven into the 7661AcpiRead/Write 7662interfaces. 7663 7664Fixed a regression related to the recent update of the AcpiRead/Write 7665interfaces. A sleep/suspend could fail if the optional PM2 Control 7666register 7667does not exist during an attempt to write the Bus Master Arbitration bit. 7668(However, some hosts already delete the code that writes this bit, and 7669the 7670code may in fact be obsolete at this date.) ACPICA BZ 799. 7671 7672Fixed a problem where AcpiTerminate could fault if inadvertently called 7673twice 7674in succession. ACPICA BZ 795. 7675 7676Example Code and Data Size: These are the sizes for the OS-independent 7677acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7678debug version of the code includes the debug output trace mechanism and 7679has a 7680much larger code and data size. 7681 7682 Previous Release: 7683 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7684 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7685 Current Release: 7686 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7687 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7688 76892) iASL Compiler/Disassembler and Tools: 7690 7691ACPI 4.0: Implemented disassembler support for all new ACPI tables and 7692changes to existing tables. ACPICA BZ 775. 7693 7694---------------------------------------- 769525 June 2009. Summary of changes for version 20090625: 7696 7697The ACPI 4.0 Specification was released on June 16 and is available at 7698www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 7699continue for the next few releases. 7700 77011) ACPI CA Core Subsystem: 7702 7703ACPI 4.0: Implemented interpreter support for the IPMI operation region 7704address space. Includes support for bi-directional data buffers and an 7705IPMI 7706address space handler (to be installed by an IPMI device driver.) ACPICA 7707BZ 7708773. Lin Ming. 7709 7710ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 7711Includes 7712support in both the header files and the disassembler. 7713 7714Completed a major update for the AcpiGetObjectInfo external interface. 7715Changes include: 7716 - Support for variable, unlimited length HID, UID, and CID strings. 7717 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 7718etc.) 7719 - Call the _SxW power methods on behalf of a device object. 7720 - Determine if a device is a PCI root bridge. 7721 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 7722These changes will require an update to all callers of this interface. 7723See 7724the updated ACPICA Programmer Reference for details. One new source file 7725has 7726been added - utilities/utids.c. ACPICA BZ 368, 780. 7727 7728Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 7729transfers. The Value parameter has been extended from 32 bits to 64 bits 7730in 7731order to support new ACPI 4.0 tables. These changes will require an 7732update 7733to 7734all callers of these interfaces. See the ACPICA Programmer Reference for 7735details. ACPICA BZ 768. 7736 7737Fixed several problems with AcpiAttachData. The handler was not invoked 7738when 7739the host node was deleted. The data sub-object was not automatically 7740deleted 7741when the host node was deleted. The interface to the handler had an 7742unused 7743parameter, this was removed. ACPICA BZ 778. 7744 7745Enhanced the function that dumps ACPI table headers. All non-printable 7746characters in the string fields are now replaced with '?' (Signature, 7747OemId, 7748OemTableId, and CompilerId.) ACPI tables with non-printable characters in 7749these fields are occasionally seen in the field. ACPICA BZ 788. 7750 7751Fixed a problem with predefined method repair code where the code that 7752attempts to repair/convert an object of incorrect type is only executed 7753on 7754the first time the predefined method is called. The mechanism that 7755disables 7756warnings on subsequent calls was interfering with the repair mechanism. 7757ACPICA BZ 781. 7758 7759Fixed a possible memory leak in the predefined validation/repair code 7760when 7761a 7762buffer is automatically converted to an expected string object. 7763 7764Removed obsolete 16-bit files from the distribution and from the current 7765git 7766tree head. ACPICA BZ 776. 7767 7768Example Code and Data Size: These are the sizes for the OS-independent 7769acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7770debug version of the code includes the debug output trace mechanism and 7771has a 7772much larger code and data size. 7773 7774 Previous Release: 7775 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7776 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7777 Current Release: 7778 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7779 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7780 77812) iASL Compiler/Disassembler and Tools: 7782 7783ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 7784operation region keyword. ACPICA BZ 771, 772. Lin Ming. 7785 7786ACPI 4.0: iASL - implemented compile-time validation support for all new 7787predefined names and control methods (31 total). ACPICA BZ 769. 7788 7789---------------------------------------- 779021 May 2009. Summary of changes for version 20090521: 7791 77921) ACPI CA Core Subsystem: 7793 7794Disabled the preservation of the SCI enable bit in the PM1 control 7795register. 7796The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 7797to 7798be 7799a "preserved" bit - "OSPM always preserves this bit position", section 78004.7.3.2.1. However, some machines fail if this bit is in fact preserved 7801because the bit needs to be explicitly set by the OS as a workaround. No 7802machines fail if the bit is not preserved. Therefore, ACPICA no longer 7803attempts to preserve this bit. 7804 7805Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 7806incorrectly formed _PRT package could cause a fault. Added validation to 7807ensure that each package element is actually a sub-package. 7808 7809Implemented a new interface to install or override a single control 7810method, 7811AcpiInstallMethod. This interface is useful when debugging in order to 7812repair 7813an existing method or to install a missing method without having to 7814override 7815the entire ACPI table. See the ACPICA Programmer Reference for use and 7816examples. Lin Ming, Bob Moore. 7817 7818Fixed several reference count issues with the DdbHandle object that is 7819created from a Load or LoadTable operator. Prevent premature deletion of 7820the 7821object. Also, mark the object as invalid once the table has been 7822unloaded. 7823This is needed because the handle itself may not be deleted after the 7824table 7825unload, depending on whether it has been stored in a named object by the 7826caller. Lin Ming. 7827 7828Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 7829mutexes of the same sync level are acquired but then not released in 7830strict 7831opposite order, the internally maintained Current Sync Level becomes 7832confused 7833and can cause subsequent execution errors. ACPICA BZ 471. 7834 7835Changed the allowable release order for ASL mutex objects. The ACPI 4.0 7836specification has been changed to make the SyncLevel for mutex objects 7837more 7838useful. When releasing a mutex, the SyncLevel of the mutex must now be 7839the 7840same as the current sync level. This makes more sense than the previous 7841rule 7842(SyncLevel less than or equal). This change updates the code to match the 7843specification. 7844 7845Fixed a problem with the local version of the AcpiOsPurgeCache function. 7846The 7847(local) cache must be locked during all cache object deletions. Andrew 7848Baumann. 7849 7850Updated the Load operator to use operation region interfaces. This 7851replaces 7852direct memory mapping with region access calls. Now, all region accesses 7853go 7854through the installed region handler as they should. 7855 7856Simplified and optimized the NsGetNextNode function. Reduced parameter 7857count 7858and reduced code for this frequently used function. 7859 7860Example Code and Data Size: These are the sizes for the OS-independent 7861acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7862debug version of the code includes the debug output trace mechanism and 7863has a 7864much larger code and data size. 7865 7866 Previous Release: 7867 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7868 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7869 Current Release: 7870 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7871 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7872 78732) iASL Compiler/Disassembler and Tools: 7874 7875Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 7876problems 7877with sub-table disassembly and handling invalid sub-tables. Attempt 7878recovery 7879after an invalid sub-table ID. 7880 7881---------------------------------------- 788222 April 2009. Summary of changes for version 20090422: 7883 78841) ACPI CA Core Subsystem: 7885 7886Fixed a compatibility issue with the recently released I/O port 7887protection 7888mechanism. For windows compatibility, 1) On a port protection violation, 7889simply ignore the request and do not return an exception (allow the 7890control 7891method to continue execution.) 2) If only part of the request overlaps a 7892protected port, read/write the individual ports that are not protected. 7893Linux 7894BZ 13036. Lin Ming 7895 7896Enhanced the execution of the ASL/AML BreakPoint operator so that it 7897actually 7898breaks into the AML debugger if the debugger is present. This matches the 7899ACPI-defined behavior. 7900 7901Fixed several possible warnings related to the use of the configurable 7902ACPI_THREAD_ID. This type can now be configured as either an integer or a 7903pointer with no warnings. Also fixes several warnings in printf-like 7904statements for the 64-bit build when the type is configured as a pointer. 7905ACPICA BZ 766, 767. 7906 7907Fixed a number of possible warnings when compiling with gcc 4+ (depending 7908on 7909warning options.) Examples include printf formats, aliasing, unused 7910globals, 7911missing prototypes, missing switch default statements, use of non-ANSI 7912library functions, use of non-ANSI constructs. See generate/unix/Makefile 7913for 7914a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 7915 7916Example Code and Data Size: These are the sizes for the OS-independent 7917acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7918debug version of the code includes the debug output trace mechanism and 7919has a 7920much larger code and data size. 7921 7922 Previous Release: 7923 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7924 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7925 Current Release: 7926 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7927 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7928 79292) iASL Compiler/Disassembler and Tools: 7930 7931iASL: Fixed a generation warning from Bison 2.3 and fixed several 7932warnings 7933on 7934the 64-bit build. 7935 7936iASL: Fixed a problem where the Unix/Linux versions of the compiler could 7937not 7938correctly digest Windows/DOS formatted files (with CR/LF). 7939 7940iASL: Added a new option for "quiet mode" (-va) that produces only the 7941compilation summary, not individual errors and warnings. Useful for large 7942batch compilations. 7943 7944AcpiExec: Implemented a new option (-z) to enable a forced 7945semaphore/mutex 7946timeout that can be used to detect hang conditions during execution of 7947AML 7948code (includes both internal semaphores and AML-defined mutexes and 7949events.) 7950 7951Added new makefiles for the generation of acpica in a generic unix-like 7952environment. These makefiles are intended to generate the acpica tools 7953and 7954utilities from the original acpica git source tree structure. 7955 7956Test Suites: Updated and cleaned up the documentation files. Updated the 7957copyrights to 2009, affecting all source files. Use the new version of 7958iASL 7959with quiet mode. Increased the number of available semaphores in the 7960Windows 7961OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 7962added 7963an alternate implementation of the semaphore timeout to allow aslts to 7964execute fully on Cygwin. 7965 7966---------------------------------------- 796720 March 2009. Summary of changes for version 20090320: 7968 79691) ACPI CA Core Subsystem: 7970 7971Fixed a possible race condition between AcpiWalkNamespace and dynamic 7972table 7973unloads. Added a reader/writer locking mechanism to allow multiple 7974concurrent 7975namespace walks (readers), but block a dynamic table unload until it can 7976gain 7977exclusive write access to the namespace. This fixes a problem where a 7978table 7979unload could (possibly catastrophically) delete the portion of the 7980namespace 7981that is currently being examined by a walk. Adds a new file, utlock.c, 7982that 7983implements the reader/writer lock mechanism. ACPICA BZ 749. 7984 7985Fixed a regression introduced in version 20090220 where a change to the 7986FADT 7987handling could cause the ACPICA subsystem to access non-existent I/O 7988ports. 7989 7990Modified the handling of FADT register and table (FACS/DSDT) addresses. 7991The 7992FADT can contain both 32-bit and 64-bit versions of these addresses. 7993Previously, the 64-bit versions were favored, meaning that if both 32 and 799464 7995versions were valid, but not equal, the 64-bit version was used. This was 7996found to cause some machines to fail. Now, in this case, the 32-bit 7997version 7998is used instead. This now matches the Windows behavior. 7999 8000Implemented a new mechanism to protect certain I/O ports. Provides 8001Microsoft 8002compatibility and protects the standard PC I/O ports from access via AML 8003code. Adds a new file, hwvalid.c 8004 8005Fixed a possible extraneous warning message from the FADT support. The 8006message warns of a 32/64 length mismatch between the legacy and GAS 8007definitions for a register. 8008 8009Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 8010is 8011made obsolete by the port protection mechanism above. It was previously 8012used 8013to validate the entire address range of an operation region, which could 8014be 8015incorrect if the range included illegal ports, but fields within the 8016operation region did not actually access those ports. Validation is now 8017performed on a per-field basis instead of the entire region. 8018 8019Modified the handling of the PM1 Status Register ignored bit (bit 11.) 8020Ignored bits must be "preserved" according to the ACPI spec. Usually, 8021this 8022means a read/modify/write when writing to the register. However, for 8023status 8024registers, writing a one means clear the event. Writing a zero means 8025preserve 8026the event (do not clear.) This behavior is clarified in the ACPI 4.0 8027spec, 8028and the ACPICA code now simply always writes a zero to the ignored bit. 8029 8030Modified the handling of ignored bits for the PM1 A/B Control Registers. 8031As 8032per the ACPI specification, for the control registers, preserve 8033(read/modify/write) all bits that are defined as either reserved or 8034ignored. 8035 8036Updated the handling of write-only bits in the PM1 A/B Control Registers. 8037When reading the register, zero the write-only bits as per the ACPI spec. 8038ACPICA BZ 443. Lin Ming. 8039 8040Removed "Linux" from the list of supported _OSI strings. Linux no longer 8041wants to reply true to this request. The Windows strings are the only 8042paths 8043through the AML that are tested and known to work properly. 8044 8045 Previous Release: 8046 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8047 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8048 Current Release: 8049 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8050 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8051 80522) iASL Compiler/Disassembler and Tools: 8053 8054Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 8055and 8056aetables.c 8057 8058---------------------------------------- 805920 February 2009. Summary of changes for version 20090220: 8060 80611) ACPI CA Core Subsystem: 8062 8063Optimized the ACPI register locking. Removed locking for reads from the 8064ACPI 8065bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 8066is 8067not required when reading the single-bit registers. The 8068AcpiGetRegisterUnlocked function is no longer needed and has been 8069removed. 8070This will improve performance for reads on these registers. ACPICA BZ 8071760. 8072 8073Fixed the parameter validation for AcpiRead/Write. Now return 8074AE_BAD_PARAMETER if the input register pointer is null, and 8075AE_BAD_ADDRESS 8076if 8077the register has an address of zero. Previously, these cases simply 8078returned 8079AE_OK. For optional registers such as PM1B status/enable/control, the 8080caller 8081should check for a valid register address before calling. ACPICA BZ 748. 8082 8083Renamed the external ACPI bit register access functions. Renamed 8084AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 8085functions. The new names are AcpiReadBitRegister and 8086AcpiWriteBitRegister. 8087Also, restructured the code for these functions by simplifying the code 8088path 8089and condensing duplicate code to reduce code size. 8090 8091Added new functions to transparently handle the possibly split PM1 A/B 8092registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 8093functions 8094now handle the split registers for PM1 Status, Enable, and Control. 8095ACPICA 8096BZ 8097746. 8098 8099Added a function to handle the PM1 control registers, 8100AcpiHwWritePm1Control. 8101This function writes both of the PM1 control registers (A/B). These 8102registers 8103are different than the PM1 A/B status and enable registers in that 8104different 8105values can be written to the A/B registers. Most notably, the SLP_TYP 8106bits 8107can be different, as per the values returned from the _Sx predefined 8108methods. 8109 8110Removed an extra register write within AcpiHwClearAcpiStatus. This 8111function 8112was writing an optional PM1B status register twice. The existing call to 8113the 8114low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 8115A/B 8116register. ACPICA BZ 751. 8117 8118Split out the PM1 Status registers from the FADT. Added new globals for 8119these 8120registers (A/B), similar to the way the PM1 Enable registers are handled. 8121Instead of overloading the FADT Event Register blocks. This makes the 8122code 8123clearer and less prone to error. 8124 8125Fixed the warning message for when the platform contains too many ACPI 8126tables 8127for the default size of the global root table data structure. The 8128calculation 8129for the truncation value was incorrect. 8130 8131Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 8132obsolete macro, since it is now a simple reference to ->common.type. 8133There 8134were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 8135 8136Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 8137TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 8138simply SLEEP_TYPE. ACPICA BZ 754. 8139 8140Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 8141function is only needed on 64-bit host operating systems and is thus not 8142included for 32-bit hosts. 8143 8144Debug output: print the input and result for invocations of the _OSI 8145reserved 8146control method via the ACPI_LV_INFO debug level. Also, reduced some of 8147the 8148verbosity of this debug level. Len Brown. 8149 8150Example Code and Data Size: These are the sizes for the OS-independent 8151acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8152debug version of the code includes the debug output trace mechanism and 8153has a 8154much larger code and data size. 8155 8156 Previous Release: 8157 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8158 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8159 Current Release: 8160 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8161 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8162 81632) iASL Compiler/Disassembler and Tools: 8164 8165Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 8166various legal performance profiles. 8167 8168---------------------------------------- 816923 January 2009. Summary of changes for version 20090123: 8170 81711) ACPI CA Core Subsystem: 8172 8173Added the 2009 copyright to all module headers and signons. This affects 8174virtually every file in the ACPICA core subsystem, the iASL compiler, and 8175the tools/utilities. 8176 8177Implemented a change to allow the host to override any ACPI table, 8178including 8179dynamically loaded tables. Previously, only the DSDT could be replaced by 8180the 8181host. With this change, the AcpiOsTableOverride interface is called for 8182each 8183table found in the RSDT/XSDT during ACPICA initialization, and also 8184whenever 8185a table is dynamically loaded via the AML Load operator. 8186 8187Updated FADT flag definitions, especially the Boot Architecture flags. 8188 8189Debugger: For the Find command, automatically pad the input ACPI name 8190with 8191underscores if the name is shorter than 4 characters. This enables a 8192match 8193with the actual namespace entry which is itself padded with underscores. 8194 8195Example Code and Data Size: These are the sizes for the OS-independent 8196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8197debug version of the code includes the debug output trace mechanism and 8198has a 8199much larger code and data size. 8200 8201 Previous Release: 8202 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8203 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8204 Current Release: 8205 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8206 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8207 82082) iASL Compiler/Disassembler and Tools: 8209 8210Fix build error under Bison-2.4. 8211 8212Dissasembler: Enhanced FADT support. Added decoding of the Boot 8213Architecture 8214flags. Now decode all flags, regardless of the FADT version. Flag output 8215includes the FADT version which first defined each flag. 8216 8217The iASL -g option now dumps the RSDT to a file (in addition to the FADT 8218and 8219DSDT). Windows only. 8220 8221---------------------------------------- 822204 December 2008. Summary of changes for version 20081204: 8223 82241) ACPI CA Core Subsystem: 8225 8226The ACPICA Programmer Reference has been completely updated and revamped 8227for 8228this release. This includes updates to the external interfaces, OSL 8229interfaces, the overview sections, and the debugger reference. 8230 8231Several new ACPICA interfaces have been implemented and documented in the 8232programmer reference: 8233AcpiReset - Writes the reset value to the FADT-defined reset register. 8234AcpiDisableAllGpes - Disable all available GPEs. 8235AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 8236AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 8237AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 8238AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 8239AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 8240 8241Most of the public ACPI hardware-related interfaces have been moved to a 8242new 8243file, components/hardware/hwxface.c 8244 8245Enhanced the FADT parsing and low-level ACPI register access: The ACPI 8246register lengths within the FADT are now used, and the low level ACPI 8247register access no longer hardcodes the ACPI register lengths. Given that 8248there may be some risk in actually trusting the FADT register lengths, a 8249run- 8250time option was added to fall back to the default hardcoded lengths if 8251the 8252FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 8253option is set to true for now, and a warning is issued if a suspicious 8254FADT 8255register length is overridden with the default value. 8256 8257Fixed a reference count issue in NsRepairObject. This problem was 8258introduced 8259in version 20081031 as part of a fix to repair Buffer objects within 8260Packages. Lin Ming. 8261 8262Added semaphore support to the Linux/Unix application OS-services layer 8263(OSL). ACPICA BZ 448. Lin Ming. 8264 8265Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 8266will 8267be implemented in the OSL, or will binary semaphores be used instead. 8268 8269Example Code and Data Size: These are the sizes for the OS-independent 8270acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8271debug version of the code includes the debug output trace mechanism and 8272has a 8273much larger code and data size. 8274 8275 Previous Release: 8276 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8277 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8278 Current Release: 8279 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8280 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8281 82822) iASL Compiler/Disassembler and Tools: 8283 8284iASL: Completed the '-e' option to include additional ACPI tables in 8285order 8286to 8287aid with disassembly and External statement generation. ACPICA BZ 742. 8288Lin 8289Ming. 8290 8291iASL: Removed the "named object in while loop" error. The compiler cannot 8292determine how many times a loop will execute. ACPICA BZ 730. 8293 8294Disassembler: Implemented support for FADT revision 2 (MS extension). 8295ACPICA 8296BZ 743. 8297 8298Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 8299MCFG). 8300 8301---------------------------------------- 830231 October 2008. Summary of changes for version 20081031: 8303 83041) ACPI CA Core Subsystem: 8305 8306Restructured the ACPICA header files into public/private. acpi.h now 8307includes 8308only the "public" acpica headers. All other acpica headers are "private" 8309and 8310should not be included by acpica users. One new file, accommon.h is used 8311to 8312include the commonly used private headers for acpica code generation. 8313Future 8314plans include moving all private headers to a new subdirectory. 8315 8316Implemented an automatic Buffer->String return value conversion for 8317predefined ACPI methods. For these methods (such as _BIF), added 8318automatic 8319conversion for return objects that are required to be a String, but a 8320Buffer 8321was found instead. This can happen when reading string battery data from 8322an 8323operation region, because it used to be difficult to convert the data 8324from 8325buffer to string from within the ASL. Ensures that the host OS is 8326provided 8327with a valid null-terminated string. Linux BZ 11822. 8328 8329Updated the FACS waking vector interfaces. Split 8330AcpiSetFirmwareWakingVector 8331into two: one for the 32-bit vector, another for the 64-bit vector. This 8332is 8333required because the host OS must setup the wake much differently for 8334each 8335vector (real vs. protected mode, etc.) and the interface itself should 8336not 8337be 8338deciding which vector to use. Also, eliminated the 8339GetFirmwareWakingVector 8340interface, as it served no purpose (only the firmware reads the vector, 8341OS 8342only writes the vector.) ACPICA BZ 731. 8343 8344Implemented a mechanism to escape infinite AML While() loops. Added a 8345loop 8346counter to force exit from AML While loops if the count becomes too 8347large. 8348This can occur in poorly written AML when the hardware does not respond 8349within a while loop and the loop does not implement a timeout. The 8350maximum 8351loop count is configurable. A new exception code is returned when a loop 8352is 8353broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 8354 8355Optimized the execution of AML While loops. Previously, a control state 8356object was allocated and freed for each execution of the loop. The 8357optimization is to simply reuse the control state for each iteration. 8358This 8359speeds up the raw loop execution time by about 5%. 8360 8361Enhanced the implicit return mechanism. For Windows compatibility, return 8362an 8363implicit integer of value zero for methods that contain no executable 8364code. 8365Such methods are seen in the field as stubs (presumably), and can cause 8366drivers to fail if they expect a return value. Lin Ming. 8367 8368Allow multiple backslashes as root prefixes in namepaths. In a fully 8369qualified namepath, allow multiple backslash prefixes. This can happen 8370(and 8371is seen in the field) because of the use of a double-backslash in strings 8372(since backslash is the escape character) causing confusion. ACPICA BZ 8373739 8374Lin Ming. 8375 8376Emit a warning if two different FACS or DSDT tables are discovered in the 8377FADT. Checks if there are two valid but different addresses for the FACS 8378and 8379DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 8380 8381Consolidated the method argument count validation code. Merged the code 8382that 8383validates control method argument counts into the predefined validation 8384module. Eliminates possible multiple warnings for incorrect argument 8385counts. 8386 8387Implemented ACPICA example code. Includes code for ACPICA initialization, 8388handler installation, and calling a control method. Available at 8389source/tools/examples. 8390 8391Added a global pointer for FACS table to simplify internal FACS access. 8392Use 8393the global pointer instead of using AcpiGetTableByIndex for each FACS 8394access. 8395This simplifies the code for the Global Lock and the Firmware Waking 8396Vector(s). 8397 8398Example Code and Data Size: These are the sizes for the OS-independent 8399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8400debug version of the code includes the debug output trace mechanism and 8401has a 8402much larger code and data size. 8403 8404 Previous Release: 8405 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8406 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8407 Current Release: 8408 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8409 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8410 84112) iASL Compiler/Disassembler and Tools: 8412 8413iASL: Improved disassembly of external method calls. Added the -e option 8414to 8415allow the inclusion of additional ACPI tables to help with the 8416disassembly 8417of 8418method invocations and the generation of external declarations during the 8419disassembly. Certain external method invocations cannot be disassembled 8420properly without the actual declaration of the method. Use the -e option 8421to 8422include the table where the external method(s) are actually declared. 8423Most 8424useful for disassembling SSDTs that make method calls back to the master 8425DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 8426-d 8427-e dsdt.aml ssdt1.aml 8428 8429iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 8430problem where the use of an alias within a namepath would result in a not 8431found error or cause the compiler to fault. Also now allows forward 8432references from the Alias operator itself. ACPICA BZ 738. 8433 8434---------------------------------------- 843526 September 2008. Summary of changes for version 20080926: 8436 84371) ACPI CA Core Subsystem: 8438 8439Designed and implemented a mechanism to validate predefined ACPI methods 8440and 8441objects. This code validates the predefined ACPI objects (objects whose 8442names 8443start with underscore) that appear in the namespace, at the time they are 8444evaluated. The argument count and the type of the returned object are 8445validated against the ACPI specification. The purpose of this validation 8446is 8447to detect problems with the BIOS-implemented predefined ACPI objects 8448before 8449the results are returned to the ACPI-related drivers. Future enhancements 8450may 8451include actual repair of incorrect return objects where possible. Two new 8452files are nspredef.c and acpredef.h. 8453 8454Fixed a fault in the AML parser if a memory allocation fails during the 8455Op 8456completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 8457 8458Fixed an issue with implicit return compatibility. This change improves 8459the 8460implicit return mechanism to be more compatible with the MS interpreter. 8461Lin 8462Ming, ACPICA BZ 349. 8463 8464Implemented support for zero-length buffer-to-string conversions. Allow 8465zero 8466length strings during interpreter buffer-to-string conversions. For 8467example, 8468during the ToDecimalString and ToHexString operators, as well as implicit 8469conversions. Fiodor Suietov, ACPICA BZ 585. 8470 8471Fixed two possible memory leaks in the error exit paths of 8472AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 8473are 8474similar in that they use a stack of state objects in order to eliminate 8475recursion. The stack must be fully unwound and deallocated if an error 8476occurs. Lin Ming. ACPICA BZ 383. 8477 8478Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 8479global 8480ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 8481Moore ACPICA BZ 442. 8482 8483Removed the obsolete version number in module headers. Removed the 8484"$Revision" number that appeared in each module header. This version 8485number 8486was useful under SourceSafe and CVS, but has no meaning under git. It is 8487not 8488only incorrect, it could also be misleading. 8489 8490Example Code and Data Size: These are the sizes for the OS-independent 8491acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8492debug version of the code includes the debug output trace mechanism and 8493has a 8494much larger code and data size. 8495 8496 Previous Release: 8497 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8498 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8499 Current Release: 8500 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8501 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8502 8503---------------------------------------- 850429 August 2008. Summary of changes for version 20080829: 8505 85061) ACPI CA Core Subsystem: 8507 8508Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 8509Reference. Changes include the elimination of cheating on the Object 8510field 8511for the DdbHandle subtype, addition of a reference class field to 8512differentiate the various reference types (instead of an AML opcode), and 8513the 8514cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 8515 8516Reduce an error to a warning for an incorrect method argument count. 8517Previously aborted with an error if too few arguments were passed to a 8518control method via the external ACPICA interface. Now issue a warning 8519instead 8520and continue. Handles the case where the method inadvertently declares 8521too 8522many arguments, but does not actually use the extra ones. Applies mainly 8523to 8524the predefined methods. Lin Ming. Linux BZ 11032. 8525 8526Disallow the evaluation of named object types with no intrinsic value. 8527Return 8528AE_TYPE for objects that have no value and therefore evaluation is 8529undefined: 8530Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 8531of 8532these types were allowed, but an exception would be generated at some 8533point 8534during the evaluation. Now, the error is generated up front. 8535 8536Fixed a possible memory leak in the AcpiNsGetExternalPathname function 8537(nsnames.c). Fixes a leak in the error exit path. 8538 8539Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 8540debug 8541levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 8542ACPI_EXCEPTION 8543interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 8544ACPI_LV_EVENTS. 8545 8546Removed obsolete and/or unused exception codes from the acexcep.h header. 8547There is the possibility that certain device drivers may be affected if 8548they 8549use any of these exceptions. 8550 8551The ACPICA documentation has been added to the public git source tree, 8552under 8553acpica/documents. Included are the ACPICA programmer reference, the iASL 8554compiler reference, and the changes.txt release logfile. 8555 8556Example Code and Data Size: These are the sizes for the OS-independent 8557acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8558debug version of the code includes the debug output trace mechanism and 8559has a 8560much larger code and data size. 8561 8562 Previous Release: 8563 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8564 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8565 Current Release: 8566 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8567 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8568 85692) iASL Compiler/Disassembler and Tools: 8570 8571Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 8572defines _SCP with 3 arguments. Previous versions defined it with only 1 8573argument. iASL now allows both definitions. 8574 8575iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 8576zero- 8577length subtables when disassembling ACPI tables. Also fixed a couple of 8578errors where a full 16-bit table type field was not extracted from the 8579input 8580properly. 8581 8582acpisrc: Improve comment counting mechanism for generating source code 8583statistics. Count first and last lines of multi-line comments as 8584whitespace, 8585not comment lines. Handle Linux legal header in addition to standard 8586acpica 8587header. 8588 8589---------------------------------------- 8590 859129 July 2008. Summary of changes for version 20080729: 8592 85931) ACPI CA Core Subsystem: 8594 8595Fix a possible deadlock in the GPE dispatch. Remove call to 8596AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 8597attempt 8598to acquire the GPE lock but can deadlock since the GPE lock is already 8599held 8600at dispatch time. This code was introduced in version 20060831 as a 8601response 8602to Linux BZ 6881 and has since been removed from Linux. 8603 8604Add a function to dereference returned reference objects. Examines the 8605return 8606object from a call to AcpiEvaluateObject. Any Index or RefOf references 8607are 8608automatically dereferenced in an attempt to return something useful 8609(these 8610reference types cannot be converted into an external ACPI_OBJECT.) 8611Provides 8612MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 8613 8614x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 8615subtables for the MADT and one new subtable for the SRAT. Includes 8616disassembler and AcpiSrc support. Data from the Intel 64 Architecture 8617x2APIC 8618Specification, June 2008. 8619 8620Additional error checking for pathname utilities. Add error check after 8621all 8622calls to AcpiNsGetPathnameLength. Add status return from 8623AcpiNsBuildExternalPath and check after all calls. Add parameter 8624validation 8625to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 8626 8627Return status from the global init function AcpiUtGlobalInitialize. This 8628is 8629used by both the kernel subsystem and the utilities such as iASL 8630compiler. 8631The function could possibly fail when the caches are initialized. Yang 8632Yi. 8633 8634Add a function to decode reference object types to strings. Created for 8635improved error messages. 8636 8637Improve object conversion error messages. Better error messages during 8638object 8639conversion from internal to the external ACPI_OBJECT. Used for external 8640calls 8641to AcpiEvaluateObject. 8642 8643Example Code and Data Size: These are the sizes for the OS-independent 8644acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8645debug version of the code includes the debug output trace mechanism and 8646has a 8647much larger code and data size. 8648 8649 Previous Release: 8650 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8651 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8652 Current Release: 8653 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8654 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8655 86562) iASL Compiler/Disassembler and Tools: 8657 8658Debugger: fix a possible hang when evaluating non-methods. Fixes a 8659problem 8660introduced in version 20080701. If the object being evaluated (via 8661execute 8662command) is not a method, the debugger can hang while trying to obtain 8663non- 8664existent parameters. 8665 8666iASL: relax error for using reserved "_T_x" identifiers. These names can 8667appear in a disassembled ASL file if they were emitted by the original 8668compiler. Instead of issuing an error or warning and forcing the user to 8669manually change these names, issue a remark instead. 8670 8671iASL: error if named object created in while loop. Emit an error if any 8672named 8673object is created within a While loop. If allowed, this code will 8674generate 8675a 8676run-time error on the second iteration of the loop when an attempt is 8677made 8678to 8679create the same named object twice. ACPICA bugzilla 730. 8680 8681iASL: Support absolute pathnames for include files. Add support for 8682absolute 8683pathnames within the Include operator. previously, only relative 8684pathnames 8685were supported. 8686 8687iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 8688Descriptor. 8689The ACPI spec requires one interrupt minimum. BZ 423 8690 8691iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 8692Handles the case for the Interrupt Resource Descriptor where 8693the ResourceSource argument is omitted but ResourceSourceIndex 8694is present. Now leave room for the Index. BZ 426 8695 8696iASL: Prevent error message if CondRefOf target does not exist. Fixes 8697cases 8698where an error message is emitted if the target does not exist. BZ 516 8699 8700iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 8701(get ACPI tables on Windows). This was apparently broken in version 870220070919. 8703 8704AcpiXtract: Handle EOF while extracting data. Correctly handle the case 8705where 8706the EOF happens immediately after the last table in the input file. Print 8707completion message. Previously, no message was displayed in this case. 8708 8709---------------------------------------- 871001 July 2008. Summary of changes for version 20080701: 8711 87120) Git source tree / acpica.org 8713 8714Fixed a problem where a git-clone from http would not transfer the entire 8715source tree. 8716 87171) ACPI CA Core Subsystem: 8718 8719Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 8720enable bit. Now performs a read-change-write of the enable register 8721instead 8722of simply writing out the cached enable mask. This will prevent 8723inadvertent 8724enabling of GPEs if a rogue GPE is received during initialization (before 8725GPE 8726handlers are installed.) 8727 8728Implemented a copy for dynamically loaded tables. Previously, dynamically 8729loaded tables were simply mapped - but on some machines this memory is 8730corrupted after suspend. Now copy the table to a local buffer. For the 8731OpRegion case, added checksum verify. Use the table length from the table 8732header, not the region length. For the Buffer case, use the table length 8733also. Dennis Noordsij, Bob Moore. BZ 10734 8734 8735Fixed a problem where the same ACPI table could not be dynamically loaded 8736and 8737unloaded more than once. Without this change, a table cannot be loaded 8738again 8739once it has been loaded/unloaded one time. The current mechanism does not 8740unregister a table upon an unload. During a load, if the same table is 8741found, 8742this no longer returns an exception. BZ 722 8743 8744Fixed a problem where the wrong descriptor length was calculated for the 8745EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 8746EndTag 8747are calculated as 12 bytes long, but the actual length in the internal 8748descriptor is 16 because of the round-up to 8 on the 64-bit build. 8749Reported 8750by Linn Crosetto. BZ 728 8751 8752Fixed a possible memory leak in the Unload operator. The DdbHandle 8753returned 8754by Load() did not have its reference count decremented during unload, 8755leading 8756to a memory leak. Lin Ming. BZ 727 8757 8758Fixed a possible memory leak when deleting thermal/processor objects. Any 8759associated notify handlers (and objects) were not being deleted. Fiodor 8760Suietov. BZ 506 8761 8762Fixed the ordering of the ASCII names in the global mutex table to match 8763the 8764actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 8765only. 8766Vegard Nossum. BZ 726 8767 8768Enhanced the AcpiGetObjectInfo interface to return the number of required 8769arguments if the object is a control method. Added this call to the 8770debugger 8771so the proper number of default arguments are passed to a method. This 8772prevents a warning when executing methods from AcpiExec. 8773 8774Added a check for an invalid handle in AcpiGetObjectInfo. Return 8775AE_BAD_PARAMETER if input handle is invalid. BZ 474 8776 8777Fixed an extraneous warning from exconfig.c on the 64-bit build. 8778 8779Example Code and Data Size: These are the sizes for the OS-independent 8780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8781debug version of the code includes the debug output trace mechanism and 8782has a 8783much larger code and data size. 8784 8785 Previous Release: 8786 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8787 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8788 Current Release: 8789 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8790 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8791 87922) iASL Compiler/Disassembler and Tools: 8793 8794iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 8795resource descriptor names. 8796 8797iASL: Detect invalid ASCII characters in input (windows version). Removed 8798the 8799"-CF" flag from the flex compile, enables correct detection of non-ASCII 8800characters in the input. BZ 441 8801 8802iASL: Eliminate warning when result of LoadTable is not used. Eliminate 8803the 8804"result of operation not used" warning when the DDB handle returned from 8805LoadTable is not used. The warning is not needed. BZ 590 8806 8807AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 8808method 8809to 8810pass address of table to the AML. Added option to disable OpRegion 8811simulation 8812to allow creation of an OpRegion with a real address that was passed to 8813_CFG. 8814All of this allows testing of the Load and Unload operators from 8815AcpiExec. 8816 8817Debugger: update tables command for unloaded tables. Handle unloaded 8818tables 8819and use the standard table header output routine. 8820 8821---------------------------------------- 882209 June 2008. Summary of changes for version 20080609: 8823 88241) ACPI CA Core Subsystem: 8825 8826Implemented a workaround for reversed _PRT entries. A significant number 8827of 8828BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 8829change dynamically detects and repairs this problem. Provides 8830compatibility 8831with MS ACPI. BZ 6859 8832 8833Simplified the internal ACPI hardware interfaces to eliminate the locking 8834flag parameter from Register Read/Write. Added a new external interface, 8835AcpiGetRegisterUnlocked. 8836 8837Fixed a problem where the invocation of a GPE control method could hang. 8838This 8839was a regression introduced in 20080514. The new method argument count 8840validation mechanism can enter an infinite loop when a GPE method is 8841dispatched. Problem fixed by removing the obsolete code that passed GPE 8842block 8843information to the notify handler via the control method parameter 8844pointer. 8845 8846Fixed a problem where the _SST execution status was incorrectly returned 8847to 8848the caller of AcpiEnterSleepStatePrep. This was a regression introduced 8849in 885020080514. _SST is optional and a NOT_FOUND exception should never be 8851returned. BZ 716 8852 8853Fixed a problem where a deleted object could be accessed from within the 8854AML 8855parser. This was a regression introduced in version 20080123 as a fix for 8856the 8857Unload operator. Lin Ming. BZ 10669 8858 8859Cleaned up the debug operand dump mechanism. Eliminated unnecessary 8860operands 8861and eliminated the use of a negative index in a loop. Operands are now 8862displayed in the correct order, not backwards. This also fixes a 8863regression 8864introduced in 20080514 on 64-bit systems where the elimination of 8865ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 8866715 8867 8868Fixed a possible memory leak in EvPciConfigRegionSetup where the error 8869exit 8870path did not delete a locally allocated structure. 8871 8872Updated definitions for the DMAR and SRAT tables to synchronize with the 8873current specifications. Includes disassembler support. 8874 8875Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 8876loop termination value was used. Loop terminated on iteration early, 8877missing 8878one mutex. Linn Crosetto 8879 8880Example Code and Data Size: These are the sizes for the OS-independent 8881acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8882debug version of the code includes the debug output trace mechanism and 8883has a 8884much larger code and data size. 8885 8886 Previous Release: 8887 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8888 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8889 Current Release: 8890 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8891 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8892 88932) iASL Compiler/Disassembler and Tools: 8894 8895Disassembler: Implemented support for EisaId() within _CID objects. Now 8896disassemble integer _CID objects back to EisaId invocations, including 8897multiple integers within _CID packages. Includes single-step support for 8898debugger also. 8899 8900Disassembler: Added support for DMAR and SRAT table definition changes. 8901 8902---------------------------------------- 890314 May 2008. Summary of changes for version 20080514: 8904 89051) ACPI CA Core Subsystem: 8906 8907Fixed a problem where GPEs were enabled too early during the ACPICA 8908initialization. This could lead to "handler not installed" errors on some 8909machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 8910This 8911ensures that all operation regions and devices throughout the namespace 8912have 8913been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 8914 8915Implemented a change to the enter sleep code. Moved execution of the _GTS 8916method to just before setting sleep enable bit. The execution was moved 8917from 8918AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 8919immediately before the SLP_EN bit is set, as per the ACPI specification. 8920Luming Yu, BZ 1653. 8921 8922Implemented a fix to disable unknown GPEs (2nd version). Now always 8923disable 8924the GPE, even if ACPICA thinks that that it is already disabled. It is 8925possible that the AML or some other code has enabled the GPE unbeknownst 8926to 8927the ACPICA code. 8928 8929Fixed a problem with the Field operator where zero-length fields would 8930return 8931an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 8932ASL 8933field declarations in Field(), BankField(), and IndexField(). BZ 10606. 8934 8935Implemented a fix for the Load operator, now load the table at the 8936namespace 8937root. This reverts a change introduced in version 20071019. The table is 8938now 8939loaded at the namespace root even though this goes against the ACPI 8940specification. This provides compatibility with other ACPI 8941implementations. 8942The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 8943Ming. 8944 8945Fixed a problem where ACPICA would not Load() tables with unusual 8946signatures. 8947Now ignore ACPI table signature for Load() operator. Only "SSDT" is 8948acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 8949Therefore, signature validation is worthless. Apparently MS ACPI accepts 8950such 8951signatures, ACPICA must be compatible. BZ 10454. 8952 8953Fixed a possible negative array index in AcpiUtValidateException. Added 8954NULL 8955fields to the exception string arrays to eliminate a -1 subtraction on 8956the 8957SubStatus field. 8958 8959Updated the debug tracking macros to reduce overall code and data size. 8960Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 8961instead of pointers to static strings. Jan Beulich and Bob Moore. 8962 8963Implemented argument count checking in control method invocation via 8964AcpiEvaluateObject. Now emit an error if too few arguments, warning if 8965too 8966many. This applies only to extern programmatic control method execution, 8967not 8968method-to-method calls within the AML. Lin Ming. 8969 8970Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 8971no 8972longer needed, especially with the removal of 16-bit support. It was 8973replaced 8974mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 8975bit 8976on 897732/64-bit platforms is required. 8978 8979Added the C const qualifier for appropriate string constants -- mostly 8980MODULE_NAME and printf format strings. Jan Beulich. 8981 8982Example Code and Data Size: These are the sizes for the OS-independent 8983acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8984debug version of the code includes the debug output trace mechanism and 8985has a 8986much larger code and data size. 8987 8988 Previous Release: 8989 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8990 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8991 Current Release: 8992 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8993 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8994 89952) iASL Compiler/Disassembler and Tools: 8996 8997Implemented ACPI table revision ID validation in the disassembler. Zero 8998is 8999always invalid. For DSDTs, the ID controls the interpreter integer width. 90001 9001means 32-bit and this is unusual. 2 or greater is 64-bit. 9002 9003---------------------------------------- 900421 March 2008. Summary of changes for version 20080321: 9005 90061) ACPI CA Core Subsystem: 9007 9008Implemented an additional change to the GPE support in order to suppress 9009spurious or stray GPEs. The AcpiEvDisableGpe function will now 9010permanently 9011disable incoming GPEs that are neither enabled nor disabled -- meaning 9012that 9013the GPE is unknown to the system. This should prevent future interrupt 9014floods 9015from that GPE. BZ 6217 (Zhang Rui) 9016 9017Fixed a problem where NULL package elements were not returned to the 9018AcpiEvaluateObject interface correctly. The element was simply ignored 9019instead of returning a NULL ACPI_OBJECT package element, potentially 9020causing 9021a buffer overflow and/or confusing the caller who expected a fixed number 9022of 9023elements. BZ 10132 (Lin Ming, Bob Moore) 9024 9025Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 9026Dword, 9027Qword), Field, BankField, and IndexField operators when invoked from 9028inside 9029an executing control method. In this case, these operators created 9030namespace 9031nodes that were incorrectly left marked as permanent nodes instead of 9032temporary nodes. This could cause a problem if there is race condition 9033between an exiting control method and a running namespace walk. (Reported 9034by 9035Linn Crosetto) 9036 9037Fixed a problem where the CreateField and CreateXXXField operators would 9038incorrectly allow duplicate names (the name of the field) with no 9039exception 9040generated. 9041 9042Implemented several changes for Notify handling. Added support for new 9043Notify 9044values (ACPI 2.0+) and improved the Notify debug output. Notify on 9045PowerResource objects is no longer allowed, as per the ACPI 9046specification. 9047(Bob Moore, Zhang Rui) 9048 9049All Reference Objects returned via the AcpiEvaluateObject interface are 9050now 9051marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 9052for 9053NULL objects - either NULL package elements or unresolved named 9054references. 9055 9056Fixed a problem where an extraneous debug message was produced for 9057package 9058objects (when debugging enabled). The message "Package List length larger 9059than NumElements count" is now produced in the correct case, and is now 9060an 9061error message rather than a debug message. Added a debug message for the 9062opposite case, where NumElements is larger than the Package List (the 9063package 9064will be padded out with NULL elements as per the ACPI spec.) 9065 9066Implemented several improvements for the output of the ASL "Debug" object 9067to 9068clarify and keep all data for a given object on one output line. 9069 9070Fixed two size calculation issues with the variable-length Start 9071Dependent 9072resource descriptor. 9073 9074Example Code and Data Size: These are the sizes for the OS-independent 9075acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9076debug version of the code includes the debug output trace mechanism and 9077has 9078a much larger code and data size. 9079 9080 Previous Release: 9081 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9082 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9083 Current Release: 9084 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9085 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9086 90872) iASL Compiler/Disassembler and Tools: 9088 9089Fixed a problem with the use of the Switch operator where execution of 9090the 9091containing method by multiple concurrent threads could cause an 9092AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 9093actual Switch opcode, it must be simulated with local named temporary 9094variables and if/else pairs. The solution chosen was to mark any method 9095that 9096uses Switch as Serialized, thus preventing multiple thread entries. BZ 9097469. 9098 9099---------------------------------------- 910013 February 2008. Summary of changes for version 20080213: 9101 91021) ACPI CA Core Subsystem: 9103 9104Implemented another MS compatibility design change for GPE/Notify 9105handling. 9106GPEs are now cleared/enabled asynchronously to allow all pending notifies 9107to 9108complete first. It is expected that the OSL will queue the enable request 9109behind all pending notify requests (may require changes to the local host 9110OSL 9111in AcpiOsExecute). Alexey Starikovskiy. 9112 9113Fixed a problem where buffer and package objects passed as arguments to a 9114control method via the external AcpiEvaluateObject interface could cause 9115an 9116AE_AML_INTERNAL exception depending on the order and type of operators 9117executed by the target control method. 9118 9119Fixed a problem where resource descriptor size optimization could cause a 9120problem when a _CRS resource template is passed to a _SRS method. The 9121_SRS 9122resource template must use the same descriptors (with the same size) as 9123returned from _CRS. This change affects the following resource 9124descriptors: 9125IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 91269487) 9127 9128Fixed a problem where a CopyObject to RegionField, BankField, and 9129IndexField 9130objects did not perform an implicit conversion as it should. These types 9131must 9132retain their initial type permanently as per the ACPI specification. 9133However, 9134a CopyObject to all other object types should not perform an implicit 9135conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 9136 9137Fixed a problem with the AcpiGetDevices interface where the mechanism to 9138match device CIDs did not examine the entire list of available CIDs, but 9139instead aborted on the first non-matching CID. Andrew Patterson. 9140 9141Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 9142was 9143inadvertently changed to return a 16-bit value instead of a 32-bit value, 9144truncating the upper dword of a 64-bit value. This macro is only used to 9145display debug output, so no incorrect calculations were made. Also, 9146reimplemented the macro so that a 64-bit shift is not performed by 9147inefficient compilers. 9148 9149Added missing va_end statements that should correspond with each va_start 9150statement. 9151 9152Example Code and Data Size: These are the sizes for the OS-independent 9153acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9154debug version of the code includes the debug output trace mechanism and 9155has 9156a much larger code and data size. 9157 9158 Previous Release: 9159 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9160 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9161 Current Release: 9162 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9163 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9164 91652) iASL Compiler/Disassembler and Tools: 9166 9167Implemented full disassembler support for the following new ACPI tables: 9168BERT, EINJ, and ERST. Implemented partial disassembler support for the 9169complicated HEST table. These tables support the Windows Hardware Error 9170Architecture (WHEA). 9171 9172---------------------------------------- 917323 January 2008. Summary of changes for version 20080123: 9174 91751) ACPI CA Core Subsystem: 9176 9177Added the 2008 copyright to all module headers and signons. This affects 9178virtually every file in the ACPICA core subsystem, the iASL compiler, and 9179the tools/utilities. 9180 9181Fixed a problem with the SizeOf operator when used with Package and 9182Buffer 9183objects. These objects have deferred execution for some arguments, and 9184the 9185execution is now completed before the SizeOf is executed. This problem 9186caused 9187unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 9188BZ 91899558 9190 9191Implemented an enhancement to the interpreter "slack mode". In the 9192absence 9193of 9194an explicit return or an implicitly returned object from the last 9195executed 9196opcode, a control method will now implicitly return an integer of value 0 9197for 9198Microsoft compatibility. (Lin Ming) BZ 392 9199 9200Fixed a problem with the Load operator where an exception was not 9201returned 9202in 9203the case where the table is already loaded. (Lin Ming) BZ 463 9204 9205Implemented support for the use of DDBHandles as an Indexed Reference, as 9206per 9207the ACPI spec. (Lin Ming) BZ 486 9208 9209Implemented support for UserTerm (Method invocation) for the Unload 9210operator 9211as per the ACPI spec. (Lin Ming) BZ 580 9212 9213Fixed a problem with the LoadTable operator where the OemId and 9214OemTableId 9215input strings could cause unexpected failures if they were shorter than 9216the 9217maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 9218 9219Implemented support for UserTerm (Method invocation) for the Unload 9220operator 9221as per the ACPI spec. (Lin Ming) BZ 580 9222 9223Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 9224HEST, 9225IBFT, UEFI, WDAT. Disassembler support is forthcoming. 9226 9227Example Code and Data Size: These are the sizes for the OS-independent 9228acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9229debug version of the code includes the debug output trace mechanism and 9230has 9231a much larger code and data size. 9232 9233 Previous Release: 9234 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9235 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9236 Current Release: 9237 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9238 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9239 92402) iASL Compiler/Disassembler and Tools: 9241 9242Implemented support in the disassembler for checksum validation on 9243incoming 9244binary DSDTs and SSDTs. If incorrect, a message is displayed within the 9245table 9246header dump at the start of the disassembly. 9247 9248Implemented additional debugging information in the namespace listing 9249file 9250created during compilation. In addition to the namespace hierarchy, the 9251full 9252pathname to each namespace object is displayed. 9253 9254Fixed a problem with the disassembler where invalid ACPI tables could 9255cause 9256faults or infinite loops. 9257 9258Fixed an unexpected parse error when using the optional "parameter types" 9259list in a control method declaration. (Lin Ming) BZ 397 9260 9261Fixed a problem where two External declarations with the same name did 9262not 9263cause an error (Lin Ming) BZ 509 9264 9265Implemented support for full TermArgs (adding Argx, Localx and method 9266invocation) for the ParameterData parameter to the LoadTable operator. 9267(Lin 9268Ming) BZ 583,587 9269 9270---------------------------------------- 927119 December 2007. Summary of changes for version 20071219: 9272 92731) ACPI CA Core Subsystem: 9274 9275Implemented full support for deferred execution for the TermArg string 9276arguments for DataTableRegion. This enables forward references and full 9277operand resolution for the three string arguments. Similar to 9278OperationRegion 9279deferred argument execution.) Lin Ming. BZ 430 9280 9281Implemented full argument resolution support for the BankValue argument 9282to 9283BankField. Previously, only constants were supported, now any TermArg may 9284be 9285used. Lin Ming BZ 387, 393 9286 9287Fixed a problem with AcpiGetDevices where the search of a branch of the 9288device tree could be terminated prematurely. In accordance with the ACPI 9289specification, the search down the current branch is terminated if a 9290device 9291is both not present and not functional (instead of just not present.) 9292Yakui 9293Zhao. 9294 9295Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 9296if 9297the underlying AML code changed the GPE enable registers. Now, any 9298unknown 9299incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 9300disabled 9301instead of simply ignored. Rui Zhang. 9302 9303Fixed a problem with Index Fields where the Index register was 9304incorrectly 9305limited to a maximum of 32 bits. Now any size may be used. 9306 9307Fixed a couple memory leaks associated with "implicit return" objects 9308when 9309the AML Interpreter slack mode is enabled. Lin Ming BZ 349 9310 9311Example Code and Data Size: These are the sizes for the OS-independent 9312acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9313debug version of the code includes the debug output trace mechanism and 9314has 9315a much larger code and data size. 9316 9317 Previous Release: 9318 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9319 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9320 Current Release: 9321 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9322 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9323 9324---------------------------------------- 932514 November 2007. Summary of changes for version 20071114: 9326 93271) ACPI CA Core Subsystem: 9328 9329Implemented event counters for each of the Fixed Events, the ACPI SCI 9330(interrupt) itself, and control methods executed. Named 9331AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 9332These 9333should be useful for debugging and statistics. 9334 9335Implemented a new external interface, AcpiGetStatistics, to retrieve the 9336contents of the various event counters. Returns the current values for 9337AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 9338AcpiMethodCount. The interface can be expanded in the future if new 9339counters 9340are added. Device drivers should use this interface rather than access 9341the 9342counters directly. 9343 9344Fixed a problem with the FromBCD and ToBCD operators. With some 9345compilers, 9346the ShortDivide function worked incorrectly, causing problems with the 9347BCD 9348functions with large input values. A truncation from 64-bit to 32-bit 9349inadvertently occurred. Internal BZ 435. Lin Ming 9350 9351Fixed a problem with Index references passed as method arguments. 9352References 9353passed as arguments to control methods were dereferenced immediately 9354(before 9355control was passed to the called method). The references are now 9356correctly 9357passed directly to the called method. BZ 5389. Lin Ming 9358 9359Fixed a problem with CopyObject used in conjunction with the Index 9360operator. 9361The reference was incorrectly dereferenced before the copy. The reference 9362is 9363now correctly copied. BZ 5391. Lin Ming 9364 9365Fixed a problem with Control Method references within Package objects. 9366These 9367references are now correctly generated. This completes the package 9368construction overhaul that began in version 20071019. 9369 9370Example Code and Data Size: These are the sizes for the OS-independent 9371acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9372debug version of the code includes the debug output trace mechanism and 9373has 9374a much larger code and data size. 9375 9376 Previous Release: 9377 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9378 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9379 Current Release: 9380 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9381 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9382 9383 93842) iASL Compiler/Disassembler and Tools: 9385 9386The AcpiExec utility now installs handlers for all of the predefined 9387Operation Region types. New types supported are: PCI_Config, CMOS, and 9388PCIBARTarget. 9389 9390Fixed a problem with the 64-bit version of AcpiExec where the extended 9391(64- 9392bit) address fields for the DSDT and FACS within the FADT were not being 9393used, causing truncation of the upper 32-bits of these addresses. Lin 9394Ming 9395and Bob Moore 9396 9397---------------------------------------- 939819 October 2007. Summary of changes for version 20071019: 9399 94001) ACPI CA Core Subsystem: 9401 9402Fixed a problem with the Alias operator when the target of the alias is a 9403named ASL operator that opens a new scope -- Scope, Device, 9404PowerResource, 9405Processor, and ThermalZone. In these cases, any children of the original 9406operator could not be accessed via the alias, potentially causing 9407unexpected 9408AE_NOT_FOUND exceptions. (BZ 9067) 9409 9410Fixed a problem with the Package operator where all named references were 9411created as object references and left otherwise unresolved. According to 9412the 9413ACPI specification, a Package can only contain Data Objects or references 9414to 9415control methods. The implication is that named references to Data Objects 9416(Integer, Buffer, String, Package, BufferField, Field) should be resolved 9417immediately upon package creation. This is the approach taken with this 9418change. References to all other named objects (Methods, Devices, Scopes, 9419etc.) are all now properly created as reference objects. (BZ 5328) 9420 9421Reverted a change to Notify handling that was introduced in version 942220070508. This version changed the Notify handling from asynchronous to 9423fully synchronous (Device driver Notify handling with respect to the 9424Notify 9425ASL operator). It was found that this change caused more problems than it 9426solved and was removed by most users. 9427 9428Fixed a problem with the Increment and Decrement operators where the type 9429of 9430the target object could be unexpectedly and incorrectly changed. (BZ 353) 9431Lin Ming. 9432 9433Fixed a problem with the Load and LoadTable operators where the table 9434location within the namespace was ignored. Instead, the table was always 9435loaded into the root or current scope. Lin Ming. 9436 9437Fixed a problem with the Load operator when loading a table from a buffer 9438object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 9439 9440Fixed a problem with the Debug object where a store of a DdbHandle 9441reference 9442object to the Debug object could cause a fault. 9443 9444Added a table checksum verification for the Load operator, in the case 9445where 9446the load is from a buffer. (BZ 578). 9447 9448Implemented additional parameter validation for the LoadTable operator. 9449The 9450length of the input strings SignatureString, OemIdString, and OemTableId 9451are 9452now checked for maximum lengths. (BZ 582) Lin Ming. 9453 9454Example Code and Data Size: These are the sizes for the OS-independent 9455acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9456debug version of the code includes the debug output trace mechanism and 9457has 9458a much larger code and data size. 9459 9460 Previous Release: 9461 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9462 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9463 Current Release: 9464 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9465 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9466 9467 94682) iASL Compiler/Disassembler: 9469 9470Fixed a problem where if a single file was specified and the file did not 9471exist, no error message was emitted. (Introduced with wildcard support in 9472version 20070917.) 9473 9474---------------------------------------- 947519 September 2007. Summary of changes for version 20070919: 9476 94771) ACPI CA Core Subsystem: 9478 9479Designed and implemented new external interfaces to install and remove 9480handlers for ACPI table-related events. Current events that are defined 9481are 9482LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 9483they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 9484AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 9485 9486Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 9487(acpi_serialized option on Linux) could cause some systems to hang during 9488initialization. (Bob Moore) BZ 8171 9489 9490Fixed a problem where objects of certain types (Device, ThermalZone, 9491Processor, PowerResource) can be not found if they are declared and 9492referenced from within the same control method (Lin Ming) BZ 341 9493 9494Example Code and Data Size: These are the sizes for the OS-independent 9495acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9496debug version of the code includes the debug output trace mechanism and 9497has 9498a much larger code and data size. 9499 9500 Previous Release: 9501 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9502 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9503 Current Release: 9504 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9505 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9506 9507 95082) iASL Compiler/Disassembler: 9509 9510Implemented support to allow multiple files to be compiled/disassembled 9511in 9512a 9513single invocation. This includes command line wildcard support for both 9514the 9515Windows and Unix versions of the compiler. This feature simplifies the 9516disassembly and compilation of multiple ACPI tables in a single 9517directory. 9518 9519---------------------------------------- 952008 May 2007. Summary of changes for version 20070508: 9521 95221) ACPI CA Core Subsystem: 9523 9524Implemented a Microsoft compatibility design change for the handling of 9525the 9526Notify AML operator. Previously, notify handlers were dispatched and 9527executed completely asynchronously in a deferred thread. The new design 9528still executes the notify handlers in a different thread, but the 9529original 9530thread that executed the Notify() now waits at a synchronization point 9531for 9532the notify handler to complete. Some machines depend on a synchronous 9533Notify 9534operator in order to operate correctly. 9535 9536Implemented support to allow Package objects to be passed as method 9537arguments to the external AcpiEvaluateObject interface. Previously, this 9538would return the AE_NOT_IMPLEMENTED exception. This feature had not been 9539implemented since there were no reserved control methods that required it 9540until recently. 9541 9542Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 9543that 9544contained invalid non-zero values in reserved fields could cause later 9545failures because these fields have meaning in later revisions of the 9546FADT. 9547For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 9548fields 9549are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 9550 9551Fixed a problem where the Global Lock handle was not properly updated if 9552a 9553thread that acquired the Global Lock via executing AML code then 9554attempted 9555to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 9556Joe 9557Liu. 9558 9559Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 9560could be corrupted if the interrupt being removed was at the head of the 9561list. Reported by Linn Crosetto. 9562 9563Example Code and Data Size: These are the sizes for the OS-independent 9564acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9565debug version of the code includes the debug output trace mechanism and 9566has 9567a much larger code and data size. 9568 9569 Previous Release: 9570 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9571 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9572 Current Release: 9573 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9574 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9575 9576---------------------------------------- 957720 March 2007. Summary of changes for version 20070320: 9578 95791) ACPI CA Core Subsystem: 9580 9581Implemented a change to the order of interpretation and evaluation of AML 9582operand objects within the AML interpreter. The interpreter now evaluates 9583operands in the order that they appear in the AML stream (and the 9584corresponding ASL code), instead of in the reverse order (after the 9585entire 9586operand list has been parsed). The previous behavior caused several 9587subtle 9588incompatibilities with the Microsoft AML interpreter as well as being 9589somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 9590 9591Implemented a change to the ACPI Global Lock support. All interfaces to 9592the 9593global lock now allow the same thread to acquire the lock multiple times. 9594This affects the AcpiAcquireGlobalLock external interface to the global 9595lock 9596as well as the internal use of the global lock to support AML fields -- a 9597control method that is holding the global lock can now simultaneously 9598access 9599AML fields that require global lock protection. Previously, in both 9600cases, 9601this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 9602to 9603AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 9604Controller. There is no change to the behavior of the AML Acquire 9605operator, 9606as this can already be used to acquire a mutex multiple times by the same 9607thread. BZ 8066. With assistance from Alexey Starikovskiy. 9608 9609Fixed a problem where invalid objects could be referenced in the AML 9610Interpreter after error conditions. During operand evaluation, ensure 9611that 9612the internal "Return Object" field is cleared on error and only valid 9613pointers are stored there. Caused occasional access to deleted objects 9614that 9615resulted in "large reference count" warning messages. Valery Podrezov. 9616 9617Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 9618on 9619deeply nested control method invocations. BZ 7873, local BZ 487. Valery 9620Podrezov. 9621 9622Fixed an internal problem with the handling of result objects on the 9623interpreter result stack. BZ 7872. Valery Podrezov. 9624 9625Removed obsolete code that handled the case where AML_NAME_OP is the 9626target 9627of a reference (Reference.Opcode). This code was no longer necessary. BZ 96287874. Valery Podrezov. 9629 9630Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 9631was 9632a 9633remnant from the previously discontinued 16-bit support. 9634 9635Example Code and Data Size: These are the sizes for the OS-independent 9636acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9637debug version of the code includes the debug output trace mechanism and 9638has 9639a much larger code and data size. 9640 9641 Previous Release: 9642 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9643 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9644 Current Release: 9645 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9646 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9647 9648---------------------------------------- 964926 January 2007. Summary of changes for version 20070126: 9650 96511) ACPI CA Core Subsystem: 9652 9653Added the 2007 copyright to all module headers and signons. This affects 9654virtually every file in the ACPICA core subsystem, the iASL compiler, and 9655the utilities. 9656 9657Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 9658during a table load. A bad pointer was passed in the case where the DSDT 9659is 9660overridden, causing a fault in this case. 9661 9662Example Code and Data Size: These are the sizes for the OS-independent 9663acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9664debug version of the code includes the debug output trace mechanism and 9665has 9666a much larger code and data size. 9667 9668 Previous Release: 9669 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9670 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9671 Current Release: 9672 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9673 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9674 9675---------------------------------------- 967615 December 2006. Summary of changes for version 20061215: 9677 96781) ACPI CA Core Subsystem: 9679 9680Support for 16-bit ACPICA has been completely removed since it is no 9681longer 9682necessary and it clutters the code. All 16-bit macros, types, and 9683conditional compiles have been removed, cleaning up and simplifying the 9684code 9685across the entire subsystem. DOS support is no longer needed since the 9686bootable Linux firmware kit is now available. 9687 9688The handler for the Global Lock is now removed during AcpiTerminate to 9689enable a clean subsystem restart, via the implementation of the 9690AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 9691HP) 9692 9693Implemented enhancements to the multithreading support within the 9694debugger 9695to enable improved multithreading debugging and evaluation of the 9696subsystem. 9697(Valery Podrezov) 9698 9699Debugger: Enhanced the Statistics/Memory command to emit the total 9700(maximum) 9701memory used during the execution, as well as the maximum memory consumed 9702by 9703each of the various object types. (Valery Podrezov) 9704 9705Example Code and Data Size: These are the sizes for the OS-independent 9706acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9707debug version of the code includes the debug output trace mechanism and 9708has 9709a much larger code and data size. 9710 9711 Previous Release: 9712 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9713 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9714 Current Release: 9715 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9716 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9717 9718 97192) iASL Compiler/Disassembler and Tools: 9720 9721AcpiExec: Implemented a new option (-m) to display full memory use 9722statistics upon subsystem/program termination. (Valery Podrezov) 9723 9724---------------------------------------- 972509 November 2006. Summary of changes for version 20061109: 9726 97271) ACPI CA Core Subsystem: 9728 9729Optimized the Load ASL operator in the case where the source operand is 9730an 9731operation region. Simply map the operation region memory, instead of 9732performing a bytewise read. (Region must be of type SystemMemory, see 9733below.) 9734 9735Fixed the Load ASL operator for the case where the source operand is a 9736region field. A buffer object is also allowed as the source operand. BZ 9737480 9738 9739Fixed a problem where the Load ASL operator allowed the source operand to 9740be 9741an operation region of any type. It is now restricted to regions of type 9742SystemMemory, as per the ACPI specification. BZ 481 9743 9744Additional cleanup and optimizations for the new Table Manager code. 9745 9746AcpiEnable will now fail if all of the required ACPI tables are not 9747loaded 9748(FADT, FACS, DSDT). BZ 477 9749 9750Added #pragma pack(8/4) to acobject.h to ensure that the structures in 9751this 9752header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 9753manually optimized to be aligned and will not work if it is byte-packed. 9754 9755Example Code and Data Size: These are the sizes for the OS-independent 9756acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9757debug version of the code includes the debug output trace mechanism and 9758has 9759a much larger code and data size. 9760 9761 Previous Release: 9762 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9763 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9764 Current Release: 9765 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9766 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9767 9768 97692) iASL Compiler/Disassembler and Tools: 9770 9771Fixed a problem where the presence of the _OSI predefined control method 9772within complex expressions could cause an internal compiler error. 9773 9774AcpiExec: Implemented full region support for multiple address spaces. 9775SpaceId is now part of the REGION object. BZ 429 9776 9777---------------------------------------- 977811 October 2006. Summary of changes for version 20061011: 9779 97801) ACPI CA Core Subsystem: 9781 9782Completed an AML interpreter performance enhancement for control method 9783execution. Previously a 2-pass parse/execution, control methods are now 9784completely parsed and executed in a single pass. This improves overall 9785interpreter performance by ~25%, reduces code size, and reduces CPU stack 9786use. (Valery Podrezov + interpreter changes in version 20051202 that 9787eliminated namespace loading during the pass one parse.) 9788 9789Implemented _CID support for PCI Root Bridge detection. If the _HID does 9790not 9791match the predefined PCI Root Bridge IDs, the _CID list (if present) is 9792now 9793obtained and also checked for an ID match. 9794 9795Implemented additional support for the PCI _ADR execution: upsearch until 9796a 9797device scope is found before executing _ADR. This allows PCI_Config 9798operation regions to be declared locally within control methods 9799underneath 9800PCI device objects. 9801 9802Fixed a problem with a possible race condition between threads executing 9803AcpiWalkNamespace and the AML interpreter. This condition was removed by 9804modifying AcpiWalkNamespace to (by default) ignore all temporary 9805namespace 9806entries created during any concurrent control method execution. An 9807additional namespace race condition is known to exist between 9808AcpiWalkNamespace and the Load/Unload ASL operators and is still under 9809investigation. 9810 9811Restructured the AML ParseLoop function, breaking it into several 9812subfunctions in order to reduce CPU stack use and improve 9813maintainability. 9814(Mikhail Kouzmich) 9815 9816AcpiGetHandle: Fix for parameter validation to detect invalid 9817combinations 9818of prefix handle and pathname. BZ 478 9819 9820Example Code and Data Size: These are the sizes for the OS-independent 9821acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9822debug version of the code includes the debug output trace mechanism and 9823has 9824a much larger code and data size. 9825 9826 Previous Release: 9827 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9828 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9829 Current Release: 9830 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9831 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9832 98332) iASL Compiler/Disassembler and Tools: 9834 9835Ported the -g option (get local ACPI tables) to the new ACPICA Table 9836Manager 9837to restore original behavior. 9838 9839---------------------------------------- 984027 September 2006. Summary of changes for version 20060927: 9841 98421) ACPI CA Core Subsystem: 9843 9844Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 9845These functions now use a spinlock for mutual exclusion and the interrupt 9846level indication flag is not needed. 9847 9848Fixed a problem with the Global Lock where the lock could appear to be 9849obtained before it is actually obtained. The global lock semaphore was 9850inadvertently created with one unit instead of zero units. (BZ 464) 9851Fiodor 9852Suietov. 9853 9854Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 9855during 9856a read from a buffer or region field. (BZ 458) Fiodor Suietov. 9857 9858Example Code and Data Size: These are the sizes for the OS-independent 9859acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9860debug version of the code includes the debug output trace mechanism and 9861has 9862a much larger code and data size. 9863 9864 Previous Release: 9865 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9866 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9867 Current Release: 9868 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9869 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9870 9871 98722) iASL Compiler/Disassembler and Tools: 9873 9874Fixed a compilation problem with the pre-defined Resource Descriptor 9875field 9876names where an "object does not exist" error could be incorrectly 9877generated 9878if the parent ResourceTemplate pathname places the template within a 9879different namespace scope than the current scope. (BZ 7212) 9880 9881Fixed a problem where the compiler could hang after syntax errors 9882detected 9883in an ElseIf construct. (BZ 453) 9884 9885Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 9886operator. An incorrect output filename was produced when this parameter 9887was 9888a null string (""). Now, the original input filename is used as the AML 9889output filename, with an ".aml" extension. 9890 9891Implemented a generic batch command mode for the AcpiExec utility 9892(execute 9893any AML debugger command) (Valery Podrezov). 9894 9895---------------------------------------- 989612 September 2006. Summary of changes for version 20060912: 9897 98981) ACPI CA Core Subsystem: 9899 9900Enhanced the implementation of the "serialized mode" of the interpreter 9901(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 9902specified, instead of creating a serialization semaphore per control 9903method, 9904the interpreter lock is simply no longer released before a blocking 9905operation during control method execution. This effectively makes the AML 9906Interpreter single-threaded. The overhead of a semaphore per-method is 9907eliminated. 9908 9909Fixed a regression where an error was no longer emitted if a control 9910method 9911attempts to create 2 objects of the same name. This once again returns 9912AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 9913that 9914will dynamically serialize the control method to possible prevent future 9915errors. (BZ 440) 9916 9917Integrated a fix for a problem with PCI Express HID detection in the PCI 9918Config Space setup procedure. (BZ 7145) 9919 9920Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 9921AcpiHwInitialize function - the FADT registers are now validated when the 9922table is loaded. 9923 9924Added two new warnings during FADT verification - 1) if the FADT is 9925larger 9926than the largest known FADT version, and 2) if there is a mismatch 9927between 9928a 992932-bit block address and the 64-bit X counterpart (when both are non- 9930zero.) 9931 9932Example Code and Data Size: These are the sizes for the OS-independent 9933acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9934debug version of the code includes the debug output trace mechanism and 9935has 9936a much larger code and data size. 9937 9938 Previous Release: 9939 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9940 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9941 Current Release: 9942 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9943 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9944 9945 99462) iASL Compiler/Disassembler and Tools: 9947 9948Fixed a problem with the implementation of the Switch() operator where 9949the 9950temporary variable was declared too close to the actual Switch, instead 9951of 9952at method level. This could cause a problem if the Switch() operator is 9953within a while loop, causing an error on the second iteration. (BZ 460) 9954 9955Disassembler - fix for error emitted for unknown type for target of scope 9956operator. Now, ignore it and continue. 9957 9958Disassembly of an FADT now verifies the input FADT and reports any errors 9959found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 9960 9961Disassembly of raw data buffers with byte initialization data now 9962prefixes 9963each output line with the current buffer offset. 9964 9965Disassembly of ASF! table now includes all variable-length data fields at 9966the end of some of the subtables. 9967 9968The disassembler now emits a comment if a buffer appears to be a 9969ResourceTemplate, but cannot be disassembled as such because the EndTag 9970does 9971not appear at the very end of the buffer. 9972 9973AcpiExec - Added the "-t" command line option to enable the serialized 9974mode 9975of the AML interpreter. 9976 9977---------------------------------------- 997831 August 2006. Summary of changes for version 20060831: 9979 99801) ACPI CA Core Subsystem: 9981 9982Miscellaneous fixes for the Table Manager: 9983- Correctly initialize internal common FADT for all 64-bit "X" fields 9984- Fixed a couple table mapping issues during table load 9985- Fixed a couple alignment issues for IA64 9986- Initialize input array to zero in AcpiInitializeTables 9987- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 9988AcpiGetTableByIndex 9989 9990Change for GPE support: when a "wake" GPE is received, all wake GPEs are 9991now 9992immediately disabled to prevent the waking GPE from firing again and to 9993prevent other wake GPEs from interrupting the wake process. 9994 9995Added the AcpiGpeCount global that tracks the number of processed GPEs, 9996to 9997be used for debugging systems with a large number of ACPI interrupts. 9998 9999Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 10000both the ACPICA headers and the disassembler. 10001 10002Example Code and Data Size: These are the sizes for the OS-independent 10003acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10004debug version of the code includes the debug output trace mechanism and 10005has 10006a much larger code and data size. 10007 10008 Previous Release: 10009 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10010 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10011 Current Release: 10012 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10013 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10014 10015 100162) iASL Compiler/Disassembler and Tools: 10017 10018Disassembler support for the DMAR ACPI table. 10019 10020---------------------------------------- 1002123 August 2006. Summary of changes for version 20060823: 10022 100231) ACPI CA Core Subsystem: 10024 10025The Table Manager component has been completely redesigned and 10026reimplemented. The new design is much simpler, and reduces the overall 10027code 10028and data size of the kernel-resident ACPICA by approximately 5%. Also, it 10029is 10030now possible to obtain the ACPI tables very early during kernel 10031initialization, even before dynamic memory management is initialized. 10032(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 10033 10034Obsolete ACPICA interfaces: 10035 10036- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 10037init 10038time). 10039- AcpiLoadTable: Not needed. 10040- AcpiUnloadTable: Not needed. 10041 10042New ACPICA interfaces: 10043 10044- AcpiInitializeTables: Must be called before the table manager can be 10045used. 10046- AcpiReallocateRootTable: Used to transfer the root table to dynamically 10047allocated memory after it becomes available. 10048- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 10049tables 10050in the RSDT/XSDT. 10051 10052Other ACPICA changes: 10053 10054- AcpiGetTableHeader returns the actual mapped table header, not a copy. 10055Use 10056AcpiOsUnmapMemory to free this mapping. 10057- AcpiGetTable returns the actual mapped table. The mapping is managed 10058internally and must not be deleted by the caller. Use of this interface 10059causes no additional dynamic memory allocation. 10060- AcpiFindRootPointer: Support for physical addressing has been 10061eliminated, 10062it appeared to be unused. 10063- The interface to AcpiOsMapMemory has changed to be consistent with the 10064other allocation interfaces. 10065- The interface to AcpiOsGetRootPointer has changed to eliminate 10066unnecessary 10067parameters. 10068- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1006964- 10070bit platforms. Was previously 64 bits on all platforms. 10071- The interface to the ACPI Global Lock acquire/release macros have 10072changed 10073slightly since ACPICA no longer keeps a local copy of the FACS with a 10074constructed pointer to the actual global lock. 10075 10076Porting to the new table manager: 10077 10078- AcpiInitializeTables: Must be called once, and can be called anytime 10079during the OS initialization process. It allows the host to specify an 10080area 10081of memory to be used to store the internal version of the RSDT/XSDT (root 10082table). This allows the host to access ACPI tables before memory 10083management 10084is initialized and running. 10085- AcpiReallocateRootTable: Can be called after memory management is 10086running 10087to copy the root table to a dynamically allocated array, freeing up the 10088scratch memory specified in the call to AcpiInitializeTables. 10089- AcpiSubsystemInitialize: This existing interface is independent of the 10090Table Manager, and does not have to be called before the Table Manager 10091can 10092be used, it only must be called before the rest of ACPICA can be used. 10093- ACPI Tables: Some changes have been made to the names and structure of 10094the 10095actbl.h and actbl1.h header files and may require changes to existing 10096code. 10097For example, bitfields have been completely removed because of their lack 10098of 10099portability across C compilers. 10100- Update interfaces to the Global Lock acquire/release macros if local 10101versions are used. (see acwin.h) 10102 10103Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 10104 10105New files: tbfind.c 10106 10107Example Code and Data Size: These are the sizes for the OS-independent 10108acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10109debug version of the code includes the debug output trace mechanism and 10110has 10111a much larger code and data size. 10112 10113 Previous Release: 10114 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10115 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10116 Current Release: 10117 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10118 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10119 10120 101212) iASL Compiler/Disassembler and Tools: 10122 10123No changes for this release. 10124 10125---------------------------------------- 1012621 July 2006. Summary of changes for version 20060721: 10127 101281) ACPI CA Core Subsystem: 10129 10130The full source code for the ASL test suite used to validate the iASL 10131compiler and the ACPICA core subsystem is being released with the ACPICA 10132source for the first time. The source is contained in a separate package 10133and 10134consists of over 1100 files that exercise all ASL/AML operators. The 10135package 10136should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 10137Fiodor 10138Suietov) 10139 10140Completed a new design and implementation for support of the ACPI Global 10141Lock. On the OS side, the global lock is now treated as a standard AML 10142mutex. Previously, multiple OS threads could "acquire" the global lock 10143simultaneously. However, this could cause the BIOS to be starved out of 10144the 10145lock - especially in cases such as the Embedded Controller driver where 10146there is a tight coupling between the OS and the BIOS. 10147 10148Implemented an optimization for the ACPI Global Lock interrupt mechanism. 10149The Global Lock interrupt handler no longer queues the execution of a 10150separate thread to signal the global lock semaphore. Instead, the 10151semaphore 10152is signaled directly from the interrupt handler. 10153 10154Implemented support within the AML interpreter for package objects that 10155contain a larger AML length (package list length) than the package 10156element 10157count. In this case, the length of the package is truncated to match the 10158package element count. Some BIOS code apparently modifies the package 10159length 10160on the fly, and this change supports this behavior. Provides 10161compatibility 10162with the MS AML interpreter. (With assistance from Fiodor Suietov) 10163 10164Implemented a temporary fix for the BankValue parameter of a Bank Field 10165to 10166support all constant values, now including the Zero and One opcodes. 10167Evaluation of this parameter must eventually be converted to a full 10168TermArg 10169evaluation. A not-implemented error is now returned (temporarily) for 10170non- 10171constant values for this parameter. 10172 10173Fixed problem reports (Fiodor Suietov) integrated: 10174- Fix for premature object deletion after CopyObject on Operation Region 10175(BZ 10176350) 10177 10178Example Code and Data Size: These are the sizes for the OS-independent 10179acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10180debug version of the code includes the debug output trace mechanism and 10181has 10182a much larger code and data size. 10183 10184 Previous Release: 10185 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 10186 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 10187 Current Release: 10188 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10189 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10190 10191 101922) iASL Compiler/Disassembler and Tools: 10193 10194No changes for this release. 10195 10196---------------------------------------- 1019707 July 2006. Summary of changes for version 20060707: 10198 101991) ACPI CA Core Subsystem: 10200 10201Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 10202that do not allow the initialization of address pointers within packed 10203structures - even though the hardware itself may support misaligned 10204transfers. Some of the debug data structures are packed by default to 10205minimize size. 10206 10207Added an error message for the case where AcpiOsGetThreadId() returns 10208zero. 10209A non-zero value is required by the core ACPICA code to ensure the proper 10210operation of AML mutexes and recursive control methods. 10211 10212The DSDT is now the only ACPI table that determines whether the AML 10213interpreter is in 32-bit or 64-bit mode. Not really a functional change, 10214but 10215the hooks for per-table 32/64 switching have been removed from the code. 10216A 10217clarification to the ACPI specification is forthcoming in ACPI 3.0B. 10218 10219Fixed a possible leak of an OwnerID in the error path of 10220AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 10221deletion to a single place in AcpiTbUninstallTable to correct possible 10222leaks 10223when using the AcpiTbDeleteTablesByType interface (with assistance from 10224Lance Ortiz.) 10225 10226Fixed a problem with Serialized control methods where the semaphore 10227associated with the method could be over-signaled after multiple method 10228invocations. 10229 10230Fixed two issues with the locking of the internal namespace data 10231structure. 10232Both the Unload() operator and AcpiUnloadTable interface now lock the 10233namespace during the namespace deletion associated with the table unload 10234(with assistance from Linn Crosetto.) 10235 10236Fixed problem reports (Valery Podrezov) integrated: 10237- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 10238 10239Fixed problem reports (Fiodor Suietov) integrated: 10240- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 10241- On Address Space handler deletion, needless deactivation call (BZ 374) 10242- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 10243375) 10244- Possible memory leak, Notify sub-objects of Processor, Power, 10245ThermalZone 10246(BZ 376) 10247- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 10248- Minimum Length of RSDT should be validated (BZ 379) 10249- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 10250Handler (BZ (380) 10251- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 10252loaded 10253(BZ 381) 10254 10255Example Code and Data Size: These are the sizes for the OS-independent 10256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10257debug version of the code includes the debug output trace mechanism and 10258has 10259a much larger code and data size. 10260 10261 Previous Release: 10262 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10263 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10264 Current Release: 10265 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10266 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10267 10268 102692) iASL Compiler/Disassembler and Tools: 10270 10271Fixed problem reports: 10272Compiler segfault when ASL contains a long (>1024) String declaration (BZ 10273436) 10274 10275---------------------------------------- 1027623 June 2006. Summary of changes for version 20060623: 10277 102781) ACPI CA Core Subsystem: 10279 10280Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 10281allows the type to be customized to the host OS for improved efficiency 10282(since a spinlock is usually a very small object.) 10283 10284Implemented support for "ignored" bits in the ACPI registers. According 10285to 10286the ACPI specification, these bits should be preserved when writing the 10287registers via a read/modify/write cycle. There are 3 bits preserved in 10288this 10289manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 10290 10291Implemented the initial deployment of new OSL mutex interfaces. Since 10292some 10293host operating systems have separate mutex and semaphore objects, this 10294feature was requested. The base code now uses mutexes (and the new mutex 10295interfaces) wherever a binary semaphore was used previously. However, for 10296the current release, the mutex interfaces are defined as macros to map 10297them 10298to the existing semaphore interfaces. Therefore, no OSL changes are 10299required 10300at this time. (See acpiosxf.h) 10301 10302Fixed several problems with the support for the control method SyncLevel 10303parameter. The SyncLevel now works according to the ACPI specification 10304and 10305in concert with the Mutex SyncLevel parameter, since the current 10306SyncLevel 10307is a property of the executing thread. Mutual exclusion for control 10308methods 10309is now implemented with a mutex instead of a semaphore. 10310 10311Fixed three instances of the use of the C shift operator in the bitfield 10312support code (exfldio.c) to avoid the use of a shift value larger than 10313the 10314target data width. The behavior of C compilers is undefined in this case 10315and 10316can cause unpredictable results, and therefore the case must be detected 10317and 10318avoided. (Fiodor Suietov) 10319 10320Added an info message whenever an SSDT or OEM table is loaded dynamically 10321via the Load() or LoadTable() ASL operators. This should improve 10322debugging 10323capability since it will show exactly what tables have been loaded 10324(beyond 10325the tables present in the RSDT/XSDT.) 10326 10327Example Code and Data Size: These are the sizes for the OS-independent 10328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10329debug version of the code includes the debug output trace mechanism and 10330has 10331a much larger code and data size. 10332 10333 Previous Release: 10334 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10335 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10336 Current Release: 10337 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10338 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10339 10340 103412) iASL Compiler/Disassembler and Tools: 10342 10343No changes for this release. 10344 10345---------------------------------------- 1034608 June 2006. Summary of changes for version 20060608: 10347 103481) ACPI CA Core Subsystem: 10349 10350Converted the locking mutex used for the ACPI hardware to a spinlock. 10351This 10352change should eliminate all problems caused by attempting to acquire a 10353semaphore at interrupt level, and it means that all ACPICA external 10354interfaces that directly access the ACPI hardware can be safely called 10355from 10356interrupt level. OSL code that implements the semaphore interfaces should 10357be 10358able to eliminate any workarounds for being called at interrupt level. 10359 10360Fixed a regression introduced in 20060526 where the ACPI device 10361initialization could be prematurely aborted with an AE_NOT_FOUND if a 10362device 10363did not have an optional _INI method. 10364 10365Fixed an IndexField issue where a write to the Data Register should be 10366limited in size to the AccessSize (width) of the IndexField itself. (BZ 10367433, 10368Fiodor Suietov) 10369 10370Fixed problem reports (Valery Podrezov) integrated: 10371- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 10372 10373Fixed problem reports (Fiodor Suietov) integrated: 10374- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 10375 10376Removed four global mutexes that were obsolete and were no longer being 10377used. 10378 10379Example Code and Data Size: These are the sizes for the OS-independent 10380acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10381debug version of the code includes the debug output trace mechanism and 10382has 10383a much larger code and data size. 10384 10385 Previous Release: 10386 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10387 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10388 Current Release: 10389 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10390 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10391 10392 103932) iASL Compiler/Disassembler and Tools: 10394 10395Fixed a fault when using -g option (get tables from registry) on Windows 10396machines. 10397 10398Fixed problem reports integrated: 10399- Generate error if CreateField NumBits parameter is zero. (BZ 405) 10400- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 10401Suietov) 10402- Global table revision override (-r) is ignored (BZ 413) 10403 10404---------------------------------------- 1040526 May 2006. Summary of changes for version 20060526: 10406 104071) ACPI CA Core Subsystem: 10408 10409Restructured, flattened, and simplified the internal interfaces for 10410namespace object evaluation - resulting in smaller code, less CPU stack 10411use, 10412and fewer interfaces. (With assistance from Mikhail Kouzmich) 10413 10414Fixed a problem with the CopyObject operator where the first parameter 10415was 10416not typed correctly for the parser, interpreter, compiler, and 10417disassembler. 10418Caused various errors and unexpected behavior. 10419 10420Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 10421produced incorrect results with some C compilers. Since the behavior of C 10422compilers when the shift value is larger than the datatype width is 10423apparently not well defined, the interpreter now detects this condition 10424and 10425simply returns zero as expected in all such cases. (BZ 395) 10426 10427Fixed problem reports (Valery Podrezov) integrated: 10428- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 10429- Allow interpreter to handle nested method declarations (BZ 5361) 10430 10431Fixed problem reports (Fiodor Suietov) integrated: 10432- AcpiTerminate doesn't free debug memory allocation list objects (BZ 10433355) 10434- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 10435356) 10436- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 10437- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 10438- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 10439- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 10440- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 10441- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 10442- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 10443365) 10444- Status of the Global Initialization Handler call not used (BZ 366) 10445- Incorrect object parameter to Global Initialization Handler (BZ 367) 10446 10447Example Code and Data Size: These are the sizes for the OS-independent 10448acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10449debug version of the code includes the debug output trace mechanism and 10450has 10451a much larger code and data size. 10452 10453 Previous Release: 10454 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10455 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10456 Current Release: 10457 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10458 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10459 10460 104612) iASL Compiler/Disassembler and Tools: 10462 10463Modified the parser to allow the names IO, DMA, and IRQ to be used as 10464namespace identifiers with no collision with existing resource descriptor 10465macro names. This provides compatibility with other ASL compilers and is 10466most useful for disassembly/recompilation of existing tables without 10467parse 10468errors. (With assistance from Thomas Renninger) 10469 10470Disassembler: fixed an incorrect disassembly problem with the 10471DataTableRegion and CopyObject operators. Fixed a possible fault during 10472disassembly of some Alias operators. 10473 10474---------------------------------------- 1047512 May 2006. Summary of changes for version 20060512: 10476 104771) ACPI CA Core Subsystem: 10478 10479Replaced the AcpiOsQueueForExecution interface with a new interface named 10480AcpiOsExecute. The major difference is that the new interface does not 10481have 10482a Priority parameter, this appeared to be useless and has been replaced 10483by 10484a 10485Type parameter. The Type tells the host what type of execution is being 10486requested, such as global lock handler, notify handler, GPE handler, etc. 10487This allows the host to queue and execute the request as appropriate for 10488the 10489request type, possibly using different work queues and different 10490priorities 10491for the various request types. This enables fixes for multithreading 10492deadlock problems such as BZ #5534, and will require changes to all 10493existing 10494OS interface layers. (Alexey Starikovskiy and Bob Moore) 10495 10496Fixed a possible memory leak associated with the support for the so- 10497called 10498"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 10499Suietov) 10500 10501Fixed a problem with the Load() operator where a table load from an 10502operation region could overwrite an internal table buffer by up to 7 10503bytes 10504and cause alignment faults on IPF systems. (With assistance from Luming 10505Yu) 10506 10507Example Code and Data Size: These are the sizes for the OS-independent 10508acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10509debug version of the code includes the debug output trace mechanism and 10510has 10511a much larger code and data size. 10512 10513 Previous Release: 10514 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10515 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10516 Current Release: 10517 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10518 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10519 10520 10521 105222) iASL Compiler/Disassembler and Tools: 10523 10524Disassembler: Implemented support to cross reference the internal 10525namespace 10526and automatically generate ASL External() statements for symbols not 10527defined 10528within the current table being disassembled. This will simplify the 10529disassembly and recompilation of interdependent tables such as SSDTs 10530since 10531these statements will no longer have to be added manually. 10532 10533Disassembler: Implemented experimental support to automatically detect 10534invocations of external control methods and generate appropriate 10535External() 10536statements. This is problematic because the AML cannot be correctly 10537parsed 10538until the number of arguments for each control method is known. 10539Currently, 10540standalone method invocations and invocations as the source operand of a 10541Store() statement are supported. 10542 10543Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 10544LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 10545LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 10546more readable and likely closer to the original ASL source. 10547 10548---------------------------------------- 1054921 April 2006. Summary of changes for version 20060421: 10550 105511) ACPI CA Core Subsystem: 10552 10553Removed a device initialization optimization introduced in 20051216 where 10554the _STA method was not run unless an _INI was also present for the same 10555device. This optimization could cause problems because it could allow 10556_INI 10557methods to be run within a not-present device subtree. (If a not-present 10558device had no _INI, _STA would not be run, the not-present status would 10559not 10560be discovered, and the children of the device would be incorrectly 10561traversed.) 10562 10563Implemented a new _STA optimization where namespace subtrees that do not 10564contain _INI are identified and ignored during device initialization. 10565Selectively running _STA can significantly improve boot time on large 10566machines (with assistance from Len Brown.) 10567 10568Implemented support for the device initialization case where the returned 10569_STA flags indicate a device not-present but functioning. In this case, 10570_INI 10571is not run, but the device children are examined for presence, as per the 10572ACPI specification. 10573 10574Implemented an additional change to the IndexField support in order to 10575conform to MS behavior. The value written to the Index Register is not 10576simply a byte offset, it is a byte offset in units of the access width of 10577the parent Index Field. (Fiodor Suietov) 10578 10579Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 10580interface is called during the creation of all AML operation regions, and 10581allows the host OS to exert control over what addresses it will allow the 10582AML code to access. Operation Regions whose addresses are disallowed will 10583cause a runtime exception when they are actually accessed (will not 10584affect 10585or abort table loading.) See oswinxf or osunixxf for an example 10586implementation. 10587 10588Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 10589interface allows the host OS to match the various "optional" 10590interface/behavior strings for the _OSI predefined control method as 10591appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 10592for an example implementation. 10593 10594Restructured and corrected various problems in the exception handling 10595code 10596paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 10597(with assistance from Takayoshi Kochi.) 10598 10599Modified the Linux source converter to ignore quoted string literals 10600while 10601converting identifiers from mixed to lower case. This will correct 10602problems 10603with the disassembler and other areas where such strings must not be 10604modified. 10605 10606The ACPI_FUNCTION_* macros no longer require quotes around the function 10607name. This allows the Linux source converter to convert the names, now 10608that 10609the converter ignores quoted strings. 10610 10611Example Code and Data Size: These are the sizes for the OS-independent 10612acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10613debug version of the code includes the debug output trace mechanism and 10614has 10615a much larger code and data size. 10616 10617 Previous Release: 10618 10619 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10620 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10621 Current Release: 10622 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10623 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10624 10625 106262) iASL Compiler/Disassembler and Tools: 10627 10628Implemented 3 new warnings for iASL, and implemented multiple warning 10629levels 10630(w2 flag). 10631 106321) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 10633not 10634WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 10635check for the possible timeout, a warning is issued. 10636 106372) Useless operators: If an ASL operator does not specify an optional 10638target 10639operand and it also does not use the function return value from the 10640operator, a warning is issued since the operator effectively does 10641nothing. 10642 106433) Unreferenced objects: If a namespace object is created, but never 10644referenced, a warning is issued. This is a warning level 2 since there 10645are 10646cases where this is ok, such as when a secondary table is loaded that 10647uses 10648the unreferenced objects. Even so, care is taken to only flag objects 10649that 10650don't look like they will ever be used. For example, the reserved methods 10651(starting with an underscore) are usually not referenced because it is 10652expected that the OS will invoke them. 10653 10654---------------------------------------- 1065531 March 2006. Summary of changes for version 20060331: 10656 106571) ACPI CA Core Subsystem: 10658 10659Implemented header file support for the following additional ACPI tables: 10660ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 10661support, 10662all current and known ACPI tables are now defined in the ACPICA headers 10663and 10664are available for use by device drivers and other software. 10665 10666Implemented support to allow tables that contain ACPI names with invalid 10667characters to be loaded. Previously, this would cause the table load to 10668fail, but since there are several known cases of such tables on existing 10669machines, this change was made to enable ACPI support for them. Also, 10670this 10671matches the behavior of the Microsoft ACPI implementation. 10672 10673Fixed a couple regressions introduced during the memory optimization in 10674the 1067520060317 release. The namespace node definition required additional 10676reorganization and an internal datatype that had been changed to 8-bit 10677was 10678restored to 32-bit. (Valery Podrezov) 10679 10680Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 10681could be passed through to AcpiOsReleaseObject which is unexpected. Such 10682null pointers are now trapped and ignored, matching the behavior of the 10683previous implementation before the deployment of AcpiOsReleaseObject. 10684(Valery Podrezov, Fiodor Suietov) 10685 10686Fixed a memory mapping leak during the deletion of a SystemMemory 10687operation 10688region where a cached memory mapping was not deleted. This became a 10689noticeable problem for operation regions that are defined within 10690frequently 10691used control methods. (Dana Meyers) 10692 10693Reorganized the ACPI table header files into two main files: one for the 10694ACPI tables consumed by the ACPICA core, and another for the 10695miscellaneous 10696ACPI tables that are consumed by the drivers and other software. The 10697various 10698FADT definitions were merged into one common section and three different 10699tables (ACPI 1.0, 1.0+, and 2.0) 10700 10701Example Code and Data Size: These are the sizes for the OS-independent 10702acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10703debug version of the code includes the debug output trace mechanism and 10704has 10705a much larger code and data size. 10706 10707 Previous Release: 10708 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10709 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10710 Current Release: 10711 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10712 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10713 10714 107152) iASL Compiler/Disassembler and Tools: 10716 10717Disassembler: Implemented support to decode and format all non-AML ACPI 10718tables (tables other than DSDTs and SSDTs.) This includes the new tables 10719added to the ACPICA headers, therefore all current and known ACPI tables 10720are 10721supported. 10722 10723Disassembler: The change to allow ACPI names with invalid characters also 10724enables the disassembly of such tables. Invalid characters within names 10725are 10726changed to '*' to make the name printable; the iASL compiler will still 10727generate an error for such names, however, since this is an invalid ACPI 10728character. 10729 10730Implemented an option for AcpiXtract (-a) to extract all tables found in 10731the 10732input file. The default invocation extracts only the DSDTs and SSDTs. 10733 10734Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 10735makefile for the AcpiXtract utility. 10736 10737---------------------------------------- 1073817 March 2006. Summary of changes for version 20060317: 10739 107401) ACPI CA Core Subsystem: 10741 10742Implemented the use of a cache object for all internal namespace nodes. 10743Since there are about 1000 static nodes in a typical system, this will 10744decrease memory use for cache implementations that minimize per- 10745allocation 10746overhead (such as a slab allocator.) 10747 10748Removed the reference count mechanism for internal namespace nodes, since 10749it 10750was deemed unnecessary. This reduces the size of each namespace node by 10751about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 10752case, 10753and 32 bytes for the 64-bit case. 10754 10755Optimized several internal data structures to reduce object size on 64- 10756bit 10757platforms by packing data within the 64-bit alignment. This includes the 10758frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 10759instances corresponding to the namespace objects. 10760 10761Added two new strings for the predefined _OSI method: "Windows 2001.1 10762SP1" 10763and "Windows 2006". 10764 10765Split the allocation tracking mechanism out to a separate file, from 10766utalloc.c to uttrack.c. This mechanism appears to be only useful for 10767application-level code. Kernels may wish to not include uttrack.c in 10768distributions. 10769 10770Removed all remnants of the obsolete ACPI_REPORT_* macros and the 10771associated 10772code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 10773macros.) 10774 10775Code and Data Size: These are the sizes for the acpica.lib produced by 10776the 10777Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10778ACPI 10779driver or OSPM code. The debug version of the code includes the debug 10780output 10781trace mechanism and has a much larger code and data size. Note that these 10782values will vary depending on the efficiency of the compiler and the 10783compiler options used during generation. 10784 10785 Previous Release: 10786 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10787 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10788 Current Release: 10789 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10790 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10791 10792 107932) iASL Compiler/Disassembler and Tools: 10794 10795Implemented an ANSI C version of the acpixtract utility. This version 10796will 10797automatically extract the DSDT and all SSDTs from the input acpidump text 10798file and dump the binary output to separate files. It can also display a 10799summary of the input file including the headers for each table found and 10800will extract any single ACPI table, with any signature. (See 10801source/tools/acpixtract) 10802 10803---------------------------------------- 1080410 March 2006. Summary of changes for version 20060310: 10805 108061) ACPI CA Core Subsystem: 10807 10808Tagged all external interfaces to the subsystem with the new 10809ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 10810assist 10811kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 10812macro. The default definition is NULL. 10813 10814Added the ACPI_THREAD_ID type for the return value from 10815AcpiOsGetThreadId. 10816This allows the host to define this as necessary to simplify kernel 10817integration. The default definition is ACPI_NATIVE_UINT. 10818 10819Fixed two interpreter problems related to error processing, the deletion 10820of 10821objects, and placing invalid pointers onto the internal operator result 10822stack. BZ 6028, 6151 (Valery Podrezov) 10823 10824Increased the reference count threshold where a warning is emitted for 10825large 10826reference counts in order to eliminate unnecessary warnings on systems 10827with 10828large namespaces (especially 64-bit.) Increased the value from 0x400 to 108290x800. 10830 10831Due to universal disagreement as to the meaning of the 'c' in the 10832calloc() 10833function, the ACPI_MEM_CALLOCATE macro has been renamed to 10834ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 10835ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 10836ACPI_FREE. 10837 10838Code and Data Size: These are the sizes for the acpica.lib produced by 10839the 10840Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10841ACPI 10842driver or OSPM code. The debug version of the code includes the debug 10843output 10844trace mechanism and has a much larger code and data size. Note that these 10845values will vary depending on the efficiency of the compiler and the 10846compiler options used during generation. 10847 10848 Previous Release: 10849 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10850 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10851 Current Release: 10852 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10853 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10854 10855 108562) iASL Compiler/Disassembler: 10857 10858Disassembler: implemented support for symbolic resource descriptor 10859references. If a CreateXxxxField operator references a fixed offset 10860within 10861a 10862resource descriptor, a name is assigned to the descriptor and the offset 10863is 10864translated to the appropriate resource tag and pathname. The addition of 10865this support brings the disassembled code very close to the original ASL 10866source code and helps eliminate run-time errors when the disassembled 10867code 10868is modified (and recompiled) in such a way as to invalidate the original 10869fixed offsets. 10870 10871Implemented support for a Descriptor Name as the last parameter to the 10872ASL 10873Register() macro. This parameter was inadvertently left out of the ACPI 10874specification, and will be added for ACPI 3.0b. 10875 10876Fixed a problem where the use of the "_OSI" string (versus the full path 10877"\_OSI") caused an internal compiler error. ("No back ptr to op") 10878 10879Fixed a problem with the error message that occurs when an invalid string 10880is 10881used for a _HID object (such as one with an embedded asterisk: 10882"*PNP010A".) 10883The correct message is now displayed. 10884 10885---------------------------------------- 1088617 February 2006. Summary of changes for version 20060217: 10887 108881) ACPI CA Core Subsystem: 10889 10890Implemented a change to the IndexField support to match the behavior of 10891the 10892Microsoft AML interpreter. The value written to the Index register is now 10893a 10894byte offset, no longer an index based upon the width of the Data 10895register. 10896This should fix IndexField problems seen on some machines where the Data 10897register is not exactly one byte wide. The ACPI specification will be 10898clarified on this point. 10899 10900Fixed a problem where several resource descriptor types could overrun the 10901internal descriptor buffer due to size miscalculation: VendorShort, 10902VendorLong, and Interrupt. This was noticed on IA64 machines, but could 10903affect all platforms. 10904 10905Fixed a problem where individual resource descriptors were misaligned 10906within 10907the internal buffer, causing alignment faults on IA64 platforms. 10908 10909Code and Data Size: These are the sizes for the acpica.lib produced by 10910the 10911Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10912ACPI 10913driver or OSPM code. The debug version of the code includes the debug 10914output 10915trace mechanism and has a much larger code and data size. Note that these 10916values will vary depending on the efficiency of the compiler and the 10917compiler options used during generation. 10918 10919 Previous Release: 10920 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10921 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10922 Current Release: 10923 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10924 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10925 10926 109272) iASL Compiler/Disassembler: 10928 10929Implemented support for new reserved names: _WDG and _WED are Microsoft 10930extensions for Windows Instrumentation Management, _TDL is a new ACPI- 10931defined method (Throttling Depth Limit.) 10932 10933Fixed a problem where a zero-length VendorShort or VendorLong resource 10934descriptor was incorrectly emitted as a descriptor of length one. 10935 10936---------------------------------------- 1093710 February 2006. Summary of changes for version 20060210: 10938 109391) ACPI CA Core Subsystem: 10940 10941Removed a couple of extraneous ACPI_ERROR messages that appeared during 10942normal execution. These became apparent after the conversion from 10943ACPI_DEBUG_PRINT. 10944 10945Fixed a problem where the CreateField operator could hang if the BitIndex 10946or 10947NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 10948 10949Fixed a problem where a DeRefOf operation on a buffer object incorrectly 10950failed with an exception. This also fixes a couple of related RefOf and 10951DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 10952 10953Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 10954of 10955AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 10956BZ 109575480) 10958 10959Implemented a memory cleanup at the end of the execution of each 10960iteration 10961of an AML While() loop, preventing the accumulation of outstanding 10962objects. 10963(Valery Podrezov, BZ 5427) 10964 10965Eliminated a chunk of duplicate code in the object resolution code. 10966(Valery 10967Podrezov, BZ 5336) 10968 10969Fixed several warnings during the 64-bit code generation. 10970 10971The AcpiSrc source code conversion tool now inserts one line of 10972whitespace 10973after an if() statement that is followed immediately by a comment, 10974improving 10975readability of the Linux code. 10976 10977Code and Data Size: The current and previous library sizes for the core 10978subsystem are shown below. These are the code and data sizes for the 10979acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10980These 10981values do not include any ACPI driver or OSPM code. The debug version of 10982the 10983code includes the debug output trace mechanism and has a much larger code 10984and data size. Note that these values will vary depending on the 10985efficiency 10986of the compiler and the compiler options used during generation. 10987 10988 Previous Release: 10989 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10990 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10991 Current Release: 10992 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10993 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10994 10995 109962) iASL Compiler/Disassembler: 10997 10998Fixed a problem with the disassembly of a BankField operator with a 10999complex 11000expression for the BankValue parameter. 11001 11002---------------------------------------- 1100327 January 2006. Summary of changes for version 20060127: 11004 110051) ACPI CA Core Subsystem: 11006 11007Implemented support in the Resource Manager to allow unresolved 11008namestring 11009references within resource package objects for the _PRT method. This 11010support 11011is in addition to the previously implemented unresolved reference support 11012within the AML parser. If the interpreter slack mode is enabled, these 11013unresolved references will be passed through to the caller as a NULL 11014package 11015entry. 11016 11017Implemented and deployed new macros and functions for error and warning 11018messages across the subsystem. These macros are simpler and generate less 11019code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 11020ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 11021macros remain defined to allow ACPI drivers time to migrate to the new 11022macros. 11023 11024Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 11025the 11026Acquire/Release Lock OSL interfaces. 11027 11028Fixed a problem where Alias ASL operators are sometimes not correctly 11029resolved, in both the interpreter and the iASL compiler. 11030 11031Fixed several problems with the implementation of the 11032ConcatenateResTemplate 11033ASL operator. As per the ACPI specification, zero length buffers are now 11034treated as a single EndTag. One-length buffers always cause a fatal 11035exception. Non-zero length buffers that do not end with a full 2-byte 11036EndTag 11037cause a fatal exception. 11038 11039Fixed a possible structure overwrite in the AcpiGetObjectInfo external 11040interface. (With assistance from Thomas Renninger) 11041 11042Code and Data Size: The current and previous library sizes for the core 11043subsystem are shown below. These are the code and data sizes for the 11044acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11045These 11046values do not include any ACPI driver or OSPM code. The debug version of 11047the 11048code includes the debug output trace mechanism and has a much larger code 11049and data size. Note that these values will vary depending on the 11050efficiency 11051of the compiler and the compiler options used during generation. 11052 11053 Previous Release: 11054 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11055 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11056 Current Release: 11057 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11058 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11059 11060 110612) iASL Compiler/Disassembler: 11062 11063Fixed an internal error that was generated for any forward references to 11064ASL 11065Alias objects. 11066 11067---------------------------------------- 1106813 January 2006. Summary of changes for version 20060113: 11069 110701) ACPI CA Core Subsystem: 11071 11072Added 2006 copyright to all module headers and signons. This affects 11073virtually every file in the ACPICA core subsystem, iASL compiler, and the 11074utilities. 11075 11076Enhanced the ACPICA error reporting in order to simplify user migration 11077to 11078the non-debug version of ACPICA. Replaced all instances of the 11079ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 11080debug 11081levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 11082respectively. This preserves all error and warning messages in the non- 11083debug 11084version of the ACPICA code (this has been referred to as the "debug lite" 11085option.) Over 200 cases were converted to create a total of over 380 11086error/warning messages across the ACPICA code. This increases the code 11087and 11088data size of the default non-debug version of the code somewhat (about 1108913K), 11090but all error/warning reporting may be disabled if desired (and code 11091eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 11092configuration option. The size of the debug version of ACPICA remains 11093about 11094the same. 11095 11096Fixed a memory leak within the AML Debugger "Set" command. One object was 11097not properly deleted for every successful invocation of the command. 11098 11099Code and Data Size: The current and previous library sizes for the core 11100subsystem are shown below. These are the code and data sizes for the 11101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11102These 11103values do not include any ACPI driver or OSPM code. The debug version of 11104the 11105code includes the debug output trace mechanism and has a much larger code 11106and data size. Note that these values will vary depending on the 11107efficiency 11108of the compiler and the compiler options used during generation. 11109 11110 Previous Release: 11111 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11112 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11113 Current Release: 11114 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11115 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11116 11117 111182) iASL Compiler/Disassembler: 11119 11120The compiler now officially supports the ACPI 3.0a specification that was 11121released on December 30, 2005. (Specification is available at 11122www.acpi.info) 11123 11124---------------------------------------- 1112516 December 2005. Summary of changes for version 20051216: 11126 111271) ACPI CA Core Subsystem: 11128 11129Implemented optional support to allow unresolved names within ASL Package 11130objects. A null object is inserted in the package when a named reference 11131cannot be located in the current namespace. Enabled via the interpreter 11132slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 11133machines 11134that contain such code. 11135 11136Implemented an optimization to the initialization sequence that can 11137improve 11138boot time. During ACPI device initialization, the _STA method is now run 11139if 11140and only if the _INI method exists. The _STA method is used to determine 11141if 11142the device is present; An _INI can only be run if _STA returns present, 11143but 11144it is a waste of time to run the _STA method if the _INI does not exist. 11145(Prototype and assistance from Dong Wei) 11146 11147Implemented use of the C99 uintptr_t for the pointer casting macros if it 11148is 11149available in the current compiler. Otherwise, the default (void *) cast 11150is 11151used as before. 11152 11153Fixed some possible memory leaks found within the execution path of the 11154Break, Continue, If, and CreateField operators. (Valery Podrezov) 11155 11156Fixed a problem introduced in the 20051202 release where an exception is 11157generated during method execution if a control method attempts to declare 11158another method. 11159 11160Moved resource descriptor string constants that are used by both the AML 11161disassembler and AML debugger to the common utilities directory so that 11162these components are independent. 11163 11164Implemented support in the AcpiExec utility (-e switch) to globally 11165ignore 11166exceptions during control method execution (method is not aborted.) 11167 11168Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 11169generation. 11170 11171Code and Data Size: The current and previous library sizes for the core 11172subsystem are shown below. These are the code and data sizes for the 11173acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11174These 11175values do not include any ACPI driver or OSPM code. The debug version of 11176the 11177code includes the debug output trace mechanism and has a much larger code 11178and data size. Note that these values will vary depending on the 11179efficiency 11180of the compiler and the compiler options used during generation. 11181 11182 Previous Release: 11183 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11184 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11185 Current Release: 11186 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11187 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11188 11189 111902) iASL Compiler/Disassembler: 11191 11192Fixed a problem where a CPU stack overflow fault could occur if a 11193recursive 11194method call was made from within a Return statement. 11195 11196---------------------------------------- 1119702 December 2005. Summary of changes for version 20051202: 11198 111991) ACPI CA Core Subsystem: 11200 11201Modified the parsing of control methods to no longer create namespace 11202objects during the first pass of the parse. Objects are now created only 11203during the execute phase, at the moment the namespace creation operator 11204is 11205encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 11206This 11207should eliminate ALREADY_EXISTS exceptions seen on some machines where 11208reentrant control methods are protected by an AML mutex. The mutex will 11209now 11210correctly block multiple threads from attempting to create the same 11211object 11212more than once. 11213 11214Increased the number of available Owner Ids for namespace object tracking 11215from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 11216on 11217some machines with a large number of ACPI tables (either static or 11218dynamic). 11219 11220Fixed a problem with the AcpiExec utility where a fault could occur when 11221the 11222-b switch (batch mode) is used. 11223 11224Enhanced the namespace dump routine to output the owner ID for each 11225namespace object. 11226 11227Code and Data Size: The current and previous library sizes for the core 11228subsystem are shown below. These are the code and data sizes for the 11229acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11230These 11231values do not include any ACPI driver or OSPM code. The debug version of 11232the 11233code includes the debug output trace mechanism and has a much larger code 11234and data size. Note that these values will vary depending on the 11235efficiency 11236of the compiler and the compiler options used during generation. 11237 11238 Previous Release: 11239 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11240 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11241 Current Release: 11242 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11243 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11244 11245 112462) iASL Compiler/Disassembler: 11247 11248Fixed a parse error during compilation of certain Switch/Case constructs. 11249To 11250simplify the parse, the grammar now allows for multiple Default 11251statements 11252and this error is now detected and flagged during the analysis phase. 11253 11254Disassembler: The disassembly now includes the contents of the original 11255table header within a comment at the start of the file. This includes the 11256name and version of the original ASL compiler. 11257 11258---------------------------------------- 1125917 November 2005. Summary of changes for version 20051117: 11260 112611) ACPI CA Core Subsystem: 11262 11263Fixed a problem in the AML parser where the method thread count could be 11264decremented below zero if any errors occurred during the method parse 11265phase. 11266This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 11267machines. 11268This also fixed a related regression with the mechanism that detects and 11269corrects methods that cannot properly handle reentrancy (related to the 11270deployment of the new OwnerId mechanism.) 11271 11272Eliminated the pre-parsing of control methods (to detect errors) during 11273table load. Related to the problem above, this was causing unwind issues 11274if 11275any errors occurred during the parse, and it seemed to be overkill. A 11276table 11277load should not be aborted if there are problems with any single control 11278method, thus rendering this feature rather pointless. 11279 11280Fixed a problem with the new table-driven resource manager where an 11281internal 11282buffer overflow could occur for small resource templates. 11283 11284Implemented a new external interface, AcpiGetVendorResource. This 11285interface 11286will find and return a vendor-defined resource descriptor within a _CRS 11287or 11288_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 11289Helgaas. 11290 11291Removed the length limit (200) on string objects as per the upcoming ACPI 112923.0A specification. This affects the following areas of the interpreter: 112931) 11294any implicit conversion of a Buffer to a String, 2) a String object 11295result 11296of the ASL Concatentate operator, 3) the String object result of the ASL 11297ToString operator. 11298 11299Fixed a problem in the Windows OS interface layer (OSL) where a 11300WAIT_FOREVER 11301on a semaphore object would incorrectly timeout. This allows the 11302multithreading features of the AcpiExec utility to work properly under 11303Windows. 11304 11305Updated the Linux makefiles for the iASL compiler and AcpiExec to include 11306the recently added file named "utresrc.c". 11307 11308Code and Data Size: The current and previous library sizes for the core 11309subsystem are shown below. These are the code and data sizes for the 11310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11311These 11312values do not include any ACPI driver or OSPM code. The debug version of 11313the 11314code includes the debug output trace mechanism and has a much larger code 11315and data size. Note that these values will vary depending on the 11316efficiency 11317of the compiler and the compiler options used during generation. 11318 11319 Previous Release: 11320 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11321 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11322 Current Release: 11323 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11324 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11325 11326 113272) iASL Compiler/Disassembler: 11328 11329Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 11330specification. For the iASL compiler, this means that string literals 11331within 11332the source ASL can be of any length. 11333 11334Enhanced the listing output to dump the AML code for resource descriptors 11335immediately after the ASL code for each descriptor, instead of in a block 11336at 11337the end of the entire resource template. 11338 11339Enhanced the compiler debug output to dump the entire original parse tree 11340constructed during the parse phase, before any transforms are applied to 11341the 11342tree. The transformed tree is dumped also. 11343 11344---------------------------------------- 1134502 November 2005. Summary of changes for version 20051102: 11346 113471) ACPI CA Core Subsystem: 11348 11349Modified the subsystem initialization sequence to improve GPE support. 11350The 11351GPE initialization has been split into two parts in order to defer 11352execution 11353of the _PRW methods (Power Resources for Wake) until after the hardware 11354is 11355fully initialized and the SCI handler is installed. This allows the _PRW 11356methods to access fields protected by the Global Lock. This will fix 11357systems 11358where a NO_GLOBAL_LOCK exception has been seen during initialization. 11359 11360Converted the ACPI internal object disassemble and display code within 11361the 11362AML debugger to fully table-driven operation, reducing code size and 11363increasing maintainability. 11364 11365Fixed a regression with the ConcatenateResTemplate() ASL operator 11366introduced 11367in the 20051021 release. 11368 11369Implemented support for "local" internal ACPI object types within the 11370debugger "Object" command and the AcpiWalkNamespace external interfaces. 11371These local types include RegionFields, BankFields, IndexFields, Alias, 11372and 11373reference objects. 11374 11375Moved common AML resource handling code into a new file, "utresrc.c". 11376This 11377code is shared by both the Resource Manager and the AML Debugger. 11378 11379Code and Data Size: The current and previous library sizes for the core 11380subsystem are shown below. These are the code and data sizes for the 11381acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11382These 11383values do not include any ACPI driver or OSPM code. The debug version of 11384the 11385code includes the debug output trace mechanism and has a much larger code 11386and data size. Note that these values will vary depending on the 11387efficiency 11388of the compiler and the compiler options used during generation. 11389 11390 Previous Release: 11391 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11392 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11393 Current Release: 11394 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11395 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11396 11397 113982) iASL Compiler/Disassembler: 11399 11400Fixed a problem with very large initializer lists (more than 4000 11401elements) 11402for both Buffer and Package objects where the parse stack could overflow. 11403 11404Enhanced the pre-compile source code scan for non-ASCII characters to 11405ignore 11406characters within comment fields. The scan is now always performed and is 11407no 11408longer optional, detecting invalid characters within a source file 11409immediately rather than during the parse phase or later. 11410 11411Enhanced the ASL grammar definition to force early reductions on all 11412list- 11413style grammar elements so that the overall parse stack usage is greatly 11414reduced. This should improve performance and reduce the possibility of 11415parse 11416stack overflow. 11417 11418Eliminated all reduce/reduce conflicts in the iASL parser generation. 11419Also, 11420with the addition of a %expected statement, the compiler generates from 11421source with no warnings. 11422 11423Fixed a possible segment fault in the disassembler if the input filename 11424does not contain a "dot" extension (Thomas Renninger). 11425 11426---------------------------------------- 1142721 October 2005. Summary of changes for version 20051021: 11428 114291) ACPI CA Core Subsystem: 11430 11431Implemented support for the EM64T and other x86-64 processors. This 11432essentially entails recognizing that these processors support non-aligned 11433memory transfers. Previously, all 64-bit processors were assumed to lack 11434hardware support for non-aligned transfers. 11435 11436Completed conversion of the Resource Manager to nearly full table-driven 11437operation. Specifically, the resource conversion code (convert AML to 11438internal format and the reverse) and the debug code to dump internal 11439resource descriptors are fully table-driven, reducing code and data size 11440and 11441improving maintainability. 11442 11443The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 11444word 11445on 64-bit processors instead of a fixed 32-bit word. (With assistance 11446from 11447Alexey Starikovskiy) 11448 11449Implemented support within the resource conversion code for the Type- 11450Specific byte within the various ACPI 3.0 *WordSpace macros. 11451 11452Fixed some issues within the resource conversion code for the type- 11453specific 11454flags for both Memory and I/O address resource descriptors. For Memory, 11455implemented support for the MTP and TTP flags. For I/O, split the TRS and 11456TTP flags into two separate fields. 11457 11458Code and Data Size: The current and previous library sizes for the core 11459subsystem are shown below. These are the code and data sizes for the 11460acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11461These 11462values do not include any ACPI driver or OSPM code. The debug version of 11463the 11464code includes the debug output trace mechanism and has a much larger code 11465and data size. Note that these values will vary depending on the 11466efficiency 11467of the compiler and the compiler options used during generation. 11468 11469 Previous Release: 11470 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11471 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11472 Current Release: 11473 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11474 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11475 11476 11477 114782) iASL Compiler/Disassembler: 11479 11480Relaxed a compiler restriction that disallowed a ResourceIndex byte if 11481the 11482corresponding ResourceSource string was not also present in a resource 11483descriptor declaration. This restriction caused problems with existing 11484AML/ASL code that includes the Index byte without the string. When such 11485AML 11486was disassembled, it could not be compiled without modification. Further, 11487the modified code created a resource template with a different size than 11488the 11489original, breaking code that used fixed offsets into the resource 11490template 11491buffer. 11492 11493Removed a recent feature of the disassembler to ignore a lone 11494ResourceIndex 11495byte. This byte is now emitted if present so that the exact AML can be 11496reproduced when the disassembled code is recompiled. 11497 11498Improved comments and text alignment for the resource descriptor code 11499emitted by the disassembler. 11500 11501Implemented disassembler support for the ACPI 3.0 AccessSize field within 11502a 11503Register() resource descriptor. 11504 11505---------------------------------------- 1150630 September 2005. Summary of changes for version 20050930: 11507 115081) ACPI CA Core Subsystem: 11509 11510Completed a major overhaul of the Resource Manager code - specifically, 11511optimizations in the area of the AML/internal resource conversion code. 11512The 11513code has been optimized to simplify and eliminate duplicated code, CPU 11514stack 11515use has been decreased by optimizing function parameters and local 11516variables, and naming conventions across the manager have been 11517standardized 11518for clarity and ease of maintenance (this includes function, parameter, 11519variable, and struct/typedef names.) The update may force changes in some 11520driver code, depending on how resources are handled by the host OS. 11521 11522All Resource Manager dispatch and information tables have been moved to a 11523single location for clarity and ease of maintenance. One new file was 11524created, named "rsinfo.c". 11525 11526The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 11527guarantee that the argument is not evaluated twice, making them less 11528prone 11529to macro side-effects. However, since there exists the possibility of 11530additional stack use if a particular compiler cannot optimize them (such 11531as 11532in the debug generation case), the original macros are optionally 11533available. 11534Note that some invocations of the return_VALUE macro may now cause size 11535mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 11536to 11537eliminate these. (From Randy Dunlap) 11538 11539Implemented a new mechanism to enable debug tracing for individual 11540control 11541methods. A new external interface, AcpiDebugTrace, is provided to enable 11542this mechanism. The intent is to allow the host OS to easily enable and 11543disable tracing for problematic control methods. This interface can be 11544easily exposed to a user or debugger interface if desired. See the file 11545psxface.c for details. 11546 11547AcpiUtCallocate will now return a valid pointer if a length of zero is 11548specified - a length of one is used and a warning is issued. This matches 11549the behavior of AcpiUtAllocate. 11550 11551Code and Data Size: The current and previous library sizes for the core 11552subsystem are shown below. These are the code and data sizes for the 11553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11554These 11555values do not include any ACPI driver or OSPM code. The debug version of 11556the 11557code includes the debug output trace mechanism and has a much larger code 11558and data size. Note that these values will vary depending on the 11559efficiency 11560of the compiler and the compiler options used during generation. 11561 11562 Previous Release: 11563 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11564 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11565 Current Release: 11566 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11567 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11568 11569 115702) iASL Compiler/Disassembler: 11571 11572A remark is issued if the effective compile-time length of a package or 11573buffer is zero. Previously, this was a warning. 11574 11575---------------------------------------- 1157616 September 2005. Summary of changes for version 20050916: 11577 115781) ACPI CA Core Subsystem: 11579 11580Fixed a problem within the Resource Manager where support for the Generic 11581Register descriptor was not fully implemented. This descriptor is now 11582fully 11583recognized, parsed, disassembled, and displayed. 11584 11585Completely restructured the Resource Manager code to utilize table-driven 11586dispatch and lookup, eliminating many of the large switch() statements. 11587This 11588reduces overall subsystem code size and code complexity. Affects the 11589resource parsing and construction, disassembly, and debug dump output. 11590 11591Cleaned up and restructured the debug dump output for all resource 11592descriptors. Improved readability of the output and reduced code size. 11593 11594Fixed a problem where changes to internal data structures caused the 11595optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 11596 11597Code and Data Size: The current and previous library sizes for the core 11598subsystem are shown below. These are the code and data sizes for the 11599acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11600These 11601values do not include any ACPI driver or OSPM code. The debug version of 11602the 11603code includes the debug output trace mechanism and has a much larger code 11604and data size. Note that these values will vary depending on the 11605efficiency 11606of the compiler and the compiler options used during generation. 11607 11608 Previous Release: 11609 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11610 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11611 Current Release: 11612 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11613 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11614 11615 116162) iASL Compiler/Disassembler: 11617 11618Updated the disassembler to automatically insert an EndDependentFn() 11619macro 11620into the ASL stream if this macro is missing in the original AML code, 11621simplifying compilation of the resulting ASL module. 11622 11623Fixed a problem in the disassembler where a disassembled ResourceSource 11624string (within a large resource descriptor) was not surrounded by quotes 11625and 11626not followed by a comma, causing errors when the resulting ASL module was 11627compiled. Also, escape sequences within a ResourceSource string are now 11628handled correctly (especially "\\") 11629 11630---------------------------------------- 1163102 September 2005. Summary of changes for version 20050902: 11632 116331) ACPI CA Core Subsystem: 11634 11635Fixed a problem with the internal Owner ID allocation and deallocation 11636mechanisms for control method execution and recursive method invocation. 11637This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 11638messages seen on some systems. Recursive method invocation depth is 11639currently limited to 255. (Alexey Starikovskiy) 11640 11641Completely eliminated all vestiges of support for the "module-level 11642executable code" until this support is fully implemented and debugged. 11643This 11644should eliminate the NO_RETURN_VALUE exceptions seen during table load on 11645some systems that invoke this support. 11646 11647Fixed a problem within the resource manager code where the transaction 11648flags 11649for a 64-bit address descriptor were handled incorrectly in the type- 11650specific flag byte. 11651 11652Consolidated duplicate code within the address descriptor resource 11653manager 11654code, reducing overall subsystem code size. 11655 11656Fixed a fault when using the AML debugger "disassemble" command to 11657disassemble individual control methods. 11658 11659Removed references to the "release_current" directory within the Unix 11660release package. 11661 11662Code and Data Size: The current and previous core subsystem library sizes 11663are shown below. These are the code and data sizes for the acpica.lib 11664produced by the Microsoft Visual C++ 6.0 compiler. These values do not 11665include any ACPI driver or OSPM code. The debug version of the code 11666includes 11667the debug output trace mechanism and has a much larger code and data 11668size. 11669Note that these values will vary depending on the efficiency of the 11670compiler 11671and the compiler options used during generation. 11672 11673 Previous Release: 11674 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11675 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11676 Current Release: 11677 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11678 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11679 11680 116812) iASL Compiler/Disassembler: 11682 11683Implemented an error check for illegal duplicate values in the interrupt 11684and 11685dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 11686Interrupt(). 11687 11688Implemented error checking for the Irq() and IrqNoFlags() macros to 11689detect 11690too many values in the interrupt list (16 max) and invalid values in the 11691list (range 0 - 15) 11692 11693The maximum length string literal within an ASL file is now restricted to 11694200 characters as per the ACPI specification. 11695 11696Fixed a fault when using the -ln option (generate namespace listing). 11697 11698Implemented an error check to determine if a DescriptorName within a 11699resource descriptor has already been used within the current scope. 11700 11701---------------------------------------- 1170215 August 2005. Summary of changes for version 20050815: 11703 117041) ACPI CA Core Subsystem: 11705 11706Implemented a full bytewise compare to determine if a table load request 11707is 11708attempting to load a duplicate table. The compare is performed if the 11709table 11710signatures and table lengths match. This will allow different tables with 11711the same OEM Table ID and revision to be loaded - probably against the 11712ACPI 11713specification, but discovered in the field nonetheless. 11714 11715Added the changes.txt logfile to each of the zipped release packages. 11716 11717Code and Data Size: Current and previous core subsystem library sizes are 11718shown below. These are the code and data sizes for the acpica.lib 11719produced 11720by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11721any ACPI driver or OSPM code. The debug version of the code includes the 11722debug output trace mechanism and has a much larger code and data size. 11723Note 11724that these values will vary depending on the efficiency of the compiler 11725and 11726the compiler options used during generation. 11727 11728 Previous Release: 11729 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11730 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11731 Current Release: 11732 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11733 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11734 11735 117362) iASL Compiler/Disassembler: 11737 11738Fixed a problem where incorrect AML code could be generated for Package 11739objects if optimization is disabled (via the -oa switch). 11740 11741Fixed a problem with where incorrect AML code is generated for variable- 11742length packages when the package length is not specified and the number 11743of 11744initializer values is greater than 255. 11745 11746 11747---------------------------------------- 1174829 July 2005. Summary of changes for version 20050729: 11749 117501) ACPI CA Core Subsystem: 11751 11752Implemented support to ignore an attempt to install/load a particular 11753ACPI 11754table more than once. Apparently there exists BIOS code that repeatedly 11755attempts to load the same SSDT upon certain events. With assistance from 11756Venkatesh Pallipadi. 11757 11758Restructured the main interface to the AML parser in order to correctly 11759handle all exceptional conditions. This will prevent leakage of the 11760OwnerId 11761resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 11762some 11763machines. With assistance from Alexey Starikovskiy. 11764 11765Support for "module level code" has been disabled in this version due to 11766a 11767number of issues that have appeared on various machines. The support can 11768be 11769enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 11770compilation. When the issues are fully resolved, the code will be enabled 11771by 11772default again. 11773 11774Modified the internal functions for debug print support to define the 11775FunctionName parameter as a (const char *) for compatibility with 11776compiler 11777built-in macros such as __FUNCTION__, etc. 11778 11779Linted the entire ACPICA source tree for both 32-bit and 64-bit. 11780 11781Implemented support to display an object count summary for the AML 11782Debugger 11783commands Object and Methods. 11784 11785Code and Data Size: Current and previous core subsystem library sizes are 11786shown below. These are the code and data sizes for the acpica.lib 11787produced 11788by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11789any ACPI driver or OSPM code. The debug version of the code includes the 11790debug output trace mechanism and has a much larger code and data size. 11791Note 11792that these values will vary depending on the efficiency of the compiler 11793and 11794the compiler options used during generation. 11795 11796 Previous Release: 11797 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11798 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11799 Current Release: 11800 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11801 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11802 11803 118042) iASL Compiler/Disassembler: 11805 11806Fixed a regression that appeared in the 20050708 version of the compiler 11807where an error message was inadvertently emitted for invocations of the 11808_OSI 11809reserved control method. 11810 11811---------------------------------------- 1181208 July 2005. Summary of changes for version 20050708: 11813 118141) ACPI CA Core Subsystem: 11815 11816The use of the CPU stack in the debug version of the subsystem has been 11817considerably reduced. Previously, a debug structure was declared in every 11818function that used the debug macros. This structure has been removed in 11819favor of declaring the individual elements as parameters to the debug 11820functions. This reduces the cumulative stack use during nested execution 11821of 11822ACPI function calls at the cost of a small increase in the code size of 11823the 11824debug version of the subsystem. With assistance from Alexey Starikovskiy 11825and 11826Len Brown. 11827 11828Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 11829headers to define a macro that will return the current function name at 11830runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 11831by 11832the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 11833compiler-dependent header, the function name is saved on the CPU stack 11834(one 11835pointer per function.) This mechanism is used because apparently there 11836exists no standard ANSI-C defined macro that that returns the function 11837name. 11838 11839Redesigned and reimplemented the "Owner ID" mechanism used to track 11840namespace objects created/deleted by ACPI tables and control method 11841execution. A bitmap is now used to allocate and free the IDs, thus 11842solving 11843the wraparound problem present in the previous implementation. The size 11844of 11845the namespace node descriptor was reduced by 2 bytes as a result (Alexey 11846Starikovskiy). 11847 11848Removed the UINT32_BIT and UINT16_BIT types that were used for the 11849bitfield 11850flag definitions within the headers for the predefined ACPI tables. These 11851have been replaced by UINT8_BIT in order to increase the code portability 11852of 11853the subsystem. If the use of UINT8 remains a problem, we may be forced to 11854eliminate bitfields entirely because of a lack of portability. 11855 11856Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 11857This 11858is a frequently used function and this improvement increases the 11859performance 11860of the entire subsystem (Alexey Starikovskiy). 11861 11862Fixed several possible memory leaks and the inverse - premature object 11863deletion (Alexey Starikovskiy). 11864 11865Code and Data Size: Current and previous core subsystem library sizes are 11866shown below. These are the code and data sizes for the acpica.lib 11867produced 11868by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11869any ACPI driver or OSPM code. The debug version of the code includes the 11870debug output trace mechanism and has a much larger code and data size. 11871Note 11872that these values will vary depending on the efficiency of the compiler 11873and 11874the compiler options used during generation. 11875 11876 Previous Release: 11877 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11878 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11879 Current Release: 11880 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11881 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11882 11883---------------------------------------- 1188424 June 2005. Summary of changes for version 20050624: 11885 118861) ACPI CA Core Subsystem: 11887 11888Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 11889the host-defined cache object. This allows the OSL implementation to 11890define 11891and type this object in any manner desired, simplifying the OSL 11892implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 11893Linux, and should be defined in the OS-specific header file for other 11894operating systems as required. 11895 11896Changed the interface to AcpiOsAcquireObject to directly return the 11897requested object as the function return (instead of ACPI_STATUS.) This 11898change was made for performance reasons, since this is the purpose of the 11899interface in the first place. AcpiOsAcquireObject is now similar to the 11900AcpiOsAllocate interface. 11901 11902Implemented a new AML debugger command named Businfo. This command 11903displays 11904information about all devices that have an associate _PRT object. The 11905_ADR, 11906_HID, _UID, and _CID are displayed for these devices. 11907 11908Modified the initialization sequence in AcpiInitializeSubsystem to call 11909the 11910OSL interface AcpiOslInitialize first, before any local initialization. 11911This 11912change was required because the global initialization now calls OSL 11913interfaces. 11914 11915Enhanced the Dump command to display the entire contents of Package 11916objects 11917(including all sub-objects and their values.) 11918 11919Restructured the code base to split some files because of size and/or 11920because the code logically belonged in a separate file. New files are 11921listed 11922below. All makefiles and project files included in the ACPI CA release 11923have 11924been updated. 11925 utilities/utcache.c /* Local cache interfaces */ 11926 utilities/utmutex.c /* Local mutex support */ 11927 utilities/utstate.c /* State object support */ 11928 interpreter/parser/psloop.c /* Main AML parse loop */ 11929 11930Code and Data Size: Current and previous core subsystem library sizes are 11931shown below. These are the code and data sizes for the acpica.lib 11932produced 11933by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11934any ACPI driver or OSPM code. The debug version of the code includes the 11935debug output trace mechanism and has a much larger code and data size. 11936Note 11937that these values will vary depending on the efficiency of the compiler 11938and 11939the compiler options used during generation. 11940 11941 Previous Release: 11942 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11943 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11944 Current Release: 11945 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11946 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11947 11948 119492) iASL Compiler/Disassembler: 11950 11951Fixed a regression introduced in version 20050513 where the use of a 11952Package 11953object within a Case() statement caused a compile time exception. The 11954original behavior has been restored (a Match() operator is emitted.) 11955 11956---------------------------------------- 1195717 June 2005. Summary of changes for version 20050617: 11958 119591) ACPI CA Core Subsystem: 11960 11961Moved the object cache operations into the OS interface layer (OSL) to 11962allow 11963the host OS to handle these operations if desired (for example, the Linux 11964OSL will invoke the slab allocator). This support is optional; the 11965compile 11966time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 11967cache 11968code in the ACPI CA core. The new OSL interfaces are shown below. See 11969utalloc.c for an example implementation, and acpiosxf.h for the exact 11970interface definitions. With assistance from Alexey Starikovskiy. 11971 AcpiOsCreateCache 11972 AcpiOsDeleteCache 11973 AcpiOsPurgeCache 11974 AcpiOsAcquireObject 11975 AcpiOsReleaseObject 11976 11977Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 11978return 11979and restore a flags parameter. This fits better with many OS lock models. 11980Note: the current execution state (interrupt handler or not) is no longer 11981passed to these interfaces. If necessary, the OSL must determine this 11982state 11983by itself, a simple and fast operation. With assistance from Alexey 11984Starikovskiy. 11985 11986Fixed a problem in the ACPI table handling where a valid XSDT was assumed 11987present if the revision of the RSDP was 2 or greater. According to the 11988ACPI 11989specification, the XSDT is optional in all cases, and the table manager 11990therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 11991Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 11992contain 11993only the RSDT. 11994 11995Fixed an interpreter problem with the Mid() operator in the case of an 11996input 11997string where the resulting output string is of zero length. It now 11998correctly 11999returns a valid, null terminated string object instead of a string object 12000with a null pointer. 12001 12002Fixed a problem with the control method argument handling to allow a 12003store 12004to an Arg object that already contains an object of type Device. The 12005Device 12006object is now correctly overwritten. Previously, an error was returned. 12007 12008 12009Enhanced the debugger Find command to emit object values in addition to 12010the 12011found object pathnames. The output format is the same as the dump 12012namespace 12013command. 12014 12015Enhanced the debugger Set command. It now has the ability to set the 12016value 12017of any Named integer object in the namespace (Previously, only method 12018locals 12019and args could be set.) 12020 12021Code and Data Size: Current and previous core subsystem library sizes are 12022shown below. These are the code and data sizes for the acpica.lib 12023produced 12024by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12025any ACPI driver or OSPM code. The debug version of the code includes the 12026debug output trace mechanism and has a much larger code and data size. 12027Note 12028that these values will vary depending on the efficiency of the compiler 12029and 12030the compiler options used during generation. 12031 12032 Previous Release: 12033 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12034 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12035 Current Release: 12036 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12037 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12038 12039 120402) iASL Compiler/Disassembler: 12041 12042Fixed a regression in the disassembler where if/else/while constructs 12043were 12044output incorrectly. This problem was introduced in the previous release 12045(20050526). This problem also affected the single-step disassembly in the 12046debugger. 12047 12048Fixed a problem where compiling the reserved _OSI method would randomly 12049(but 12050rarely) produce compile errors. 12051 12052Enhanced the disassembler to emit compilable code in the face of 12053incorrect 12054AML resource descriptors. If the optional ResourceSourceIndex is present, 12055but the ResourceSource is not, do not emit the ResourceSourceIndex in the 12056disassembly. Otherwise, the resulting code cannot be compiled without 12057errors. 12058 12059---------------------------------------- 1206026 May 2005. Summary of changes for version 20050526: 12061 120621) ACPI CA Core Subsystem: 12063 12064Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 12065the module level (not within a control method.) These opcodes are 12066executed 12067exactly once at the time the table is loaded. This type of code was legal 12068up 12069until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 12070in 12071order to provide backwards compatibility with earlier BIOS 12072implementations. 12073This eliminates the "Encountered executable code at module level" warning 12074that was previously generated upon detection of such code. 12075 12076Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 12077inadvertently be generated during the lookup of namespace objects in the 12078second pass parse of ACPI tables and control methods. It appears that 12079this 12080problem could occur during the resolution of forward references to 12081namespace 12082objects. 12083 12084Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 12085corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 12086allows the deadlock detection debug code to be compiled out in the normal 12087case, improving mutex performance (and overall subsystem performance) 12088considerably. 12089 12090Implemented a handful of miscellaneous fixes for possible memory leaks on 12091error conditions and error handling control paths. These fixes were 12092suggested by FreeBSD and the Coverity Prevent source code analysis tool. 12093 12094Added a check for a null RSDT pointer in AcpiGetFirmwareTable 12095(tbxfroot.c) 12096to prevent a fault in this error case. 12097 12098Code and Data Size: Current and previous core subsystem library sizes are 12099shown below. These are the code and data sizes for the acpica.lib 12100produced 12101by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12102any ACPI driver or OSPM code. The debug version of the code includes the 12103debug output trace mechanism and has a much larger code and data size. 12104Note 12105that these values will vary depending on the efficiency of the compiler 12106and 12107the compiler options used during generation. 12108 12109 Previous Release: 12110 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12111 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12112 Current Release: 12113 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12114 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12115 12116 121172) iASL Compiler/Disassembler: 12118 12119Implemented support to allow Type 1 and Type 2 ASL operators to appear at 12120the module level (not within a control method.) These operators will be 12121executed once at the time the table is loaded. This type of code was 12122legal 12123up until the release of ACPI 2.0B (2002) and is now supported by the iASL 12124compiler in order to provide backwards compatibility with earlier BIOS 12125ASL 12126code. 12127 12128The ACPI integer width (specified via the table revision ID or the -r 12129override, 32 or 64 bits) is now used internally during compile-time 12130constant 12131folding to ensure that constants are truncated to 32 bits if necessary. 12132Previously, the revision ID value was only emitted in the AML table 12133header. 12134 12135An error message is now generated for the Mutex and Method operators if 12136the 12137SyncLevel parameter is outside the legal range of 0 through 15. 12138 12139Fixed a problem with the Method operator ParameterTypes list handling 12140(ACPI 121413.0). Previously, more than 2 types or 2 arguments generated a syntax 12142error. 12143The actual underlying implementation of method argument typechecking is 12144still under development, however. 12145 12146---------------------------------------- 1214713 May 2005. Summary of changes for version 20050513: 12148 121491) ACPI CA Core Subsystem: 12150 12151Implemented support for PCI Express root bridges -- added support for 12152device 12153PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 12154 12155The interpreter now automatically truncates incoming 64-bit constants to 1215632 12157bits if currently executing out of a 32-bit ACPI table (Revision < 2). 12158This 12159also affects the iASL compiler constant folding. (Note: as per below, the 12160iASL compiler no longer allows 64-bit constants within 32-bit tables.) 12161 12162Fixed a problem where string and buffer objects with "static" pointers 12163(pointers to initialization data within an ACPI table) were not handled 12164consistently. The internal object copy operation now always copies the 12165data 12166to a newly allocated buffer, regardless of whether the source object is 12167static or not. 12168 12169Fixed a problem with the FromBCD operator where an implicit result 12170conversion was improperly performed while storing the result to the 12171target 12172operand. Since this is an "explicit conversion" operator, the implicit 12173conversion should never be performed on the output. 12174 12175Fixed a problem with the CopyObject operator where a copy to an existing 12176named object did not always completely overwrite the existing object 12177stored 12178at name. Specifically, a buffer-to-buffer copy did not delete the 12179existing 12180buffer. 12181 12182Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 12183and 12184structs for consistency. 12185 12186Code and Data Size: Current and previous core subsystem library sizes are 12187shown below. These are the code and data sizes for the acpica.lib 12188produced 12189by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12190any ACPI driver or OSPM code. The debug version of the code includes the 12191debug output trace mechanism and has a much larger code and data size. 12192Note 12193that these values will vary depending on the efficiency of the compiler 12194and 12195the compiler options used during generation. 12196 12197 Previous Release: 12198 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12199 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12200 Current Release: (Same sizes) 12201 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12202 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12203 12204 122052) iASL Compiler/Disassembler: 12206 12207The compiler now emits a warning if an attempt is made to generate a 64- 12208bit 12209integer constant from within a 32-bit ACPI table (Revision < 2). The 12210integer 12211is truncated to 32 bits. 12212 12213Fixed a problem with large package objects: if the static length of the 12214package is greater than 255, the "variable length package" opcode is 12215emitted. Previously, this caused an error. This requires an update to the 12216ACPI spec, since it currently (incorrectly) states that packages larger 12217than 12218255 elements are not allowed. 12219 12220The disassembler now correctly handles variable length packages and 12221packages 12222larger than 255 elements. 12223 12224---------------------------------------- 1222508 April 2005. Summary of changes for version 20050408: 12226 122271) ACPI CA Core Subsystem: 12228 12229Fixed three cases in the interpreter where an "index" argument to an ASL 12230function was still (internally) 32 bits instead of the required 64 bits. 12231This was the Index argument to the Index, Mid, and Match operators. 12232 12233The "strupr" function is now permanently local (AcpiUtStrupr), since this 12234is 12235not a POSIX-defined function and not present in most kernel-level C 12236libraries. All references to the C library strupr function have been 12237removed 12238from the headers. 12239 12240Completed the deployment of static functions/prototypes. All prototypes 12241with 12242the static attribute have been moved from the headers to the owning C 12243file. 12244 12245Implemented an extract option (-e) for the AcpiBin utility (AML binary 12246utility). This option allows the utility to extract individual ACPI 12247tables 12248from the output of AcpiDmp. It provides the same functionality of the 12249acpixtract.pl perl script without the worry of setting the correct perl 12250options. AcpiBin runs on Windows and has not yet been generated/validated 12251in 12252the Linux/Unix environment (but should be soon). 12253 12254Updated and fixed the table dump option for AcpiBin (-d). This option 12255converts a single ACPI table to a hex/ascii file, similar to the output 12256of 12257AcpiDmp. 12258 12259Code and Data Size: Current and previous core subsystem library sizes are 12260shown below. These are the code and data sizes for the acpica.lib 12261produced 12262by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12263any ACPI driver or OSPM code. The debug version of the code includes the 12264debug output trace mechanism and has a much larger code and data size. 12265Note 12266that these values will vary depending on the efficiency of the compiler 12267and 12268the compiler options used during generation. 12269 12270 Previous Release: 12271 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12272 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12273 Current Release: 12274 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12275 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12276 12277 122782) iASL Compiler/Disassembler: 12279 12280Disassembler fix: Added a check to ensure that the table length found in 12281the 12282ACPI table header within the input file is not longer than the actual 12283input 12284file size. This indicates some kind of file or table corruption. 12285 12286---------------------------------------- 1228729 March 2005. Summary of changes for version 20050329: 12288 122891) ACPI CA Core Subsystem: 12290 12291An error is now generated if an attempt is made to create a Buffer Field 12292of 12293length zero (A CreateField with a length operand of zero.) 12294 12295The interpreter now issues a warning whenever executable code at the 12296module 12297level is detected during ACPI table load. This will give some idea of the 12298prevalence of this type of code. 12299 12300Implemented support for references to named objects (other than control 12301methods) within package objects. 12302 12303Enhanced package object output for the debug object. Package objects are 12304now 12305completely dumped, showing all elements. 12306 12307Enhanced miscellaneous object output for the debug object. Any object can 12308now be written to the debug object (for example, a device object can be 12309written, and the type of the object will be displayed.) 12310 12311The "static" qualifier has been added to all local functions across both 12312the 12313core subsystem and the iASL compiler. 12314 12315The number of "long" lines (> 80 chars) within the source has been 12316significantly reduced, by about 1/3. 12317 12318Cleaned up all header files to ensure that all CA/iASL functions are 12319prototyped (even static functions) and the formatting is consistent. 12320 12321Two new header files have been added, acopcode.h and acnames.h. 12322 12323Removed several obsolete functions that were no longer used. 12324 12325Code and Data Size: Current and previous core subsystem library sizes are 12326shown below. These are the code and data sizes for the acpica.lib 12327produced 12328by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12329any ACPI driver or OSPM code. The debug version of the code includes the 12330debug output trace mechanism and has a much larger code and data size. 12331Note 12332that these values will vary depending on the efficiency of the compiler 12333and 12334the compiler options used during generation. 12335 12336 Previous Release: 12337 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12338 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12339 Current Release: 12340 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12341 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12342 12343 12344 123452) iASL Compiler/Disassembler: 12346 12347Fixed a problem with the resource descriptor generation/support. For the 12348ResourceSourceIndex and the ResourceSource fields, both must be present, 12349or 12350both must be not present - can't have one without the other. 12351 12352The compiler now returns non-zero from the main procedure if any errors 12353have 12354occurred during the compilation. 12355 12356 12357---------------------------------------- 1235809 March 2005. Summary of changes for version 20050309: 12359 123601) ACPI CA Core Subsystem: 12361 12362The string-to-buffer implicit conversion code has been modified again 12363after 12364a change to the ACPI specification. In order to match the behavior of 12365the 12366other major ACPI implementation, the target buffer is no longer truncated 12367if 12368the source string is smaller than an existing target buffer. This change 12369requires an update to the ACPI spec, and should eliminate the recent 12370AE_AML_BUFFER_LIMIT issues. 12371 12372The "implicit return" support was rewritten to a new algorithm that 12373solves 12374the general case. Rather than attempt to determine when a method is about 12375to 12376exit, the result of every ASL operator is saved momentarily until the 12377very 12378next ASL operator is executed. Therefore, no matter how the method exits, 12379there will always be a saved implicit return value. This feature is only 12380enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 12381eliminate 12382AE_AML_NO_RETURN_VALUE errors when enabled. 12383 12384Implemented implicit conversion support for the predicate (operand) of 12385the 12386If, Else, and While operators. String and Buffer arguments are 12387automatically 12388converted to Integers. 12389 12390Changed the string-to-integer conversion behavior to match the new ACPI 12391errata: "If no integer object exists, a new integer is created. The ASCII 12392string is interpreted as a hexadecimal constant. Each string character is 12393interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 12394with the first character as the most significant digit, and ending with 12395the 12396first non-hexadecimal character or end-of-string." This means that the 12397first 12398non-hex character terminates the conversion and this is the code that was 12399changed. 12400 12401Fixed a problem where the ObjectType operator would fail (fault) when 12402used 12403on an Index of a Package which pointed to a null package element. The 12404operator now properly returns zero (Uninitialized) in this case. 12405 12406Fixed a problem where the While operator used excessive memory by not 12407properly popping the result stack during execution. There was no memory 12408leak 12409after execution, however. (Code provided by Valery Podrezov.) 12410 12411Fixed a problem where references to control methods within Package 12412objects 12413caused the method to be invoked, instead of producing a reference object 12414pointing to the method. 12415 12416Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 12417to 12418improve performance and reduce code size. (Code provided by Alexey 12419Starikovskiy.) 12420 12421Code and Data Size: Current and previous core subsystem library sizes are 12422shown below. These are the code and data sizes for the acpica.lib 12423produced 12424by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12425any ACPI driver or OSPM code. The debug version of the code includes the 12426debug output trace mechanism and has a much larger code and data size. 12427Note 12428that these values will vary depending on the efficiency of the compiler 12429and 12430the compiler options used during generation. 12431 12432 Previous Release: 12433 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12434 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12435 Current Release: 12436 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12437 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12438 12439 124402) iASL Compiler/Disassembler: 12441 12442Fixed a problem with the Return operator with no arguments. Since the AML 12443grammar for the byte encoding requires an operand for the Return opcode, 12444the 12445compiler now emits a Return(Zero) for this case. An ACPI specification 12446update has been written for this case. 12447 12448For tables other than the DSDT, namepath optimization is automatically 12449disabled. This is because SSDTs can be loaded anywhere in the namespace, 12450the 12451compiler has no knowledge of where, and thus cannot optimize namepaths. 12452 12453Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 12454inadvertently omitted from the ACPI specification, and will require an 12455update to the spec. 12456 12457The source file scan for ASCII characters is now optional (-a). This 12458change 12459was made because some vendors place non-ascii characters within comments. 12460However, the scan is simply a brute-force byte compare to ensure all 12461characters in the file are in the range 0x00 to 0x7F. 12462 12463Fixed a problem with the CondRefOf operator where the compiler was 12464inappropriately checking for the existence of the target. Since the point 12465of 12466the operator is to check for the existence of the target at run-time, the 12467compiler no longer checks for the target existence. 12468 12469Fixed a problem where errors generated from the internal AML interpreter 12470during constant folding were not handled properly, causing a fault. 12471 12472Fixed a problem with overly aggressive range checking for the Stall 12473operator. The valid range (max 255) is now only checked if the operand is 12474of 12475type Integer. All other operand types cannot be statically checked. 12476 12477Fixed a problem where control method references within the RefOf, 12478DeRefOf, 12479and ObjectType operators were not treated properly. They are now treated 12480as 12481actual references, not method invocations. 12482 12483Fixed and enhanced the "list namespace" option (-ln). This option was 12484broken 12485a number of releases ago. 12486 12487Improved error handling for the Field, IndexField, and BankField 12488operators. 12489The compiler now cleanly reports and recovers from errors in the field 12490component (FieldUnit) list. 12491 12492Fixed a disassembler problem where the optional ResourceDescriptor fields 12493TRS and TTP were not always handled correctly. 12494 12495Disassembler - Comments in output now use "//" instead of "/*" 12496 12497---------------------------------------- 1249828 February 2005. Summary of changes for version 20050228: 12499 125001) ACPI CA Core Subsystem: 12501 12502Fixed a problem where the result of an Index() operator (an object 12503reference) must increment the reference count on the target object for 12504the 12505life of the object reference. 12506 12507Implemented AML Interpreter and Debugger support for the new ACPI 3.0 12508Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 12509WordSpace 12510resource descriptors. 12511 12512Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 12513Space Descriptor" string, indicating interpreter support for the 12514descriptors 12515above. 12516 12517Implemented header support for the new ACPI 3.0 FADT flag bits. 12518 12519Implemented header support for the new ACPI 3.0 PCI Express bits for the 12520PM1 12521status/enable registers. 12522 12523Updated header support for the MADT processor local Apic struct and MADT 12524platform interrupt source struct for new ACPI 3.0 fields. 12525 12526Implemented header support for the SRAT and SLIT ACPI tables. 12527 12528Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 12529flag 12530at runtime. 12531 12532Code and Data Size: Current and previous core subsystem library sizes are 12533shown below. These are the code and data sizes for the acpica.lib 12534produced 12535by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12536any ACPI driver or OSPM code. The debug version of the code includes the 12537debug output trace mechanism and has a much larger code and data size. 12538Note 12539that these values will vary depending on the efficiency of the compiler 12540and 12541the compiler options used during generation. 12542 12543 Previous Release: 12544 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12545 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12546 Current Release: 12547 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12548 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12549 12550 125512) iASL Compiler/Disassembler: 12552 12553Fixed a problem with the internal 64-bit String-to-integer conversion 12554with 12555strings less than two characters long. 12556 12557Fixed a problem with constant folding where the result of the Index() 12558operator can not be considered a constant. This means that Index() cannot 12559be 12560a type3 opcode and this will require an update to the ACPI specification. 12561 12562Disassembler: Implemented support for the TTP, MTP, and TRS resource 12563descriptor fields. These fields were inadvertently ignored and not output 12564in 12565the disassembly of the resource descriptor. 12566 12567 12568 ---------------------------------------- 1256911 February 2005. Summary of changes for version 20050211: 12570 125711) ACPI CA Core Subsystem: 12572 12573Implemented ACPI 3.0 support for implicit conversion within the Match() 12574operator. MatchObjects can now be of type integer, buffer, or string 12575instead 12576of just type integer. Package elements are implicitly converted to the 12577type 12578of the MatchObject. This change aligns the behavior of Match() with the 12579behavior of the other logical operators (LLess(), etc.) It also requires 12580an 12581errata change to the ACPI specification as this support was intended for 12582ACPI 3.0, but was inadvertently omitted. 12583 12584Fixed a problem with the internal implicit "to buffer" conversion. 12585Strings 12586that are converted to buffers will cause buffer truncation if the string 12587is 12588smaller than the target buffer. Integers that are converted to buffers 12589will 12590not cause buffer truncation, only zero extension (both as per the ACPI 12591spec.) The problem was introduced when code was added to truncate the 12592buffer, but this should not be performed in all cases, only the string 12593case. 12594 12595Fixed a problem with the Buffer and Package operators where the 12596interpreter 12597would get confused if two such operators were used as operands to an ASL 12598operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 12599stack was not being popped after the execution of these operators, 12600resulting 12601in an AE_NO_RETURN_VALUE exception. 12602 12603Fixed a problem with constructs of the form Store(Index(...),...). The 12604reference object returned from Index was inadvertently resolved to an 12605actual 12606value. This problem was introduced in version 20050114 when the behavior 12607of 12608Store() was modified to restrict the object types that can be used as the 12609source operand (to match the ACPI specification.) 12610 12611Reduced excessive stack use within the AcpiGetObjectInfo procedure. 12612 12613Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 12614 12615Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 12616 12617Code and Data Size: Current and previous core subsystem library sizes are 12618shown below. These are the code and data sizes for the acpica.lib 12619produced 12620by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12621any ACPI driver or OSPM code. The debug version of the code includes the 12622debug output trace mechanism and has a much larger code and data size. 12623Note 12624that these values will vary depending on the efficiency of the compiler 12625and 12626the compiler options used during generation. 12627 12628 Previous Release: 12629 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12630 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12631 Current Release: 12632 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12633 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12634 12635 126362) iASL Compiler/Disassembler: 12637 12638Fixed a code generation problem in the constant folding optimization code 12639where incorrect code was generated if a constant was reduced to a buffer 12640object (i.e., a reduced type 5 opcode.) 12641 12642Fixed a typechecking problem for the ToBuffer operator. Caused by an 12643incorrect return type in the internal opcode information table. 12644 12645---------------------------------------- 1264625 January 2005. Summary of changes for version 20050125: 12647 126481) ACPI CA Core Subsystem: 12649 12650Fixed a recently introduced problem with the Global Lock where the 12651underlying semaphore was not created. This problem was introduced in 12652version 20050114, and caused an AE_AML_NO_OPERAND exception during an 12653Acquire() operation on _GL. 12654 12655The local object cache is now optional, and is disabled by default. Both 12656AcpiExec and the iASL compiler enable the cache because they run in user 12657mode and this enhances their performance. #define 12658ACPI_ENABLE_OBJECT_CACHE 12659to enable the local cache. 12660 12661Fixed an issue in the internal function AcpiUtEvaluateObject concerning 12662the 12663optional "implicit return" support where an error was returned if no 12664return 12665object was expected, but one was implicitly returned. AE_OK is now 12666returned 12667in this case and the implicitly returned object is deleted. 12668AcpiUtEvaluateObject is only occasionally used, and only to execute 12669reserved 12670methods such as _STA and _INI where the return type is known up front. 12671 12672Fixed a few issues with the internal convert-to-integer code. It now 12673returns 12674an error if an attempt is made to convert a null string, a string of only 12675blanks/tabs, or a zero-length buffer. This affects both implicit 12676conversion 12677and explicit conversion via the ToInteger() operator. 12678 12679The internal debug code in AcpiUtAcquireMutex has been commented out. It 12680is 12681not needed for normal operation and should increase the performance of 12682the 12683entire subsystem. The code remains in case it is needed for debug 12684purposes 12685again. 12686 12687The AcpiExec source and makefile are included in the Unix/Linux package 12688for 12689the first time. 12690 12691Code and Data Size: Current and previous core subsystem library sizes are 12692shown below. These are the code and data sizes for the acpica.lib 12693produced 12694by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12695any ACPI driver or OSPM code. The debug version of the code includes the 12696debug output trace mechanism and has a much larger code and data size. 12697Note 12698that these values will vary depending on the efficiency of the compiler 12699and 12700the compiler options used during generation. 12701 12702 Previous Release: 12703 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12704 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12705 Current Release: 12706 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12707 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12708 127092) iASL Compiler/Disassembler: 12710 12711Switch/Case support: A warning is now issued if the type of the Switch 12712value 12713cannot be determined at compile time. For example, Switch(Arg0) will 12714generate the warning, and the type is assumed to be an integer. As per 12715the 12716ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 12717the 12718warning. 12719 12720Switch/Case support: Implemented support for buffer and string objects as 12721the switch value. This is an ACPI 3.0 feature, now that LEqual supports 12722buffers and strings. 12723 12724Switch/Case support: The emitted code for the LEqual() comparisons now 12725uses 12726the switch value as the first operand, not the second. The case value is 12727now 12728the second operand, and this allows the case value to be implicitly 12729converted to the type of the switch value, not the other way around. 12730 12731Switch/Case support: Temporary variables are now emitted immediately 12732within 12733the control method, not at the global level. This means that there are 12734now 1273536 temps available per-method, not 36 temps per-module as was the case 12736with 12737the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 12738 12739---------------------------------------- 1274014 January 2005. Summary of changes for version 20050114: 12741 12742Added 2005 copyright to all module headers. This affects every module in 12743the core subsystem, iASL compiler, and the utilities. 12744 127451) ACPI CA Core Subsystem: 12746 12747Fixed an issue with the String-to-Buffer conversion code where the string 12748null terminator was not included in the buffer after conversion, but 12749there 12750is existing ASL that assumes the string null terminator is included. This 12751is 12752the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 12753introduced in the previous version when the code was updated to correctly 12754set the converted buffer size as per the ACPI specification. The ACPI 12755spec 12756is ambiguous and will be updated to specify that the null terminator must 12757be 12758included in the converted buffer. This also affects the ToBuffer() ASL 12759operator. 12760 12761Fixed a problem with the Mid() ASL/AML operator where it did not work 12762correctly on Buffer objects. Newly created sub-buffers were not being 12763marked 12764as initialized. 12765 12766 12767Fixed a problem in AcpiTbFindTable where incorrect string compares were 12768performed on the OemId and OemTableId table header fields. These fields 12769are 12770not null terminated, so strncmp is now used instead of strcmp. 12771 12772Implemented a restriction on the Store() ASL/AML operator to align the 12773behavior with the ACPI specification. Previously, any object could be 12774used 12775as the source operand. Now, the only objects that may be used are 12776Integers, 12777Buffers, Strings, Packages, Object References, and DDB Handles. If 12778necessary, the original behavior can be restored by enabling the 12779EnableInterpreterSlack flag. 12780 12781Enhanced the optional "implicit return" support to allow an implicit 12782return 12783value from methods that are invoked externally via the AcpiEvaluateObject 12784interface. This enables implicit returns from the _STA and _INI methods, 12785for example. 12786 12787Changed the Revision() ASL/AML operator to return the current version of 12788the 12789AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 12790returned 12791the supported ACPI version (This is the function of the _REV method). 12792 12793Updated the _REV predefined method to return the currently supported 12794version 12795of ACPI, now 3. 12796 12797Implemented batch mode option for the AcpiExec utility (-b). 12798 12799Code and Data Size: Current and previous core subsystem library sizes are 12800shown below. These are the code and data sizes for the acpica.lib 12801produced 12802by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12803any ACPI driver or OSPM code. The debug version of the code includes the 12804debug output trace mechanism and has a much larger code and data size. 12805Note 12806that these values will vary depending on the efficiency of the compiler 12807and 12808the compiler options used during generation. 12809 12810 Previous Release: 12811 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12812 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12813 Current Release: 12814 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12815 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12816 12817---------------------------------------- 1281810 December 2004. Summary of changes for version 20041210: 12819 12820ACPI 3.0 support is nearing completion in both the iASL compiler and the 12821ACPI CA core subsystem. 12822 128231) ACPI CA Core Subsystem: 12824 12825Fixed a problem in the ToDecimalString operator where the resulting 12826string 12827length was incorrectly calculated. The length is now calculated exactly, 12828eliminating incorrect AE_STRING_LIMIT exceptions. 12829 12830Fixed a problem in the ToHexString operator to allow a maximum 200 12831character 12832string to be produced. 12833 12834Fixed a problem in the internal string-to-buffer and buffer-to-buffer 12835copy 12836routine where the length of the resulting buffer was not truncated to the 12837new size (if the target buffer already existed). 12838 12839Code and Data Size: Current and previous core subsystem library sizes are 12840shown below. These are the code and data sizes for the acpica.lib 12841produced 12842by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12843any ACPI driver or OSPM code. The debug version of the code includes the 12844debug output trace mechanism and has a much larger code and data size. 12845Note 12846that these values will vary depending on the efficiency of the compiler 12847and 12848the compiler options used during generation. 12849 12850 Previous Release: 12851 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12852 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12853 Current Release: 12854 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12855 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12856 12857 128582) iASL Compiler/Disassembler: 12859 12860Implemented the new ACPI 3.0 resource template macros - DWordSpace, 12861ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 12862Includes support in the disassembler. 12863 12864Implemented support for the new (ACPI 3.0) parameter to the Register 12865macro, 12866AccessSize. 12867 12868Fixed a problem where the _HE resource name for the Interrupt macro was 12869referencing bit 0 instead of bit 1. 12870 12871Implemented check for maximum 255 interrupts in the Interrupt macro. 12872 12873Fixed a problem with the predefined resource descriptor names where 12874incorrect AML code was generated if the offset within the resource buffer 12875was 0 or 1. The optimizer shortened the AML code to a single byte opcode 12876but did not update the surrounding package lengths. 12877 12878Changes to the Dma macro: All channels within the channel list must be 12879in 12880the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 12881optional (default is BusMaster). 12882 12883Implemented check for maximum 7 data bytes for the VendorShort macro. 12884 12885The ReadWrite parameter is now optional for the Memory32 and similar 12886macros. 12887 12888---------------------------------------- 1288903 December 2004. Summary of changes for version 20041203: 12890 128911) ACPI CA Core Subsystem: 12892 12893The low-level field insertion/extraction code (exfldio) has been 12894completely 12895rewritten to eliminate unnecessary complexity, bugs, and boundary 12896conditions. 12897 12898Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 12899ToDecimalString 12900operators where the input operand could be inadvertently deleted if no 12901conversion was necessary (e.g., if the input to ToInteger was an Integer 12902object.) 12903 12904Fixed a problem with the ToDecimalString and ToHexString where an 12905incorrect 12906exception code was returned if the resulting string would be > 200 chars. 12907AE_STRING_LIMIT is now returned. 12908 12909Fixed a problem with the Concatenate operator where AE_OK was always 12910returned, even if the operation failed. 12911 12912Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 12913semaphores to be allocated. 12914 12915Code and Data Size: Current and previous core subsystem library sizes are 12916shown below. These are the code and data sizes for the acpica.lib 12917produced 12918by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12919any ACPI driver or OSPM code. The debug version of the code includes the 12920debug output trace mechanism and has a much larger code and data size. 12921Note 12922that these values will vary depending on the efficiency of the compiler 12923and 12924the compiler options used during generation. 12925 12926 Previous Release: 12927 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12928 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12929 Current Release: 12930 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12931 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12932 12933 129342) iASL Compiler/Disassembler: 12935 12936Fixed typechecking for the ObjectType and SizeOf operators. Problem was 12937recently introduced in 20041119. 12938 12939Fixed a problem with the ToUUID macro where the upper nybble of each 12940buffer 12941byte was inadvertently set to zero. 12942 12943---------------------------------------- 1294419 November 2004. Summary of changes for version 20041119: 12945 129461) ACPI CA Core Subsystem: 12947 12948Fixed a problem in the internal ConvertToInteger routine where new 12949integers 12950were not truncated to 32 bits for 32-bit ACPI tables. This routine 12951converts 12952buffers and strings to integers. 12953 12954Implemented support to store a value to an Index() on a String object. 12955This 12956is an ACPI 2.0 feature that had not yet been implemented. 12957 12958Implemented new behavior for storing objects to individual package 12959elements 12960(via the Index() operator). The previous behavior was to invoke the 12961implicit 12962conversion rules if an object was already present at the index. The new 12963behavior is to simply delete any existing object and directly store the 12964new 12965object. Although the ACPI specification seems unclear on this subject, 12966other 12967ACPI implementations behave in this manner. (This is the root of the 12968AE_BAD_HEX_CONSTANT issue.) 12969 12970Modified the RSDP memory scan mechanism to support the extended checksum 12971for 12972ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 12973RSDP signature is found with a valid checksum. 12974 12975Code and Data Size: Current and previous core subsystem library sizes are 12976shown below. These are the code and data sizes for the acpica.lib 12977produced 12978by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12979any ACPI driver or OSPM code. The debug version of the code includes the 12980debug output trace mechanism and has a much larger code and data size. 12981Note 12982that these values will vary depending on the efficiency of the compiler 12983and 12984the compiler options used during generation. 12985 12986 Previous Release: 12987 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12988 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12989 Current Release: 12990 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12991 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12992 12993 129942) iASL Compiler/Disassembler: 12995 12996Fixed a missing semicolon in the aslcompiler.y file. 12997 12998---------------------------------------- 1299905 November 2004. Summary of changes for version 20041105: 13000 130011) ACPI CA Core Subsystem: 13002 13003Implemented support for FADT revision 2. This was an interim table 13004(between 13005ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 13006 13007Implemented optional support to allow uninitialized LocalX and ArgX 13008variables in a control method. The variables are initialized to an 13009Integer 13010object with a value of zero. This support is enabled by setting the 13011AcpiGbl_EnableInterpreterSlack flag to TRUE. 13012 13013Implemented support for Integer objects for the SizeOf operator. Either 130144 13015or 8 is returned, depending on the current integer size (32-bit or 64- 13016bit, 13017depending on the parent table revision). 13018 13019Fixed a problem in the implementation of the SizeOf and ObjectType 13020operators 13021where the operand was resolved to a value too early, causing incorrect 13022return values for some objects. 13023 13024Fixed some possible memory leaks during exceptional conditions. 13025 13026Code and Data Size: Current and previous core subsystem library sizes are 13027shown below. These are the code and data sizes for the acpica.lib 13028produced 13029by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13030any ACPI driver or OSPM code. The debug version of the code includes the 13031debug output trace mechanism and has a much larger code and data size. 13032Note 13033that these values will vary depending on the efficiency of the compiler 13034and 13035the compiler options used during generation. 13036 13037 Previous Release: 13038 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13039 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13040 Current Release: 13041 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13042 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13043 13044 130452) iASL Compiler/Disassembler: 13046 13047Implemented support for all ACPI 3.0 reserved names and methods. 13048 13049Implemented all ACPI 3.0 grammar elements in the front-end, including 13050support for semicolons. 13051 13052Implemented the ACPI 3.0 Function() and ToUUID() macros 13053 13054Fixed a problem in the disassembler where a Scope() operator would not be 13055emitted properly if the target of the scope was in another table. 13056 13057---------------------------------------- 1305815 October 2004. Summary of changes for version 20041015: 13059 13060Note: ACPI CA is currently undergoing an in-depth and complete formal 13061evaluation to test/verify the following areas. Other suggestions are 13062welcome. This will result in an increase in the frequency of releases and 13063the number of bug fixes in the next few months. 13064 - Functional tests for all ASL/AML operators 13065 - All implicit/explicit type conversions 13066 - Bit fields and operation regions 13067 - 64-bit math support and 32-bit-only "truncated" math support 13068 - Exceptional conditions, both compiler and interpreter 13069 - Dynamic object deletion and memory leaks 13070 - ACPI 3.0 support when implemented 13071 - External interfaces to the ACPI subsystem 13072 13073 130741) ACPI CA Core Subsystem: 13075 13076Fixed two alignment issues on 64-bit platforms - within debug statements 13077in 13078AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 13079Address 13080field within the non-aligned ACPI generic address structure. 13081 13082Fixed a problem in the Increment and Decrement operators where incorrect 13083operand resolution could result in the inadvertent modification of the 13084original integer when the integer is passed into another method as an 13085argument and the arg is then incremented/decremented. 13086 13087Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 13088bit 13089BCD number were truncated during conversion. 13090 13091Fixed a problem in the ToDecimal operator where the length of the 13092resulting 13093string could be set incorrectly too long if the input operand was a 13094Buffer 13095object. 13096 13097Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 13098(0) 13099within a buffer would prematurely terminate a compare between buffer 13100objects. 13101 13102Added a check for string overflow (>200 characters as per the ACPI 13103specification) during the Concatenate operator with two string operands. 13104 13105Code and Data Size: Current and previous core subsystem library sizes are 13106shown below. These are the code and data sizes for the acpica.lib 13107produced 13108by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13109any ACPI driver or OSPM code. The debug version of the code includes the 13110debug output trace mechanism and has a much larger code and data size. 13111Note 13112that these values will vary depending on the efficiency of the compiler 13113and 13114the compiler options used during generation. 13115 13116 Previous Release: 13117 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13118 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13119 Current Release: 13120 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13121 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13122 13123 13124 131252) iASL Compiler/Disassembler: 13126 13127Allow the use of the ObjectType operator on uninitialized Locals and Args 13128(returns 0 as per the ACPI specification). 13129 13130Fixed a problem where the compiler would fault if there was a syntax 13131error 13132in the FieldName of all of the various CreateXXXField operators. 13133 13134Disallow the use of lower case letters within the EISAID macro, as per 13135the 13136ACPI specification. All EISAID strings must be of the form "UUUNNNN" 13137Where 13138U is an uppercase letter and N is a hex digit. 13139 13140 13141---------------------------------------- 1314206 October 2004. Summary of changes for version 20041006: 13143 131441) ACPI CA Core Subsystem: 13145 13146Implemented support for the ACPI 3.0 Timer operator. This ASL function 13147implements a 64-bit timer with 100 nanosecond granularity. 13148 13149Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 13150implement the ACPI 3.0 Timer operator. This allows the host OS to 13151implement 13152the timer with the best clock available. Also, it keeps the core 13153subsystem 13154out of the clock handling business, since the host OS (usually) performs 13155this function. 13156 13157Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 13158functions use a 64-bit address which is part of the packed ACPI Generic 13159Address Structure. Since the structure is non-aligned, the alignment 13160macros 13161are now used to extract the address to a local variable before use. 13162 13163Fixed a problem where the ToInteger operator assumed all input strings 13164were 13165hexadecimal. The operator now handles both decimal strings and hex 13166strings 13167(prefixed with "0x"). 13168 13169Fixed a problem where the string length in the string object created as a 13170result of the internal ConvertToString procedure could be incorrect. This 13171potentially affected all implicit conversions and also the 13172ToDecimalString 13173and ToHexString operators. 13174 13175Fixed two problems in the ToString operator. If the length parameter was 13176zero, an incorrect string object was created and the value of the input 13177length parameter was inadvertently changed from zero to Ones. 13178 13179Fixed a problem where the optional ResourceSource string in the 13180ExtendedIRQ 13181resource macro was ignored. 13182 13183Simplified the interfaces to the internal division functions, reducing 13184code 13185size and complexity. 13186 13187Code and Data Size: Current and previous core subsystem library sizes are 13188shown below. These are the code and data sizes for the acpica.lib 13189produced 13190by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13191any ACPI driver or OSPM code. The debug version of the code includes the 13192debug output trace mechanism and has a much larger code and data size. 13193Note 13194that these values will vary depending on the efficiency of the compiler 13195and 13196the compiler options used during generation. 13197 13198 Previous Release: 13199 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13200 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13201 Current Release: 13202 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13203 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13204 13205 132062) iASL Compiler/Disassembler: 13207 13208Implemented support for the ACPI 3.0 Timer operator. 13209 13210Fixed a problem where the Default() operator was inadvertently ignored in 13211a 13212Switch/Case block. This was a problem in the translation of the Switch 13213statement to If...Else pairs. 13214 13215Added support to allow a standalone Return operator, with no parentheses 13216(or 13217operands). 13218 13219Fixed a problem with code generation for the ElseIf operator where the 13220translated Else...If parse tree was improperly constructed leading to the 13221loss of some code. 13222 13223---------------------------------------- 1322422 September 2004. Summary of changes for version 20040922: 13225 132261) ACPI CA Core Subsystem: 13227 13228Fixed a problem with the implementation of the LNot() operator where 13229"Ones" 13230was not returned for the TRUE case. Changed the code to return Ones 13231instead 13232of (!Arg) which was usually 1. This change affects iASL constant folding 13233for 13234this operator also. 13235 13236Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 13237not 13238initialized properly -- Now zero the entire buffer in this case where the 13239buffer already exists. 13240 13241Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 13242Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 13243related code considerably. This will require changes/updates to all OS 13244interface layers (OSLs.) 13245 13246Implemented a new external interface, AcpiInstallExceptionHandler, to 13247allow 13248a system exception handler to be installed. This handler is invoked upon 13249any 13250run-time exception that occurs during control method execution. 13251 13252Added support for the DSDT in AcpiTbFindTable. This allows the 13253DataTableRegion() operator to access the local copy of the DSDT. 13254 13255Code and Data Size: Current and previous core subsystem library sizes are 13256shown below. These are the code and data sizes for the acpica.lib 13257produced 13258by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13259any ACPI driver or OSPM code. The debug version of the code includes the 13260debug output trace mechanism and has a much larger code and data size. 13261Note 13262that these values will vary depending on the efficiency of the compiler 13263and 13264the compiler options used during generation. 13265 13266 Previous Release: 13267 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13268 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13269 Current Release: 13270 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13271 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13272 13273 132742) iASL Compiler/Disassembler: 13275 13276Fixed a problem with constant folding and the LNot operator. LNot was 13277returning 1 in the TRUE case, not Ones as per the ACPI specification. 13278This 13279could result in the generation of an incorrect folded/reduced constant. 13280 13281End-Of-File is now allowed within a "//"-style comment. A parse error no 13282longer occurs if such a comment is at the very end of the input ASL 13283source 13284file. 13285 13286Implemented the "-r" option to override the Revision in the table header. 13287The initial use of this option will be to simplify the evaluation of the 13288AML 13289interpreter by allowing a single ASL source module to be compiled for 13290either 1329132-bit or 64-bit integers. 13292 13293 13294---------------------------------------- 1329527 August 2004. Summary of changes for version 20040827: 13296 132971) ACPI CA Core Subsystem: 13298 13299- Implemented support for implicit object conversion in the non-numeric 13300logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 13301and 13302LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 13303the second operand is implicitly converted on the fly to match the type 13304of 13305the first operand. For example: 13306 13307 LEqual (Source1, Source2) 13308 13309Source1 and Source2 must each evaluate to an integer, a string, or a 13310buffer. 13311The data type of Source1 dictates the required type of Source2. Source2 13312is 13313implicitly converted if necessary to match the type of Source1. 13314 13315- Updated and corrected the behavior of the string conversion support. 13316The 13317rules concerning conversion of buffers to strings (according to the ACPI 13318specification) are as follows: 13319 13320ToDecimalString - explicit byte-wise conversion of buffer to string of 13321decimal values (0-255) separated by commas. ToHexString - explicit byte- 13322wise 13323conversion of buffer to string of hex values (0-FF) separated by commas. 13324ToString - explicit byte-wise conversion of buffer to string. Byte-by- 13325byte 13326copy with no transform except NULL terminated. Any other implicit buffer- 13327to- 13328string conversion - byte-wise conversion of buffer to string of hex 13329values 13330(0-FF) separated by spaces. 13331 13332- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 13333 13334- Fixed a problem in AcpiNsGetPathnameLength where the returned length 13335was 13336one byte too short in the case of a node in the root scope. This could 13337cause a fault during debug output. 13338 13339- Code and Data Size: Current and previous core subsystem library sizes 13340are 13341shown below. These are the code and data sizes for the acpica.lib 13342produced 13343by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13344any ACPI driver or OSPM code. The debug version of the code includes the 13345debug output trace mechanism and has a much larger code and data size. 13346Note 13347that these values will vary depending on the efficiency of the compiler 13348and 13349the compiler options used during generation. 13350 13351 Previous Release: 13352 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13353 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13354 Current Release: 13355 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13356 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13357 13358 133592) iASL Compiler/Disassembler: 13360 13361- Fixed a Linux generation error. 13362 13363 13364---------------------------------------- 1336516 August 2004. Summary of changes for version 20040816: 13366 133671) ACPI CA Core Subsystem: 13368 13369Designed and implemented support within the AML interpreter for the so- 13370called "implicit return". This support returns the result of the last 13371ASL 13372operation within a control method, in the absence of an explicit Return() 13373operator. A few machines depend on this behavior, even though it is not 13374explicitly supported by the ASL language. It is optional support that 13375can 13376be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 13377 13378Removed support for the PCI_Config address space from the internal low 13379level 13380hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 13381support was not used internally, and would not work correctly anyway 13382because 13383the PCI bus number and segment number were not supported. There are 13384separate interfaces for PCI configuration space access because of the 13385unique 13386interface. 13387 13388Code and Data Size: Current and previous core subsystem library sizes are 13389shown below. These are the code and data sizes for the acpica.lib 13390produced 13391by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13392any ACPI driver or OSPM code. The debug version of the code includes the 13393debug output trace mechanism and has a much larger code and data size. 13394Note 13395that these values will vary depending on the efficiency of the compiler 13396and 13397the compiler options used during generation. 13398 13399 Previous Release: 13400 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13401 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13402 Current Release: 13403 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13404 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13405 13406 134072) iASL Compiler/Disassembler: 13408 13409Fixed a problem where constants in ASL expressions at the root level (not 13410within a control method) could be inadvertently truncated during code 13411generation. This problem was introduced in the 20040715 release. 13412 13413 13414---------------------------------------- 1341515 July 2004. Summary of changes for version 20040715: 13416 134171) ACPI CA Core Subsystem: 13418 13419Restructured the internal HW GPE interfaces to pass/track the current 13420state 13421of interrupts (enabled/disabled) in order to avoid possible deadlock and 13422increase flexibility of the interfaces. 13423 13424Implemented a "lexicographical compare" for String and Buffer objects 13425within 13426the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 13427- 13428as per further clarification to the ACPI specification. Behavior is 13429similar 13430to C library "strcmp". 13431 13432Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 13433external function. In the 32-bit non-debug case, the stack use has been 13434reduced from 168 bytes to 32 bytes. 13435 13436Deployed a new run-time configuration flag, 13437AcpiGbl_EnableInterpreterSlack, 13438whose purpose is to allow the AML interpreter to forgive certain bad AML 13439constructs. Default setting is FALSE. 13440 13441Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 13442IO 13443support code. If enabled, it allows field access to go beyond the end of 13444a 13445region definition if the field is within the region length rounded up to 13446the 13447next access width boundary (a common coding error.) 13448 13449Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 13450ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 13451these 13452symbols are lowercased by the latest version of the AcpiSrc tool. 13453 13454The prototypes for the PCI interfaces in acpiosxf.h have been updated to 13455rename "Register" to simply "Reg" to prevent certain compilers from 13456complaining. 13457 13458Code and Data Size: Current and previous core subsystem library sizes are 13459shown below. These are the code and data sizes for the acpica.lib 13460produced 13461by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13462any ACPI driver or OSPM code. The debug version of the code includes the 13463debug output trace mechanism and has a much larger code and data size. 13464Note 13465that these values will vary depending on the efficiency of the compiler 13466and 13467the compiler options used during generation. 13468 13469 Previous Release: 13470 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13471 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13472 Current Release: 13473 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13474 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13475 13476 134772) iASL Compiler/Disassembler: 13478 13479Implemented full support for Package objects within the Case() operator. 13480Note: The Break() operator is currently not supported within Case blocks 13481(TermLists) as there is some question about backward compatibility with 13482ACPI 134831.0 interpreters. 13484 13485 13486Fixed a problem where complex terms were not supported properly within 13487the 13488Switch() operator. 13489 13490Eliminated extraneous warning for compiler-emitted reserved names of the 13491form "_T_x". (Used in Switch/Case operators.) 13492 13493Eliminated optimization messages for "_T_x" objects and small constants 13494within the DefinitionBlock operator. 13495 13496 13497---------------------------------------- 1349815 June 2004. Summary of changes for version 20040615: 13499 135001) ACPI CA Core Subsystem: 13501 13502Implemented support for Buffer and String objects (as per ACPI 2.0) for 13503the 13504following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13505LLessEqual. 13506 13507All directory names in the entire source package are lower case, as they 13508were in earlier releases. 13509 13510Implemented "Disassemble" command in the AML debugger that will 13511disassemble 13512a single control method. 13513 13514Code and Data Size: Current and previous core subsystem library sizes are 13515shown below. These are the code and data sizes for the acpica.lib 13516produced 13517by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13518any ACPI driver or OSPM code. The debug version of the code includes the 13519debug output trace mechanism and has a much larger code and data size. 13520Note 13521that these values will vary depending on the efficiency of the compiler 13522and 13523the compiler options used during generation. 13524 13525 Previous Release: 13526 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13527 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13528 13529 Current Release: 13530 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13531 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13532 13533 135342) iASL Compiler/Disassembler: 13535 13536Implemented support for Buffer and String objects (as per ACPI 2.0) for 13537the 13538following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13539LLessEqual. 13540 13541All directory names in the entire source package are lower case, as they 13542were in earlier releases. 13543 13544Fixed a fault when using the -g or -d<nofilename> options if the FADT was 13545not found. 13546 13547Fixed an issue with the Windows version of the compiler where later 13548versions 13549of Windows place the FADT in the registry under the name "FADT" and not 13550"FACP" as earlier versions did. This applies when using the -g or - 13551d<nofilename> options. The compiler now looks for both strings as 13552necessary. 13553 13554Fixed a problem with compiler namepath optimization where a namepath 13555within 13556the Scope() operator could not be optimized if the namepath was a subpath 13557of 13558the current scope path. 13559 13560---------------------------------------- 1356127 May 2004. Summary of changes for version 20040527: 13562 135631) ACPI CA Core Subsystem: 13564 13565Completed a new design and implementation for EBDA (Extended BIOS Data 13566Area) 13567support in the RSDP scan code. The original code improperly scanned for 13568the 13569EBDA by simply scanning from memory location 0 to 0x400. The correct 13570method 13571is to first obtain the EBDA pointer from within the BIOS data area, then 13572scan 1K of memory starting at the EBDA pointer. There appear to be few 13573if 13574any machines that place the RSDP in the EBDA, however. 13575 13576Integrated a fix for a possible fault during evaluation of BufferField 13577arguments. Obsolete code that was causing the problem was removed. 13578 13579Found and fixed a problem in the Field Support Code where data could be 13580corrupted on a bit field read that starts on an aligned boundary but does 13581not end on an aligned boundary. Merged the read/write "datum length" 13582calculation code into a common procedure. 13583 13584Rolled in a couple of changes to the FreeBSD-specific header. 13585 13586 13587Code and Data Size: Current and previous core subsystem library sizes are 13588shown below. These are the code and data sizes for the acpica.lib 13589produced 13590by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13591any ACPI driver or OSPM code. The debug version of the code includes the 13592debug output trace mechanism and has a much larger code and data size. 13593Note 13594that these values will vary depending on the efficiency of the compiler 13595and 13596the compiler options used during generation. 13597 13598 Previous Release: 13599 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13600 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13601 Current Release: 13602 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13603 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13604 13605 136062) iASL Compiler/Disassembler: 13607 13608Fixed a generation warning produced by some overly-verbose compilers for 13609a 1361064-bit constant. 13611 13612---------------------------------------- 1361314 May 2004. Summary of changes for version 20040514: 13614 136151) ACPI CA Core Subsystem: 13616 13617Fixed a problem where hardware GPE enable bits sometimes not set properly 13618during and after GPE method execution. Result of 04/27 changes. 13619 13620Removed extra "clear all GPEs" when sleeping/waking. 13621 13622Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 13623AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 13624to 13625the new AcpiEv* calls as appropriate. 13626 13627ACPI_OS_NAME was removed from the OS-specific headers. The default name 13628is 13629now "Microsoft Windows NT" for maximum compatibility. However this can 13630be 13631changed by modifying the acconfig.h file. 13632 13633Allow a single invocation of AcpiInstallNotifyHandler for a handler that 13634traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 13635 13636Run _INI methods on ThermalZone objects. This is against the ACPI 13637specification, but there is apparently ASL code in the field that has 13638these 13639_INI methods, and apparently "other" AML interpreters execute them. 13640 13641Performed a full 16/32/64 bit lint that resulted in some small changes. 13642 13643Added a sleep simulation command to the AML debugger to test sleep code. 13644 13645Code and Data Size: Current and previous core subsystem library sizes are 13646shown below. These are the code and data sizes for the acpica.lib 13647produced 13648by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13649any ACPI driver or OSPM code. The debug version of the code includes the 13650debug output trace mechanism and has a much larger code and data size. 13651Note 13652that these values will vary depending on the efficiency of the compiler 13653and 13654the compiler options used during generation. 13655 13656 Previous Release: 13657 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13658 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13659 Current Release: 13660 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13661 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13662 13663---------------------------------------- 1366427 April 2004. Summary of changes for version 20040427: 13665 136661) ACPI CA Core Subsystem: 13667 13668Completed a major overhaul of the GPE handling within ACPI CA. There are 13669now three types of GPEs: wake-only, runtime-only, and combination 13670wake/run. 13671The only GPEs allowed to be combination wake/run are for button-style 13672devices such as a control-method power button, control-method sleep 13673button, 13674or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 13675not 13676referenced by any _PRW methods are marked for "runtime" and hardware 13677enabled. Any GPE that is referenced by a _PRW method is marked for 13678"wake" 13679(and disabled at runtime). However, at sleep time, only those GPEs that 13680have been specifically enabled for wake via the AcpiEnableGpe interface 13681will 13682actually be hardware enabled. 13683 13684A new external interface has been added, AcpiSetGpeType(), that is meant 13685to 13686be used by device drivers to force a GPE to a particular type. It will 13687be 13688especially useful for the drivers for the button devices mentioned above. 13689 13690Completed restructuring of the ACPI CA initialization sequence so that 13691default operation region handlers are installed before GPEs are 13692initialized 13693and the _PRW methods are executed. This will prevent errors when the 13694_PRW 13695methods attempt to access system memory or I/O space. 13696 13697GPE enable/disable no longer reads the GPE enable register. We now keep 13698the 13699enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 13700thus no longer depend on the hardware to maintain these bits. 13701 13702Always clear the wake status and fixed/GPE status bits before sleep, even 13703for state S5. 13704 13705Improved the AML debugger output for displaying the GPE blocks and their 13706current status. 13707 13708Added new strings for the _OSI method, of the form "Windows 2001 SPx" 13709where 13710x = 0,1,2,3,4. 13711 13712Fixed a problem where the physical address was incorrectly calculated 13713when 13714the Load() operator was used to directly load from an Operation Region 13715(vs. 13716loading from a Field object.) Also added check for minimum table length 13717for 13718this case. 13719 13720Fix for multiple mutex acquisition. Restore original thread SyncLevel on 13721mutex release. 13722 13723Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 13724consistency with the other fields returned. 13725 13726Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 13727structure for each GPE in the system, so the size of this structure is 13728important. 13729 13730CPU stack requirement reduction: Cleaned up the method execution and 13731object 13732evaluation paths so that now a parameter structure is passed, instead of 13733copying the various method parameters over and over again. 13734 13735In evregion.c: Correctly exit and reenter the interpreter region if and 13736only if dispatching an operation region request to a user-installed 13737handler. 13738Do not exit/reenter when dispatching to a default handler (e.g., default 13739system memory or I/O handlers) 13740 13741 13742Notes for updating drivers for the new GPE support. The following 13743changes 13744must be made to ACPI-related device drivers that are attached to one or 13745more 13746GPEs: (This information will be added to the ACPI CA Programmer 13747Reference.) 13748 137491) AcpiInstallGpeHandler no longer automatically enables the GPE, you 13750must 13751explicitly call AcpiEnableGpe. 137522) There is a new interface called AcpiSetGpeType. This should be called 13753before enabling the GPE. Also, this interface will automatically disable 13754the GPE if it is currently enabled. 137553) AcpiEnableGpe no longer supports a GPE type flag. 13756 13757Specific drivers that must be changed: 137581) EC driver: 13759 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 13760AeGpeHandler, NULL); 13761 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 13762 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 13763 137642) Button Drivers (Power, Lid, Sleep): 13765Run _PRW method under parent device 13766If _PRW exists: /* This is a control-method button */ 13767 Extract GPE number and possibly GpeDevice 13768 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 13769 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 13770 13771For all other devices that have _PRWs, we automatically set the GPE type 13772to 13773ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 13774This 13775must be done on a selective basis, usually requiring some kind of user 13776app 13777to allow the user to pick the wake devices. 13778 13779 13780Code and Data Size: Current and previous core subsystem library sizes are 13781shown below. These are the code and data sizes for the acpica.lib 13782produced 13783by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13784any ACPI driver or OSPM code. The debug version of the code includes the 13785debug output trace mechanism and has a much larger code and data size. 13786Note 13787that these values will vary depending on the efficiency of the compiler 13788and 13789the compiler options used during generation. 13790 13791 Previous Release: 13792 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13793 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13794 Current Release: 13795 13796 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13797 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13798 13799 13800 13801---------------------------------------- 1380202 April 2004. Summary of changes for version 20040402: 13803 138041) ACPI CA Core Subsystem: 13805 13806Fixed an interpreter problem where an indirect store through an ArgX 13807parameter was incorrectly applying the "implicit conversion rules" during 13808the store. From the ACPI specification: "If the target is a method local 13809or 13810argument (LocalX or ArgX), no conversion is performed and the result is 13811stored directly to the target". The new behavior is to disable implicit 13812conversion during ALL stores to an ArgX. 13813 13814Changed the behavior of the _PRW method scan to ignore any and all errors 13815returned by a given _PRW. This prevents the scan from aborting from the 13816failure of any single _PRW. 13817 13818Moved the runtime configuration parameters from the global init procedure 13819to 13820static variables in acglobal.h. This will allow the host to override the 13821default values easily. 13822 13823Code and Data Size: Current and previous core subsystem library sizes are 13824shown below. These are the code and data sizes for the acpica.lib 13825produced 13826by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13827any ACPI driver or OSPM code. The debug version of the code includes the 13828debug output trace mechanism and has a much larger code and data size. 13829Note 13830that these values will vary depending on the efficiency of the compiler 13831and 13832the compiler options used during generation. 13833 13834 Previous Release: 13835 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13836 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13837 Current Release: 13838 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13839 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13840 13841 138422) iASL Compiler/Disassembler: 13843 13844iASL now fully disassembles SSDTs. However, External() statements are 13845not 13846generated automatically for unresolved symbols at this time. This is a 13847planned feature for future implementation. 13848 13849Fixed a scoping problem in the disassembler that occurs when the type of 13850the 13851target of a Scope() operator is overridden. This problem caused an 13852incorrectly nested internal namespace to be constructed. 13853 13854Any warnings or errors that are emitted during disassembly are now 13855commented 13856out automatically so that the resulting file can be recompiled without 13857any 13858hand editing. 13859 13860---------------------------------------- 1386126 March 2004. Summary of changes for version 20040326: 13862 138631) ACPI CA Core Subsystem: 13864 13865Implemented support for "wake" GPEs via interaction between GPEs and the 13866_PRW methods. Every GPE that is pointed to by one or more _PRWs is 13867identified as a WAKE GPE and by default will no longer be enabled at 13868runtime. Previously, we were blindly enabling all GPEs with a 13869corresponding 13870_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 13871We 13872believe this has been the cause of thousands of "spurious" GPEs on some 13873systems. 13874 13875This new GPE behavior is can be reverted to the original behavior (enable 13876ALL GPEs at runtime) via a runtime flag. 13877 13878Fixed a problem where aliased control methods could not access objects 13879properly. The proper scope within the namespace was not initialized 13880(transferred to the target of the aliased method) before executing the 13881target method. 13882 13883Fixed a potential race condition on internal object deletion on the 13884return 13885object in AcpiEvaluateObject. 13886 13887Integrated a fix for resource descriptors where both _MEM and _MTP were 13888being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 13889wide, 0x0F instead of 0x03.) 13890 13891Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 13892preventing 13893a 13894fault in some cases. 13895 13896Updated Notify() values for debug statements in evmisc.c 13897 13898Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 13899 13900Code and Data Size: Current and previous core subsystem library sizes are 13901shown below. These are the code and data sizes for the acpica.lib 13902produced 13903by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13904any ACPI driver or OSPM code. The debug version of the code includes the 13905debug output trace mechanism and has a much larger code and data size. 13906Note 13907that these values will vary depending on the efficiency of the compiler 13908and 13909the compiler options used during generation. 13910 13911 Previous Release: 13912 13913 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13914 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13915 Current Release: 13916 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13917 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13918 13919---------------------------------------- 1392011 March 2004. Summary of changes for version 20040311: 13921 139221) ACPI CA Core Subsystem: 13923 13924Fixed a problem where errors occurring during the parse phase of control 13925method execution did not abort cleanly. For example, objects created and 13926installed in the namespace were not deleted. This caused all subsequent 13927invocations of the method to return the AE_ALREADY_EXISTS exception. 13928 13929Implemented a mechanism to force a control method to "Serialized" 13930execution 13931if the method attempts to create namespace objects. (The root of the 13932AE_ALREADY_EXISTS problem.) 13933 13934Implemented support for the predefined _OSI "internal" control method. 13935Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 13936and 13937"Windows 2001.1", and can be easily upgraded for new strings as 13938necessary. 13939This feature will allow "other" operating systems to execute the fully 13940tested, "Windows" code path through the ASL code 13941 13942Global Lock Support: Now allows multiple acquires and releases with any 13943internal thread. Removed concept of "owning thread" for this special 13944mutex. 13945 13946Fixed two functions that were inappropriately declaring large objects on 13947the 13948CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 13949during 13950method execution considerably. 13951 13952Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 13953S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 13954 13955Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 13956defined on the machine. 13957 13958Implemented two runtime options: One to force all control method 13959execution 13960to "Serialized" to mimic Windows behavior, another to disable _OSI 13961support 13962if it causes problems on a given machine. 13963 13964Code and Data Size: Current and previous core subsystem library sizes are 13965shown below. These are the code and data sizes for the acpica.lib 13966produced 13967by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13968any ACPI driver or OSPM code. The debug version of the code includes the 13969debug output trace mechanism and has a much larger code and data size. 13970Note 13971that these values will vary depending on the efficiency of the compiler 13972and 13973the compiler options used during generation. 13974 13975 Previous Release: 13976 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13977 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13978 Current Release: 13979 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13980 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13981 139822) iASL Compiler/Disassembler: 13983 13984Fixed an array size problem for FreeBSD that would cause the compiler to 13985fault. 13986 13987---------------------------------------- 1398820 February 2004. Summary of changes for version 20040220: 13989 13990 139911) ACPI CA Core Subsystem: 13992 13993Implemented execution of _SxD methods for Device objects in the 13994GetObjectInfo interface. 13995 13996Fixed calls to _SST method to pass the correct arguments. 13997 13998Added a call to _SST on wake to restore to "working" state. 13999 14000Check for End-Of-Buffer failure case in the WalkResources interface. 14001 14002Integrated fix for 64-bit alignment issue in acglobal.h by moving two 14003structures to the beginning of the file. 14004 14005After wake, clear GPE status register(s) before enabling GPEs. 14006 14007After wake, clear/enable power button. (Perhaps we should clear/enable 14008all 14009fixed events upon wake.) 14010 14011Fixed a couple of possible memory leaks in the Namespace manager. 14012 14013Integrated latest acnetbsd.h file. 14014 14015---------------------------------------- 1401611 February 2004. Summary of changes for version 20040211: 14017 14018 140191) ACPI CA Core Subsystem: 14020 14021Completed investigation and implementation of the call-by-reference 14022mechanism for control method arguments. 14023 14024Fixed a problem where a store of an object into an indexed package could 14025fail if the store occurs within a different method than the method that 14026created the package. 14027 14028Fixed a problem where the ToDecimal operator could return incorrect 14029results. 14030 14031Fixed a problem where the CopyObject operator could fail on some of the 14032more 14033obscure objects (e.g., Reference objects.) 14034 14035Improved the output of the Debug object to display buffer, package, and 14036index objects. 14037 14038Fixed a problem where constructs of the form "RefOf (ArgX)" did not 14039return 14040the expected result. 14041 14042Added permanent ACPI_REPORT_ERROR macros for all instances of the 14043ACPI_AML_INTERNAL exception. 14044 14045Integrated latest version of acfreebsd.h 14046 14047---------------------------------------- 1404816 January 2004. Summary of changes for version 20040116: 14049 14050The purpose of this release is primarily to update the copyright years in 14051each module, thus causing a huge number of diffs. There are a few small 14052functional changes, however. 14053 140541) ACPI CA Core Subsystem: 14055 14056Improved error messages when there is a problem finding one or more of 14057the 14058required base ACPI tables 14059 14060Reintroduced the definition of APIC_HEADER in actbl.h 14061 14062Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 14063 14064Removed extraneous reference to NewObj in dsmthdat.c 14065 140662) iASL compiler 14067 14068Fixed a problem introduced in December that disabled the correct 14069disassembly 14070of Resource Templates 14071 14072 14073---------------------------------------- 1407403 December 2003. Summary of changes for version 20031203: 14075 140761) ACPI CA Core Subsystem: 14077 14078Changed the initialization of Operation Regions during subsystem 14079init to perform two entire walks of the ACPI namespace; The first 14080to initialize the regions themselves, the second to execute the 14081_REG methods. This fixed some interdependencies across _REG 14082methods found on some machines. 14083 14084Fixed a problem where a Store(Local0, Local1) could simply update 14085the object reference count, and not create a new copy of the 14086object if the Local1 is uninitialized. 14087 14088Implemented support for the _SST reserved method during sleep 14089transitions. 14090 14091Implemented support to clear the SLP_TYP and SLP_EN bits when 14092waking up, this is apparently required by some machines. 14093 14094When sleeping, clear the wake status only if SleepState is not S5. 14095 14096Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 14097pointer arithmetic advanced a string pointer too far. 14098 14099Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 14100could be returned if the requested table has not been loaded. 14101 14102Within the support for IRQ resources, restructured the handling of 14103the active and edge/level bits. 14104 14105Fixed a few problems in AcpiPsxExecute() where memory could be 14106leaked under certain error conditions. 14107 14108Improved error messages for the cases where the ACPI mode could 14109not be entered. 14110 14111Code and Data Size: Current and previous core subsystem library 14112sizes are shown below. These are the code and data sizes for the 14113acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14114these values do not include any ACPI driver or OSPM code. The 14115debug version of the code includes the debug output trace 14116mechanism and has a much larger code and data size. Note that 14117these values will vary depending on the efficiency of the compiler 14118and the compiler options used during generation. 14119 14120 Previous Release (20031029): 14121 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14122 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14123 Current Release: 14124 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14125 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14126 141272) iASL Compiler/Disassembler: 14128 14129Implemented a fix for the iASL disassembler where a bad index was 14130generated. This was most noticeable on 64-bit platforms 14131 14132 14133---------------------------------------- 1413429 October 2003. Summary of changes for version 20031029: 14135 141361) ACPI CA Core Subsystem: 14137 14138 14139Fixed a problem where a level-triggered GPE with an associated 14140_Lxx control method was incorrectly cleared twice. 14141 14142Fixed a problem with the Field support code where an access can 14143occur beyond the end-of-region if the field is non-aligned but 14144extends to the very end of the parent region (resulted in an 14145AE_AML_REGION_LIMIT exception.) 14146 14147Fixed a problem with ACPI Fixed Events where an RT Clock handler 14148would not get invoked on an RTC event. The RTC event bitmasks for 14149the PM1 registers were not being initialized properly. 14150 14151Implemented support for executing _STA and _INI methods for 14152Processor objects. Although this is currently not part of the 14153ACPI specification, there is existing ASL code that depends on the 14154init-time execution of these methods. 14155 14156Implemented and deployed a GetDescriptorName function to decode 14157the various types of internal descriptors. Guards against null 14158descriptors during debug output also. 14159 14160Implemented and deployed a GetNodeName function to extract the 4- 14161character namespace node name. This function simplifies the debug 14162and error output, as well as guarding against null pointers during 14163output. 14164 14165Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 14166simplify the debug and error output of 64-bit integers. This 14167macro replaces the HIDWORD and LODWORD macros for dumping these 14168integers. 14169 14170Updated the implementation of the Stall() operator to only call 14171AcpiOsStall(), and also return an error if the operand is larger 14172than 255. This preserves the required behavior of not 14173relinquishing the processor, as would happen if AcpiOsSleep() was 14174called for "long stalls". 14175 14176Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 14177initialized are now treated as NOOPs. 14178 14179Cleaned up a handful of warnings during 64-bit generation. 14180 14181Fixed a reported error where and incorrect GPE number was passed 14182to the GPE dispatch handler. This value is only used for error 14183output, however. Used this opportunity to clean up and streamline 14184the GPE dispatch code. 14185 14186Code and Data Size: Current and previous core subsystem library 14187sizes are shown below. These are the code and data sizes for the 14188acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14189these values do not include any ACPI driver or OSPM code. The 14190 14191debug version of the code includes the debug output trace 14192mechanism and has a much larger code and data size. Note that 14193these values will vary depending on the efficiency of the compiler 14194and the compiler options used during generation. 14195 14196 Previous Release (20031002): 14197 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14198 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14199 Current Release: 14200 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14201 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14202 14203 142042) iASL Compiler/Disassembler: 14205 14206Updated the iASL compiler to return an error if the operand to the 14207Stall() operator is larger than 255. 14208 14209 14210---------------------------------------- 1421102 October 2003. Summary of changes for version 20031002: 14212 14213 142141) ACPI CA Core Subsystem: 14215 14216Fixed a problem with Index Fields where the index was not 14217incremented for fields that require multiple writes to the 14218index/data registers (Fields that are wider than the data 14219register.) 14220 14221Fixed a problem with all Field objects where a write could go 14222beyond the end-of-field if the field was larger than the access 14223granularity and therefore required multiple writes to complete the 14224request. An extra write beyond the end of the field could happen 14225inadvertently. 14226 14227Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 14228would incorrectly be returned if the width of the Data Register 14229was larger than the specified field access width. 14230 14231Completed fixes for LoadTable() and Unload() and verified their 14232operation. Implemented full support for the "DdbHandle" object 14233throughout the ACPI CA subsystem. 14234 14235Implemented full support for the MADT and ECDT tables in the ACPI 14236CA header files. Even though these tables are not directly 14237consumed by ACPI CA, the header definitions are useful for ACPI 14238device drivers. 14239 14240Integrated resource descriptor fixes posted to the Linux ACPI 14241list. This included checks for minimum descriptor length, and 14242support for trailing NULL strings within descriptors that have 14243optional string elements. 14244 14245Code and Data Size: Current and previous core subsystem library 14246sizes are shown below. These are the code and data sizes for the 14247acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14248these values do not include any ACPI driver or OSPM code. The 14249debug version of the code includes the debug output trace 14250mechanism and has a much larger code and data size. Note that 14251these values will vary depending on the efficiency of the compiler 14252and the compiler options used during generation. 14253 14254 Previous Release (20030918): 14255 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14256 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14257 Current Release: 14258 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14259 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14260 14261 142622) iASL Compiler: 14263 14264Implemented detection of non-ASCII characters within the input 14265source ASL file. This catches attempts to compile binary (AML) 14266files early in the compile, with an informative error message. 14267 14268Fixed a problem where the disassembler would fault if the output 14269filename could not be generated or if the output file could not be 14270opened. 14271 14272---------------------------------------- 1427318 September 2003. Summary of changes for version 20030918: 14274 14275 142761) ACPI CA Core Subsystem: 14277 14278Found and fixed a longstanding problem with the late execution of 14279the various deferred AML opcodes (such as Operation Regions, 14280Buffer Fields, Buffers, and Packages). If the name string 14281specified for the name of the new object placed the object in a 14282scope other than the current scope, the initialization/execution 14283of the opcode failed. The solution to this problem was to 14284implement a mechanism where the late execution of such opcodes 14285does not attempt to lookup/create the name a second time in an 14286incorrect scope. This fixes the "region size computed 14287incorrectly" problem. 14288 14289Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 14290Global Lock AE_BAD_PARAMETER error. 14291 14292Fixed several 64-bit issues with prototypes, casting and data 14293types. 14294 14295Removed duplicate prototype from acdisasm.h 14296 14297Fixed an issue involving EC Operation Region Detach (Shaohua Li) 14298 14299Code and Data Size: Current and previous core subsystem library 14300sizes are shown below. These are the code and data sizes for the 14301acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14302these values do not include any ACPI driver or OSPM code. The 14303debug version of the code includes the debug output trace 14304mechanism and has a much larger code and data size. Note that 14305these values will vary depending on the efficiency of the compiler 14306and the compiler options used during generation. 14307 14308 Previous Release: 14309 14310 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14311 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14312 Current Release: 14313 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14314 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14315 14316 143172) Linux: 14318 14319Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 14320correct sleep time in seconds. 14321 14322---------------------------------------- 1432314 July 2003. Summary of changes for version 20030619: 14324 143251) ACPI CA Core Subsystem: 14326 14327Parse SSDTs in order discovered, as opposed to reverse order 14328(Hrvoje Habjanic) 14329 14330Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 14331Klausner, 14332 Nate Lawson) 14333 14334 143352) Linux: 14336 14337Dynamically allocate SDT list (suggested by Andi Kleen) 14338 14339proc function return value cleanups (Andi Kleen) 14340 14341Correctly handle NMI watchdog during long stalls (Andrew Morton) 14342 14343Make it so acpismp=force works (reported by Andrew Morton) 14344 14345 14346---------------------------------------- 1434719 June 2003. Summary of changes for version 20030619: 14348 143491) ACPI CA Core Subsystem: 14350 14351Fix To/FromBCD, eliminating the need for an arch-specific #define. 14352 14353Do not acquire a semaphore in the S5 shutdown path. 14354 14355Fix ex_digits_needed for 0. (Takayoshi Kochi) 14356 14357Fix sleep/stall code reversal. (Andi Kleen) 14358 14359Revert a change having to do with control method calling 14360semantics. 14361 143622) Linux: 14363 14364acpiphp update (Takayoshi Kochi) 14365 14366Export acpi_disabled for sonypi (Stelian Pop) 14367 14368Mention acpismp=force in config help 14369 14370Re-add acpitable.c and acpismp=force. This improves backwards 14371 14372compatibility and also cleans up the code to a significant degree. 14373 14374Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 14375 14376---------------------------------------- 1437722 May 2003. Summary of changes for version 20030522: 14378 143791) ACPI CA Core Subsystem: 14380 14381Found and fixed a reported problem where an AE_NOT_FOUND error 14382occurred occasionally during _BST evaluation. This turned out to 14383be an Owner ID allocation issue where a called method did not get 14384a new ID assigned to it. Eventually, (after 64k calls), the Owner 14385ID UINT16 would wraparound so that the ID would be the same as the 14386caller's and the called method would delete the caller's 14387namespace. 14388 14389Implemented extended error reporting for control methods that are 14390aborted due to a run-time exception. Output includes the exact 14391AML instruction that caused the method abort, a dump of the method 14392locals and arguments at the time of the abort, and a trace of all 14393nested control method calls. 14394 14395Modified the interpreter to allow the creation of buffers of zero 14396length from the AML code. Implemented new code to ensure that no 14397attempt is made to actually allocate a memory buffer (of length 14398zero) - instead, a simple buffer object with a NULL buffer pointer 14399and length zero is created. A warning is no longer issued when 14400the AML attempts to create a zero-length buffer. 14401 14402Implemented a workaround for the "leading asterisk issue" in 14403_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 14404asterisk is automatically removed if present in any HID, UID, or 14405CID strings. The iASL compiler will still flag this asterisk as 14406an error, however. 14407 14408Implemented full support for _CID methods that return a package of 14409multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 14410now additionally returns a device _CID list if present. This 14411required a change to the external interface in order to pass an 14412ACPI_BUFFER object as a parameter since the _CID list is of 14413variable length. 14414 14415Fixed a problem with the new AE_SAME_HANDLER exception where 14416handler initialization code did not know about this exception. 14417 14418Code and Data Size: Current and previous core subsystem library 14419sizes are shown below. These are the code and data sizes for the 14420acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14421these values do not include any ACPI driver or OSPM code. The 14422debug version of the code includes the debug output trace 14423mechanism and has a much larger code and data size. Note that 14424these values will vary depending on the efficiency of the compiler 14425and the compiler options used during generation. 14426 14427 Previous Release (20030509): 14428 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14429 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14430 Current Release: 14431 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14432 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14433 14434 144352) Linux: 14436 14437Fixed a bug in which we would reinitialize the ACPI interrupt 14438after it was already working, thus disabling all ACPI and the IRQs 14439for any other device sharing the interrupt. (Thanks to Stian 14440Jordet) 14441 14442Toshiba driver update (John Belmonte) 14443 14444Return only 0 or 1 for our interrupt handler status (Andrew 14445Morton) 14446 14447 144483) iASL Compiler: 14449 14450Fixed a reported problem where multiple (nested) ElseIf() 14451statements were not handled correctly by the compiler, resulting 14452in incorrect warnings and incorrect AML code. This was a problem 14453in both the ASL parser and the code generator. 14454 14455 144564) Documentation: 14457 14458Added changes to existing interfaces, new exception codes, and new 14459text concerning reference count object management versus garbage 14460collection. 14461 14462---------------------------------------- 1446309 May 2003. Summary of changes for version 20030509. 14464 14465 144661) ACPI CA Core Subsystem: 14467 14468Changed the subsystem initialization sequence to hold off 14469installation of address space handlers until the hardware has been 14470initialized and the system has entered ACPI mode. This is because 14471the installation of space handlers can cause _REG methods to be 14472run. Previously, the _REG methods could potentially be run before 14473ACPI mode was enabled. 14474 14475Fixed some memory leak issues related to address space handler and 14476notify handler installation. There were some problems with the 14477reference count mechanism caused by the fact that the handler 14478objects are shared across several namespace objects. 14479 14480Fixed a reported problem where reference counts within the 14481namespace were not properly updated when named objects created by 14482method execution were deleted. 14483 14484Fixed a reported problem where multiple SSDTs caused a deletion 14485issue during subsystem termination. Restructured the table data 14486structures to simplify the linked lists and the related code. 14487 14488Fixed a problem where the table ID associated with secondary 14489tables (SSDTs) was not being propagated into the namespace objects 14490created by those tables. This would only present a problem for 14491tables that are unloaded at run-time, however. 14492 14493Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 14494type as the length parameter (instead of UINT32). 14495 14496Solved a long-standing problem where an ALREADY_EXISTS error 14497appears on various systems. This problem could happen when there 14498are multiple PCI_Config operation regions under a single PCI root 14499bus. This doesn't happen very frequently, but there are some 14500systems that do this in the ASL. 14501 14502Fixed a reported problem where the internal DeleteNode function 14503was incorrectly handling the case where a namespace node was the 14504first in the parent's child list, and had additional peers (not 14505the only child, but first in the list of children.) 14506 14507Code and Data Size: Current core subsystem library sizes are shown 14508below. These are the code and data sizes for the acpica.lib 14509produced by the Microsoft Visual C++ 6.0 compiler, and these 14510values do not include any ACPI driver or OSPM code. The debug 14511version of the code includes the debug output trace mechanism and 14512has a much larger code and data size. Note that these values will 14513vary depending on the efficiency of the compiler and the compiler 14514options used during generation. 14515 14516 Previous Release 14517 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14518 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14519 Current Release: 14520 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14521 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14522 14523 145242) Linux: 14525 14526Allow ":" in OS override string (Ducrot Bruno) 14527 14528Kobject fix (Greg KH) 14529 14530 145313 iASL Compiler/Disassembler: 14532 14533Fixed a problem in the generation of the C source code files (AML 14534is emitted in C source statements for BIOS inclusion) where the 14535Ascii dump that appears within a C comment at the end of each line 14536could cause a compile time error if the AML sequence happens to 14537have an open comment or close comment sequence embedded. 14538 14539 14540---------------------------------------- 1454124 April 2003. Summary of changes for version 20030424. 14542 14543 145441) ACPI CA Core Subsystem: 14545 14546Support for big-endian systems has been implemented. Most of the 14547support has been invisibly added behind big-endian versions of the 14548ACPI_MOVE_* macros. 14549 14550Fixed a problem in AcpiHwDisableGpeBlock() and 14551AcpiHwClearGpeBlock() where an incorrect offset was passed to the 14552low level hardware write routine. The offset parameter was 14553actually eliminated from the low level read/write routines because 14554they had become obsolete. 14555 14556Fixed a problem where a handler object was deleted twice during 14557the removal of a fixed event handler. 14558 14559 145602) Linux: 14561 14562A fix for SMP systems with link devices was contributed by 14563 14564Compaq's Dan Zink. 14565 14566(2.5) Return whether we handled the interrupt in our IRQ handler. 14567(Linux ISRs no longer return void, so we can propagate the handler 14568return value from the ACPI CA core back to the OS.) 14569 14570 14571 145723) Documentation: 14573 14574The ACPI CA Programmer Reference has been updated to reflect new 14575interfaces and changes to existing interfaces. 14576 14577---------------------------------------- 1457828 March 2003. Summary of changes for version 20030328. 14579 145801) ACPI CA Core Subsystem: 14581 14582The GPE Block Device support has been completed. New interfaces 14583are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 14584interfaces (enable, disable, clear, getstatus) have been split 14585into separate interfaces for Fixed Events and General Purpose 14586Events (GPEs) in order to support GPE Block Devices properly. 14587 14588Fixed a problem where the error message "Failed to acquire 14589semaphore" would appear during operations on the embedded 14590controller (EC). 14591 14592Code and Data Size: Current core subsystem library sizes are shown 14593below. These are the code and data sizes for the acpica.lib 14594produced by the Microsoft Visual C++ 6.0 compiler, and these 14595values do not include any ACPI driver or OSPM code. The debug 14596version of the code includes the debug output trace mechanism and 14597has a much larger code and data size. Note that these values will 14598vary depending on the efficiency of the compiler and the compiler 14599options used during generation. 14600 14601 Previous Release 14602 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14603 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14604 Current Release: 14605 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14606 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14607 14608 14609---------------------------------------- 1461028 February 2003. Summary of changes for version 20030228. 14611 14612 146131) ACPI CA Core Subsystem: 14614 14615The GPE handling and dispatch code has been completely overhauled 14616in preparation for support of GPE Block Devices (ID ACPI0006). 14617This affects internal data structures and code only; there should 14618be no differences visible externally. One new file has been 14619added, evgpeblk.c 14620 14621The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 14622fields that are used to determine the GPE block lengths. The 14623REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 14624structures are ignored. This is per the ACPI specification but it 14625isn't very clear. The full 256 Block 0/1 GPEs are now supported 14626(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 14627 14628In the SCI interrupt handler, removed the read of the PM1_CONTROL 14629register to look at the SCI_EN bit. On some machines, this read 14630causes an SMI event and greatly slows down SCI events. (This may 14631in fact be the cause of slow battery status response on some 14632systems.) 14633 14634Fixed a problem where a store of a NULL string to a package object 14635could cause the premature deletion of the object. This was seen 14636during execution of the battery _BIF method on some systems, 14637resulting in no battery data being returned. 14638 14639Added AcpiWalkResources interface to simplify parsing of resource 14640lists. 14641 14642Code and Data Size: Current core subsystem library sizes are shown 14643below. These are the code and data sizes for the acpica.lib 14644produced by the Microsoft Visual C++ 6.0 compiler, and these 14645values do not include any ACPI driver or OSPM code. The debug 14646version of the code includes the debug output trace mechanism and 14647has a much larger code and data size. Note that these values will 14648vary depending on the efficiency of the compiler and the compiler 14649options used during generation. 14650 14651 Previous Release 14652 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14653 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14654 Current Release: 14655 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14656 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14657 14658 146592) Linux 14660 14661S3 fixes (Ole Rohne) 14662 14663Update ACPI PHP driver with to use new acpi_walk_resource API 14664(Bjorn Helgaas) 14665 14666Add S4BIOS support (Pavel Machek) 14667 14668Map in entire table before performing checksum (John Stultz) 14669 14670Expand the mem= cmdline to allow the specification of reserved and 14671ACPI DATA blocks (Pavel Machek) 14672 14673Never use ACPI on VISWS 14674 14675Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 14676 14677Revert a change that allowed P_BLK lengths to be 4 or 5. This is 14678causing us to think that some systems support C2 when they really 14679don't. 14680 14681Do not count processor objects for non-present CPUs (Thanks to 14682Dominik Brodowski) 14683 14684 146853) iASL Compiler: 14686 14687Fixed a problem where ASL include files could not be found and 14688opened. 14689 14690Added support for the _PDC reserved name. 14691 14692 14693---------------------------------------- 1469422 January 2003. Summary of changes for version 20030122. 14695 14696 146971) ACPI CA Core Subsystem: 14698 14699Added a check for constructs of the form: Store (Local0, Local0) 14700where Local0 is not initialized. Apparently, some BIOS 14701programmers believe that this is a NOOP. Since this store doesn't 14702do anything anyway, the new prototype behavior will ignore this 14703error. This is a case where we can relax the strict checking in 14704the interpreter in the name of compatibility. 14705 14706 147072) Linux 14708 14709The AcpiSrc Source Conversion Utility has been released with the 14710Linux package for the first time. This is the utility that is 14711used to convert the ACPI CA base source code to the Linux version. 14712 14713(Both) Handle P_BLK lengths shorter than 6 more gracefully 14714 14715(Both) Move more headers to include/acpi, and delete an unused 14716header. 14717 14718(Both) Move drivers/acpi/include directory to include/acpi 14719 14720(Both) Boot functions don't use cmdline, so don't pass it around 14721 14722(Both) Remove include of unused header (Adrian Bunk) 14723 14724(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 14725the 14726former now also includes the latter, acpiphp.h only needs the one, 14727now. 14728 14729(2.5) Make it possible to select method of bios restoring after S3 14730resume. [=> no more ugly ifdefs] (Pavel Machek) 14731 14732(2.5) Make proc write interfaces work (Pavel Machek) 14733 14734(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 14735 14736(2.5) Break out ACPI Perf code into its own module, under cpufreq 14737(Dominik Brodowski) 14738 14739(2.4) S4BIOS support (Ducrot Bruno) 14740 14741(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 14742Visinoni) 14743 14744 147453) iASL Compiler: 14746 14747Added support to disassemble SSDT and PSDTs. 14748 14749Implemented support to obtain SSDTs from the Windows registry if 14750available. 14751 14752 14753---------------------------------------- 1475409 January 2003. Summary of changes for version 20030109. 14755 147561) ACPI CA Core Subsystem: 14757 14758Changed the behavior of the internal Buffer-to-String conversion 14759function. The current ACPI specification states that the contents 14760of the buffer are "converted to a string of two-character 14761hexadecimal numbers, each separated by a space". Unfortunately, 14762this definition is not backwards compatible with existing ACPI 1.0 14763implementations (although the behavior was not defined in the ACPI 147641.0 specification). The new behavior simply copies data from the 14765buffer to the string until a null character is found or the end of 14766the buffer is reached. The new String object is always null 14767terminated. This problem was seen during the generation of _BIF 14768battery data where incorrect strings were returned for battery 14769type, etc. This will also require an errata to the ACPI 14770specification. 14771 14772Renamed all instances of NATIVE_UINT and NATIVE_INT to 14773ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 14774 14775Copyright in all module headers (both Linux and non-Linux) has be 14776updated to 2003. 14777 14778Code and Data Size: Current core subsystem library sizes are shown 14779below. These are the code and data sizes for the acpica.lib 14780produced by the Microsoft Visual C++ 6.0 compiler, and these 14781values do not include any ACPI driver or OSPM code. The debug 14782version of the code includes the debug output trace mechanism and 14783has a much larger code and data size. Note that these values will 14784vary depending on the efficiency of the compiler and the compiler 14785options used during generation. 14786 14787 Previous Release 14788 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14789 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14790 Current Release: 14791 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14792 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14793 14794 147952) Linux 14796 14797Fixed an oops on module insertion/removal (Matthew Tippett) 14798 14799(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 14800 14801(2.5) Replace pr_debug (Randy Dunlap) 14802 14803(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 14804 14805(Both) Eliminate spawning of thread from timer callback, in favor 14806of schedule_work() 14807 14808(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 14809 14810(Both) Added define for Fixed Function HW region (Matthew Wilcox) 14811 14812(Both) Add missing statics to button.c (Pavel Machek) 14813 14814Several changes have been made to the source code translation 14815utility that generates the Linux Code in order to make the code 14816more "Linux-like": 14817 14818All typedefs on structs and unions have been removed in keeping 14819with the Linux coding style. 14820 14821Removed the non-Linux SourceSafe module revision number from each 14822module header. 14823 14824Completed major overhaul of symbols to be lowercased for linux. 14825Doubled the number of symbols that are lowercased. 14826 14827Fixed a problem where identifiers within procedure headers and 14828within quotes were not fully lower cased (they were left with a 14829starting capital.) 14830 14831Some C macros whose only purpose is to allow the generation of 16- 14832bit code are now completely removed in the Linux code, increasing 14833readability and maintainability. 14834 14835---------------------------------------- 14836 1483712 December 2002. Summary of changes for version 20021212. 14838 14839 148401) ACPI CA Core Subsystem: 14841 14842Fixed a problem where the creation of a zero-length AML Buffer 14843would cause a fault. 14844 14845Fixed a problem where a Buffer object that pointed to a static AML 14846buffer (in an ACPI table) could inadvertently be deleted, causing 14847memory corruption. 14848 14849Fixed a problem where a user buffer (passed in to the external 14850ACPI CA interfaces) could be overwritten if the buffer was too 14851small to complete the operation, causing memory corruption. 14852 14853Fixed a problem in the Buffer-to-String conversion code where a 14854string of length one was always returned, regardless of the size 14855of the input Buffer object. 14856 14857Removed the NATIVE_CHAR data type across the entire source due to 14858lack of need and lack of consistent use. 14859 14860Code and Data Size: Current core subsystem library sizes are shown 14861below. These are the code and data sizes for the acpica.lib 14862produced by the Microsoft Visual C++ 6.0 compiler, and these 14863values do not include any ACPI driver or OSPM code. The debug 14864version of the code includes the debug output trace mechanism and 14865has a much larger code and data size. Note that these values will 14866vary depending on the efficiency of the compiler and the compiler 14867options used during generation. 14868 14869 Previous Release 14870 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14871 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14872 Current Release: 14873 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14874 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14875 14876 14877---------------------------------------- 1487805 December 2002. Summary of changes for version 20021205. 14879 148801) ACPI CA Core Subsystem: 14881 14882Fixed a problem where a store to a String or Buffer object could 14883cause corruption of the DSDT if the object type being stored was 14884the same as the target object type and the length of the object 14885being stored was equal to or smaller than the original (existing) 14886target object. This was seen to cause corruption of battery _BIF 14887buffers if the _BIF method modified the buffer on the fly. 14888 14889Fixed a problem where an internal error was generated if a control 14890method invocation was used in an OperationRegion, Buffer, or 14891Package declaration. This was caused by the deferred parsing of 14892the control method and thus the deferred creation of the internal 14893method object. The solution to this problem was to create the 14894internal method object at the moment the method is encountered in 14895the first pass - so that subsequent references to the method will 14896able to obtain the required parameter count and thus properly 14897parse the method invocation. This problem presented itself as an 14898AE_AML_INTERNAL during the pass 1 parse phase during table load. 14899 14900Fixed a problem where the internal String object copy routine did 14901not always allocate sufficient memory for the target String object 14902and caused memory corruption. This problem was seen to cause 14903"Allocation already present in list!" errors as memory allocation 14904became corrupted. 14905 14906Implemented a new function for the evaluation of namespace objects 14907that allows the specification of the allowable return object 14908types. This simplifies a lot of code that checks for a return 14909object of one or more specific objects returned from the 14910evaluation (such as _STA, etc.) This may become and external 14911function if it would be useful to ACPI-related drivers. 14912 14913Completed another round of prefixing #defines with "ACPI_" for 14914clarity. 14915 14916Completed additional code restructuring to allow more modular 14917linking for iASL compiler and AcpiExec. Several files were split 14918creating new files. New files: nsparse.c dsinit.c evgpe.c 14919 14920Implemented an abort mechanism to terminate an executing control 14921method via the AML debugger. This feature is useful for debugging 14922control methods that depend (wait) for specific hardware 14923responses. 14924 14925Code and Data Size: Current core subsystem library sizes are shown 14926below. These are the code and data sizes for the acpica.lib 14927produced by the Microsoft Visual C++ 6.0 compiler, and these 14928values do not include any ACPI driver or OSPM code. The debug 14929version of the code includes the debug output trace mechanism and 14930has a much larger code and data size. Note that these values will 14931vary depending on the efficiency of the compiler and the compiler 14932options used during generation. 14933 14934 Previous Release 14935 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14936 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14937 Current Release: 14938 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14939 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14940 14941 149422) iASL Compiler/Disassembler 14943 14944Fixed a compiler code generation problem for "Interrupt" Resource 14945Descriptors. If specified in the ASL, the optional "Resource 14946Source Index" and "Resource Source" fields were not inserted into 14947the correct location within the AML resource descriptor, creating 14948an invalid descriptor. 14949 14950Fixed a disassembler problem for "Interrupt" resource descriptors. 14951The optional "Resource Source Index" and "Resource Source" fields 14952were ignored. 14953 14954 14955---------------------------------------- 1495622 November 2002. Summary of changes for version 20021122. 14957 14958 149591) ACPI CA Core Subsystem: 14960 14961Fixed a reported problem where an object stored to a Method Local 14962or Arg was not copied to a new object during the store - the 14963object pointer was simply copied to the Local/Arg. This caused 14964all subsequent operations on the Local/Arg to also affect the 14965original source of the store operation. 14966 14967Fixed a problem where a store operation to a Method Local or Arg 14968was not completed properly if the Local/Arg contained a reference 14969(from RefOf) to a named field. The general-purpose store-to- 14970namespace-node code is now used so that this case is handled 14971automatically. 14972 14973Fixed a problem where the internal object copy routine would cause 14974a protection fault if the object being copied was a Package and 14975contained either 1) a NULL package element or 2) a nested sub- 14976package. 14977 14978Fixed a problem with the GPE initialization that resulted from an 14979ambiguity in the ACPI specification. One section of the 14980specification states that both the address and length of the GPE 14981block must be zero if the block is not supported. Another section 14982implies that only the address need be zero if the block is not 14983supported. The code has been changed so that both the address and 14984the length must be non-zero to indicate a valid GPE block (i.e., 14985if either the address or the length is zero, the GPE block is 14986invalid.) 14987 14988Code and Data Size: Current core subsystem library sizes are shown 14989below. These are the code and data sizes for the acpica.lib 14990produced by the Microsoft Visual C++ 6.0 compiler, and these 14991values do not include any ACPI driver or OSPM code. The debug 14992version of the code includes the debug output trace mechanism and 14993has a much larger code and data size. Note that these values will 14994vary depending on the efficiency of the compiler and the compiler 14995options used during generation. 14996 14997 Previous Release 14998 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14999 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15000 Current Release: 15001 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15002 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15003 15004 150052) Linux 15006 15007Cleaned up EC driver. Exported an external EC read/write 15008interface. By going through this, other drivers (most notably 15009sonypi) will be able to serialize access to the EC. 15010 15011 150123) iASL Compiler/Disassembler 15013 15014Implemented support to optionally generate include files for both 15015ASM and C (the -i switch). This simplifies BIOS development by 15016automatically creating include files that contain external 15017declarations for the symbols that are created within the 15018 15019(optionally generated) ASM and C AML source files. 15020 15021 15022---------------------------------------- 1502315 November 2002. Summary of changes for version 20021115. 15024 150251) ACPI CA Core Subsystem: 15026 15027Fixed a memory leak problem where an error during resolution of 15028 15029method arguments during a method invocation from another method 15030failed to cleanup properly by deleting all successfully resolved 15031argument objects. 15032 15033Fixed a problem where the target of the Index() operator was not 15034correctly constructed if the source object was a package. This 15035problem has not been detected because the use of a target operand 15036with Index() is very rare. 15037 15038Fixed a problem with the Index() operator where an attempt was 15039made to delete the operand objects twice. 15040 15041Fixed a problem where an attempt was made to delete an operand 15042twice during execution of the CondRefOf() operator if the target 15043did not exist. 15044 15045Implemented the first of perhaps several internal create object 15046functions that create and initialize a specific object type. This 15047consolidates duplicated code wherever the object is created, thus 15048shrinking the size of the subsystem. 15049 15050Implemented improved debug/error messages for errors that occur 15051during nested method invocations. All executing method pathnames 15052are displayed (with the error) as the call stack is unwound - thus 15053simplifying debug. 15054 15055Fixed a problem introduced in the 10/02 release that caused 15056premature deletion of a buffer object if a buffer was used as an 15057ASL operand where an integer operand is required (Thus causing an 15058implicit object conversion from Buffer to Integer.) The change in 15059the 10/02 release was attempting to fix a memory leak (albeit 15060incorrectly.) 15061 15062Code and Data Size: Current core subsystem library sizes are shown 15063below. These are the code and data sizes for the acpica.lib 15064produced by the Microsoft Visual C++ 6.0 compiler, and these 15065values do not include any ACPI driver or OSPM code. The debug 15066version of the code includes the debug output trace mechanism and 15067has a much larger code and data size. Note that these values will 15068vary depending on the efficiency of the compiler and the compiler 15069options used during generation. 15070 15071 Previous Release 15072 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15073 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15074 Current Release: 15075 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15076 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15077 15078 150792) Linux 15080 15081Changed the implementation of the ACPI semaphores to use down() 15082instead of down_interruptable(). It is important that the 15083execution of ACPI control methods not be interrupted by signals. 15084Methods must run to completion, or the system may be left in an 15085unknown/unstable state. 15086 15087Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 15088(Shawn Starr) 15089 15090 150913) iASL Compiler/Disassembler 15092 15093 15094Changed the default location of output files. All output files 15095are now placed in the current directory by default instead of in 15096the directory of the source file. This change may affect some 15097existing makefiles, but it brings the behavior of the compiler in 15098line with other similar tools. The location of the output files 15099can be overridden with the -p command line switch. 15100 15101 15102---------------------------------------- 1510311 November 2002. Summary of changes for version 20021111. 15104 15105 151060) ACPI Specification 2.0B is released and is now available at: 15107http://www.acpi.info/index.html 15108 15109 151101) ACPI CA Core Subsystem: 15111 15112Implemented support for the ACPI 2.0 SMBus Operation Regions. 15113This includes the early detection and handoff of the request to 15114the SMBus region handler (avoiding all of the complex field 15115support code), and support for the bidirectional return packet 15116from an SMBus write operation. This paves the way for the 15117development of SMBus drivers in each host operating system. 15118 15119Fixed a problem where the semaphore WAIT_FOREVER constant was 15120defined as 32 bits, but must be 16 bits according to the ACPI 15121specification. This had the side effect of causing ASL 15122Mutex/Event timeouts even though the ASL code requested a wait 15123forever. Changed all internal references to the ACPI timeout 15124parameter to 16 bits to prevent future problems. Changed the name 15125of WAIT_FOREVER to ACPI_WAIT_FOREVER. 15126 15127Code and Data Size: Current core subsystem library sizes are shown 15128below. These are the code and data sizes for the acpica.lib 15129produced by the Microsoft Visual C++ 6.0 compiler, and these 15130values do not include any ACPI driver or OSPM code. The debug 15131version of the code includes the debug output trace mechanism and 15132has a much larger code and data size. Note that these values will 15133vary depending on the efficiency of the compiler and the compiler 15134options used during generation. 15135 15136 Previous Release 15137 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15138 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15139 Current Release: 15140 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15141 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15142 15143 151442) Linux 15145 15146Module loading/unloading fixes (John Cagle) 15147 15148 151493) iASL Compiler/Disassembler 15150 15151Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 15152 15153Implemented support for the disassembly of all SMBus protocol 15154keywords (SMBQuick, SMBWord, etc.) 15155 15156---------------------------------------- 1515701 November 2002. Summary of changes for version 20021101. 15158 15159 151601) ACPI CA Core Subsystem: 15161 15162Fixed a problem where platforms that have a GPE1 block but no GPE0 15163block were not handled correctly. This resulted in a "GPE 15164overlap" error message. GPE0 is no longer required. 15165 15166Removed code added in the previous release that inserted nodes 15167into the namespace in alphabetical order. This caused some side- 15168effects on various machines. The root cause of the problem is 15169still under investigation since in theory, the internal ordering 15170of the namespace nodes should not matter. 15171 15172 15173Enhanced error reporting for the case where a named object is not 15174found during control method execution. The full ACPI namepath 15175(name reference) of the object that was not found is displayed in 15176this case. 15177 15178Note: as a result of the overhaul of the namespace object types in 15179the previous release, the namespace nodes for the predefined 15180scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 15181instead of ACPI_TYPE_ANY. This simplifies the namespace 15182management code but may affect code that walks the namespace tree 15183looking for specific object types. 15184 15185Code and Data Size: Current core subsystem library sizes are shown 15186below. These are the code and data sizes for the acpica.lib 15187produced by the Microsoft Visual C++ 6.0 compiler, and these 15188values do not include any ACPI driver or OSPM code. The debug 15189version of the code includes the debug output trace mechanism and 15190has a much larger code and data size. Note that these values will 15191vary depending on the efficiency of the compiler and the compiler 15192options used during generation. 15193 15194 Previous Release 15195 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15196 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15197 Current Release: 15198 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15199 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15200 15201 152022) Linux 15203 15204Fixed a problem introduced in the previous release where the 15205Processor and Thermal objects were not recognized and installed in 15206/proc. This was related to the scope type change described above. 15207 15208 152093) iASL Compiler/Disassembler 15210 15211Implemented the -g option to get all of the required ACPI tables 15212from the registry and save them to files (Windows version of the 15213compiler only.) The required tables are the FADT, FACS, and DSDT. 15214 15215Added ACPI table checksum validation during table disassembly in 15216order to catch corrupted tables. 15217 15218 15219---------------------------------------- 1522022 October 2002. Summary of changes for version 20021022. 15221 152221) ACPI CA Core Subsystem: 15223 15224Implemented a restriction on the Scope operator that the target 15225must already exist in the namespace at the time the operator is 15226encountered (during table load or method execution). In other 15227words, forward references are not allowed and Scope() cannot 15228create a new object. This changes the previous behavior where the 15229interpreter would create the name if not found. This new behavior 15230correctly enables the search-to-root algorithm during namespace 15231lookup of the target name. Because of this upsearch, this fixes 15232the known Compaq _SB_.OKEC problem and makes both the AML 15233interpreter and iASL compiler compatible with other ACPI 15234implementations. 15235 15236Completed a major overhaul of the internal ACPI object types for 15237the ACPI Namespace and the associated operand objects. Many of 15238these types had become obsolete with the introduction of the two- 15239pass namespace load. This cleanup simplifies the code and makes 15240the entire namespace load mechanism much clearer and easier to 15241understand. 15242 15243Improved debug output for tracking scope opening/closing to help 15244diagnose scoping issues. The old scope name as well as the new 15245scope name are displayed. Also improved error messages for 15246problems with ASL Mutex objects and error messages for GPE 15247problems. 15248 15249Cleaned up the namespace dump code, removed obsolete code. 15250 15251All string output (for all namespace/object dumps) now uses the 15252common ACPI string output procedure which handles escapes properly 15253and does not emit non-printable characters. 15254 15255Fixed some issues with constants in the 64-bit version of the 15256local C library (utclib.c) 15257 15258 152592) Linux 15260 15261EC Driver: No longer attempts to acquire the Global Lock at 15262interrupt level. 15263 15264 152653) iASL Compiler/Disassembler 15266 15267Implemented ACPI 2.0B grammar change that disallows all Type 1 and 152682 opcodes outside of a control method. This means that the 15269"executable" operators (versus the "namespace" operators) cannot 15270be used at the table level; they can only be used within a control 15271method. 15272 15273Implemented the restriction on the Scope() operator where the 15274target must already exist in the namespace at the time the 15275operator is encountered (during ASL compilation). In other words, 15276forward references are not allowed and Scope() cannot create a new 15277object. This makes the iASL compiler compatible with other ACPI 15278implementations and makes the Scope() implementation adhere to the 15279ACPI specification. 15280 15281Fixed a problem where namepath optimization for the Alias operator 15282was optimizing the wrong path (of the two namepaths.) This caused 15283a "Missing alias link" error message. 15284 15285Fixed a problem where an "unknown reserved name" warning could be 15286incorrectly generated for names like "_SB" when the trailing 15287underscore is not used in the original ASL. 15288 15289Fixed a problem where the reserved name check did not handle 15290NamePaths with multiple NameSegs correctly. The first nameseg of 15291the NamePath was examined instead of the last NameSeg. 15292 15293 15294---------------------------------------- 15295 1529602 October 2002. Summary of changes for this release. 15297 15298 152991) ACPI CA Core Subsystem version 20021002: 15300 15301Fixed a problem where a store/copy of a string to an existing 15302string did not always set the string length properly in the String 15303object. 15304 15305Fixed a reported problem with the ToString operator where the 15306behavior was identical to the ToHexString operator instead of just 15307simply converting a raw buffer to a string data type. 15308 15309Fixed a problem where CopyObject and the other "explicit" 15310conversion operators were not updating the internal namespace node 15311type as part of the store operation. 15312 15313Fixed a memory leak during implicit source operand conversion 15314where the original object was not deleted if it was converted to a 15315new object of a different type. 15316 15317Enhanced error messages for all problems associated with namespace 15318lookups. Common procedure generates and prints the lookup name as 15319well as the formatted status. 15320 15321Completed implementation of a new design for the Alias support 15322within the namespace. The existing design did not handle the case 15323where a new object was assigned to one of the two names due to the 15324use of an explicit conversion operator, resulting in the two names 15325pointing to two different objects. The new design simply points 15326the Alias name to the original name node - not to the object. 15327This results in a level of indirection that must be handled in the 15328name resolution mechanism. 15329 15330Code and Data Size: Current core subsystem library sizes are shown 15331below. These are the code and data sizes for the acpica.lib 15332produced by the Microsoft Visual C++ 6.0 compiler, and these 15333values do not include any ACPI driver or OSPM code. The debug 15334version of the code includes the debug output trace mechanism and 15335has a larger code and data size. Note that these values will vary 15336depending on the efficiency of the compiler and the compiler 15337options used during generation. 15338 15339 Previous Release 15340 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15341 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15342 Current Release: 15343 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15344 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15345 15346 153472) Linux 15348 15349Initialize thermal driver's timer before it is used. (Knut 15350Neumann) 15351 15352Allow handling negative celsius values. (Kochi Takayoshi) 15353 15354Fix thermal management and make trip points. R/W (Pavel Machek) 15355 15356Fix /proc/acpi/sleep. (P. Christeas) 15357 15358IA64 fixes. (David Mosberger) 15359 15360Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 15361 15362Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 15363Brodowski) 15364 15365 153663) iASL Compiler/Disassembler 15367 15368Clarified some warning/error messages. 15369 15370 15371---------------------------------------- 1537218 September 2002. Summary of changes for this release. 15373 15374 153751) ACPI CA Core Subsystem version 20020918: 15376 15377Fixed a reported problem with reference chaining (via the Index() 15378and RefOf() operators) in the ObjectType() and SizeOf() operators. 15379The definition of these operators includes the dereferencing of 15380all chained references to return information on the base object. 15381 15382Fixed a problem with stores to indexed package elements - the 15383existing code would not complete the store if an "implicit 15384conversion" was not performed. In other words, if the existing 15385object (package element) was to be replaced completely, the code 15386didn't handle this case. 15387 15388Relaxed typechecking on the ASL "Scope" operator to allow the 15389target name to refer to an object of type Integer, String, or 15390Buffer, in addition to the scoping object types (Device, 15391predefined Scopes, Processor, PowerResource, and ThermalZone.) 15392This allows existing AML code that has workarounds for a bug in 15393Windows to function properly. A warning is issued, however. This 15394affects both the AML interpreter and the iASL compiler. Below is 15395an example of this type of ASL code: 15396 15397 Name(DEB,0x00) 15398 Scope(DEB) 15399 { 15400 15401Fixed some reported problems with 64-bit integer support in the 15402local implementation of C library functions (clib.c) 15403 15404 154052) Linux 15406 15407Use ACPI fix map region instead of IOAPIC region, since it is 15408undefined in non-SMP. 15409 15410Ensure that the SCI has the proper polarity and trigger, even on 15411systems that do not have an interrupt override entry in the MADT. 15412 154132.5 big driver reorganization (Pat Mochel) 15414 15415Use early table mapping code from acpitable.c (Andi Kleen) 15416 15417New blacklist entries (Andi Kleen) 15418 15419Blacklist improvements. Split blacklist code out into a separate 15420file. Move checking the blacklist to very early. Previously, we 15421would use ACPI tables, and then halfway through init, check the 15422blacklist -- too late. Now, it's early enough to completely fall- 15423back to non-ACPI. 15424 15425 154263) iASL Compiler/Disassembler version 20020918: 15427 15428Fixed a problem where the typechecking code didn't know that an 15429alias could point to a method. In other words, aliases were not 15430being dereferenced during typechecking. 15431 15432 15433---------------------------------------- 1543429 August 2002. Summary of changes for this release. 15435 154361) ACPI CA Core Subsystem Version 20020829: 15437 15438If the target of a Scope() operator already exists, it must be an 15439object type that actually opens a scope -- such as a Device, 15440Method, Scope, etc. This is a fatal runtime error. Similar error 15441check has been added to the iASL compiler also. 15442 15443Tightened up the namespace load to disallow multiple names in the 15444same scope. This previously was allowed if both objects were of 15445the same type. (i.e., a lookup was the same as entering a new 15446name). 15447 15448 154492) Linux 15450 15451Ensure that the ACPI interrupt has the proper trigger and 15452polarity. 15453 15454local_irq_disable is extraneous. (Matthew Wilcox) 15455 15456Make "acpi=off" actually do what it says, and not use the ACPI 15457interpreter *or* the tables. 15458 15459Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 15460Takayoshi) 15461 15462 154633) iASL Compiler/Disassembler Version 20020829: 15464 15465Implemented namepath optimization for name declarations. For 15466example, a declaration like "Method (\_SB_.ABCD)" would get 15467optimized to "Method (ABCD)" if the declaration is within the 15468\_SB_ scope. This optimization is in addition to the named 15469reference path optimization first released in the previous 15470version. This would seem to complete all possible optimizations 15471for namepaths within the ASL/AML. 15472 15473If the target of a Scope() operator already exists, it must be an 15474object type that actually opens a scope -- such as a Device, 15475Method, Scope, etc. 15476 15477Implemented a check and warning for unreachable code in the same 15478block below a Return() statement. 15479 15480Fixed a problem where the listing file was not generated if the 15481compiler aborted if the maximum error count was exceeded (200). 15482 15483Fixed a problem where the typechecking of method return values was 15484broken. This includes the check for a return value when the 15485method is invoked as a TermArg (a return value is expected.) 15486 15487Fixed a reported problem where EOF conditions during a quoted 15488string or comment caused a fault. 15489 15490 15491---------------------------------------- 1549215 August 2002. Summary of changes for this release. 15493 154941) ACPI CA Core Subsystem Version 20020815: 15495 15496Fixed a reported problem where a Store to a method argument that 15497contains a reference did not perform the indirect store correctly. 15498This problem was created during the conversion to the new 15499reference object model - the indirect store to a method argument 15500code was not updated to reflect the new model. 15501 15502Reworked the ACPI mode change code to better conform to ACPI 2.0, 15503handle corner cases, and improve code legibility (Kochi Takayoshi) 15504 15505Fixed a problem with the pathname parsing for the carat (^) 15506prefix. The heavy use of the carat operator by the new namepath 15507optimization in the iASL compiler uncovered a problem with the AML 15508interpreter handling of this prefix. In the case where one or 15509more carats precede a single nameseg, the nameseg was treated as 15510standalone and the search rule (to root) was inadvertently 15511applied. This could cause both the iASL compiler and the 15512interpreter to find the wrong object or to miss the error that 15513should occur if the object does not exist at that exact pathname. 15514 15515Found and fixed the problem where the HP Pavilion DSDT would not 15516load. This was a relatively minor tweak to the table loading code 15517(a problem caused by the unexpected encounter with a method 15518invocation not within a control method), but it does not solve the 15519overall issue of the execution of AML code at the table level. 15520This investigation is still ongoing. 15521 15522Code and Data Size: Current core subsystem library sizes are shown 15523below. These are the code and data sizes for the acpica.lib 15524produced by the Microsoft Visual C++ 6.0 compiler, and these 15525values do not include any ACPI driver or OSPM code. The debug 15526version of the code includes the debug output trace mechanism and 15527has a larger code and data size. Note that these values will vary 15528depending on the efficiency of the compiler and the compiler 15529options used during generation. 15530 15531 Previous Release 15532 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15533 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15534 Current Release: 15535 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15536 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15537 15538 155392) Linux 15540 15541Remove redundant slab.h include (Brad Hards) 15542 15543Fix several bugs in thermal.c (Herbert Nachtnebel) 15544 15545Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 15546 15547Change acpi_system_suspend to use updated irq functions (Pavel 15548Machek) 15549 15550Export acpi_get_firmware_table (Matthew Wilcox) 15551 15552Use proper root proc entry for ACPI (Kochi Takayoshi) 15553 15554Fix early-boot table parsing (Bjorn Helgaas) 15555 15556 155573) iASL Compiler/Disassembler 15558 15559Reworked the compiler options to make them more consistent and to 15560use two-letter options where appropriate. We were running out of 15561sensible letters. This may break some makefiles, so check the 15562current options list by invoking the compiler with no parameters. 15563 15564Completed the design and implementation of the ASL namepath 15565optimization option for the compiler. This option optimizes all 15566references to named objects to the shortest possible path. The 15567first attempt tries to utilize a single nameseg (4 characters) and 15568the "search-to-root" algorithm used by the interpreter. If that 15569cannot be used (because either the name is not in the search path 15570or there is a conflict with another object with the same name), 15571the pathname is optimized using the carat prefix (usually a 15572shorter string than specifying the entire path from the root.) 15573 15574Implemented support to obtain the DSDT from the Windows registry 15575(when the disassembly option is specified with no input file). 15576Added this code as the implementation for AcpiOsTableOverride in 15577the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 15578utility) to scan memory for the DSDT to the AcpiOsTableOverride 15579function in the DOS OSL to make the disassembler truly OS 15580independent. 15581 15582Implemented a new option to disassemble and compile in one step. 15583When used without an input filename, this option will grab the 15584DSDT from the local machine, disassemble it, and compile it in one 15585step. 15586 15587Added a warning message for invalid escapes (a backslash followed 15588by any character other than the allowable escapes). This catches 15589the quoted string error "\_SB_" (which should be "\\_SB_" ). 15590 15591Also, there are numerous instances in the ACPI specification where 15592this error occurs. 15593 15594Added a compiler option to disable all optimizations. This is 15595basically the "compatibility mode" because by using this option, 15596the AML code will come out exactly the same as other ASL 15597compilers. 15598 15599Added error messages for incorrectly ordered dependent resource 15600functions. This includes: missing EndDependentFn macro at end of 15601dependent resource list, nested dependent function macros (both 15602start and end), and missing StartDependentFn macro. These are 15603common errors that should be caught at compile time. 15604 15605Implemented _OSI support for the disassembler and compiler. _OSI 15606must be included in the namespace for proper disassembly (because 15607the disassembler must know the number of arguments.) 15608 15609Added an "optimization" message type that is optional (off by 15610default). This message is used for all optimizations - including 15611constant folding, integer optimization, and namepath optimization. 15612 15613---------------------------------------- 1561425 July 2002. Summary of changes for this release. 15615 15616 156171) ACPI CA Core Subsystem Version 20020725: 15618 15619The AML Disassembler has been enhanced to produce compilable ASL 15620code and has been integrated into the iASL compiler (see below) as 15621well as the single-step disassembly for the AML debugger and the 15622disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 15623resource templates and macros are fully supported. The 15624disassembler has been tested on over 30 different AML files, 15625producing identical AML when the resulting disassembled ASL file 15626is recompiled with the same ASL compiler. 15627 15628Modified the Resource Manager to allow zero interrupts and zero 15629dma channels during the GetCurrentResources call. This was 15630causing problems on some platforms. 15631 15632Added the AcpiOsRedirectOutput interface to the OSL to simplify 15633output redirection for the AcpiOsPrintf and AcpiOsVprintf 15634interfaces. 15635 15636Code and Data Size: Current core subsystem library sizes are shown 15637below. These are the code and data sizes for the acpica.lib 15638produced by the Microsoft Visual C++ 6.0 compiler, and these 15639values do not include any ACPI driver or OSPM code. The debug 15640version of the code includes the debug output trace mechanism and 15641has a larger code and data size. Note that these values will vary 15642depending on the efficiency of the compiler and the compiler 15643options used during generation. 15644 15645 Previous Release 15646 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15647 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15648 Current Release: 15649 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15650 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15651 15652 156532) Linux 15654 15655Fixed a panic in the EC driver (Dominik Brodowski) 15656 15657Implemented checksum of the R/XSDT itself during Linux table scan 15658(Richard Schaal) 15659 15660 156613) iASL compiler 15662 15663The AML disassembler is integrated into the compiler. The "-d" 15664option invokes the disassembler to completely disassemble an 15665input AML file, producing as output a text ASL file with the 15666extension ".dsl" (to avoid name collisions with existing .asl 15667source files.) A future enhancement will allow the disassembler 15668to obtain the BIOS DSDT from the registry under Windows. 15669 15670Fixed a problem with the VendorShort and VendorLong resource 15671descriptors where an invalid AML sequence was created. 15672 15673Implemented a fix for BufferData term in the ASL parser. It was 15674inadvertently defined twice, allowing invalid syntax to pass and 15675causing reduction conflicts. 15676 15677Fixed a problem where the Ones opcode could get converted to a 15678value of zero if "Ones" was used where a byte, word or dword value 15679was expected. The 64-bit value is now truncated to the correct 15680size with the correct value. 15681 15682 15683 15684---------------------------------------- 1568502 July 2002. Summary of changes for this release. 15686 15687 156881) ACPI CA Core Subsystem Version 20020702: 15689 15690The Table Manager code has been restructured to add several new 15691features. Tables that are not required by the core subsystem 15692(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 15693validated in any way and are returned from AcpiGetFirmwareTable if 15694requested. The AcpiOsTableOverride interface is now called for 15695each table that is loaded by the subsystem in order to allow the 15696host to override any table it chooses. Previously, only the DSDT 15697could be overridden. Added one new files, tbrsdt.c and 15698tbgetall.c. 15699 15700Fixed a problem with the conversion of internal package objects to 15701external objects (when a package is returned from a control 15702method.) The return buffer length was set to zero instead of the 15703proper length of the package object. 15704 15705Fixed a reported problem with the use of the RefOf and DeRefOf 15706operators when passing reference arguments to control methods. A 15707new type of Reference object is used internally for references 15708produced by the RefOf operator. 15709 15710Added additional error messages in the Resource Manager to explain 15711AE_BAD_DATA errors when they occur during resource parsing. 15712 15713Split the AcpiEnableSubsystem into two primitives to enable a 15714finer granularity initialization sequence. These two calls should 15715be called in this order: AcpiEnableSubsystem (flags), 15716AcpiInitializeObjects (flags). The flags parameter remains the 15717same. 15718 15719 157202) Linux 15721 15722Updated the ACPI utilities module to understand the new style of 15723fully resolved package objects that are now returned from the core 15724subsystem. This eliminates errors of the form: 15725 15726 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 15727 acpi_utils-0430 [145] acpi_evaluate_reference: 15728 Invalid element in package (not a device reference) 15729 15730The method evaluation utility uses the new buffer allocation 15731scheme instead of calling AcpiEvaluate Object twice. 15732 15733Added support for ECDT. This allows the use of the Embedded 15734 15735Controller before the namespace has been fully initialized, which 15736is necessary for ACPI 2.0 support, and for some laptops to 15737initialize properly. (Laptops using ECDT are still rare, so only 15738limited testing was performed of the added functionality.) 15739 15740Fixed memory leaks in the EC driver. 15741 15742Eliminated a brittle code structure in acpi_bus_init(). 15743 15744Eliminated the acpi_evaluate() helper function in utils.c. It is 15745no longer needed since acpi_evaluate_object can optionally 15746allocate memory for the return object. 15747 15748Implemented fix for keyboard hang when getting battery readings on 15749some systems (Stephen White) 15750 15751PCI IRQ routing update (Dominik Brodowski) 15752 15753Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 15754support 15755 15756---------------------------------------- 1575711 June 2002. Summary of changes for this release. 15758 15759 157601) ACPI CA Core Subsystem Version 20020611: 15761 15762Fixed a reported problem where constants such as Zero and One 15763appearing within _PRT packages were not handled correctly within 15764the resource manager code. Originally reported against the ASL 15765compiler because the code generator now optimizes integers to 15766their minimal AML representation (i.e. AML constants if possible.) 15767The _PRT code now handles all AML constant opcodes correctly 15768(Zero, One, Ones, Revision). 15769 15770Fixed a problem with the Concatenate operator in the AML 15771interpreter where a buffer result object was incorrectly marked as 15772not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 15773 15774All package sub-objects are now fully resolved before they are 15775returned from the external ACPI interfaces. This means that name 15776strings are resolved to object handles, and constant operators 15777(Zero, One, Ones, Revision) are resolved to Integers. 15778 15779Implemented immediate resolution of the AML Constant opcodes 15780(Zero, One, Ones, Revision) to Integer objects upon detection 15781within the AML stream. This has simplified and reduced the 15782generated code size of the subsystem by eliminating about 10 15783switch statements for these constants (which previously were 15784contained in Reference objects.) The complicating issues are that 15785the Zero opcode is used as a "placeholder" for unspecified 15786optional target operands and stores to constants are defined to be 15787no-ops. 15788 15789Code and Data Size: Current core subsystem library sizes are shown 15790below. These are the code and data sizes for the acpica.lib 15791produced by the Microsoft Visual C++ 6.0 compiler, and these 15792values do not include any ACPI driver or OSPM code. The debug 15793version of the code includes the debug output trace mechanism and 15794has a larger code and data size. Note that these values will vary 15795depending on the efficiency of the compiler and the compiler 15796options used during generation. 15797 15798 Previous Release 15799 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15800 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15801 Current Release: 15802 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15803 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15804 15805 158062) Linux 15807 15808 15809Added preliminary support for obtaining _TRA data for PCI root 15810bridges (Bjorn Helgaas). 15811 15812 158133) iASL Compiler Version X2046: 15814 15815Fixed a problem where the "_DDN" reserved name was defined to be a 15816control method with one argument. There are no arguments, and 15817_DDN does not have to be a control method. 15818 15819Fixed a problem with the Linux version of the compiler where the 15820source lines printed with error messages were the wrong lines. 15821This turned out to be the "LF versus CR/LF" difference between 15822Windows and Unix. This appears to be the longstanding issue 15823concerning listing output and error messages. 15824 15825Fixed a problem with the Linux version of compiler where opcode 15826names within error messages were wrong. This was caused by a 15827slight difference in the output of the Flex tool on Linux versus 15828Windows. 15829 15830Fixed a problem with the Linux compiler where the hex output files 15831contained some garbage data caused by an internal buffer overrun. 15832 15833 15834---------------------------------------- 1583517 May 2002. Summary of changes for this release. 15836 15837 158381) ACPI CA Core Subsystem Version 20020517: 15839 15840Implemented a workaround to an BIOS bug discovered on the HP 15841OmniBook where the FADT revision number and the table size are 15842inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 15843behavior is to fallback to using only the ACPI 1.0 fields of the 15844FADT if the table is too small to be a ACPI 2.0 table as claimed 15845by the revision number. Although this is a BIOS bug, this is a 15846case where the workaround is simple enough and with no side 15847effects, so it seemed prudent to add it. A warning message is 15848issued, however. 15849 15850Implemented minimum size checks for the fixed-length ACPI tables - 15851- the FADT and FACS, as well as consistency checks between the 15852revision number and the table size. 15853 15854Fixed a reported problem in the table override support where the 15855new table pointer was incorrectly treated as a physical address 15856instead of a logical address. 15857 15858Eliminated the use of the AE_AML_ERROR exception and replaced it 15859with more descriptive codes. 15860 15861Fixed a problem where an exception would occur if an ASL Field was 15862defined with no named Field Units underneath it (used by some 15863index fields). 15864 15865Code and Data Size: Current core subsystem library sizes are shown 15866below. These are the code and data sizes for the acpica.lib 15867produced by the Microsoft Visual C++ 6.0 compiler, and these 15868values do not include any ACPI driver or OSPM code. The debug 15869version of the code includes the debug output trace mechanism and 15870has a larger code and data size. Note that these values will vary 15871depending on the efficiency of the compiler and the compiler 15872options used during generation. 15873 15874 Previous Release 15875 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15876 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15877 Current Release: 15878 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15879 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15880 15881 15882 158832) Linux 15884 15885Much work done on ACPI init (MADT and PCI IRQ routing support). 15886(Paul D. and Dominik Brodowski) 15887 15888Fix PCI IRQ-related panic on boot (Sam Revitch) 15889 15890Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 15891 15892Fix "MHz" typo (Dominik Brodowski) 15893 15894Fix RTC year 2000 issue (Dominik Brodowski) 15895 15896Preclude multiple button proc entries (Eric Brunet) 15897 15898Moved arch-specific code out of include/platform/aclinux.h 15899 159003) iASL Compiler Version X2044: 15901 15902Implemented error checking for the string used in the EISAID macro 15903(Usually used in the definition of the _HID object.) The code now 15904strictly enforces the PnP format - exactly 7 characters, 3 15905uppercase letters and 4 hex digits. 15906 15907If a raw string is used in the definition of the _HID object 15908(instead of the EISAID macro), the string must contain all 15909alphanumeric characters (e.g., "*PNP0011" is not allowed because 15910of the asterisk.) 15911 15912Implemented checking for invalid use of ACPI reserved names for 15913most of the name creation operators (Name, Device, Event, Mutex, 15914OperationRegion, PowerResource, Processor, and ThermalZone.) 15915Previously, this check was only performed for control methods. 15916 15917Implemented an additional check on the Name operator to emit an 15918error if a reserved name that must be implemented in ASL as a 15919control method is used. We know that a reserved name must be a 15920method if it is defined with input arguments. 15921 15922The warning emitted when a namespace object reference is not found 15923during the cross reference phase has been changed into an error. 15924The "External" directive should be used for names defined in other 15925modules. 15926 15927 159284) Tools and Utilities 15929 15930The 16-bit tools (adump16 and aexec16) have been regenerated and 15931tested. 15932 15933Fixed a problem with the output of both acpidump and adump16 where 15934the indentation of closing parentheses and brackets was not 15935 15936aligned properly with the parent block. 15937 15938 15939---------------------------------------- 1594003 May 2002. Summary of changes for this release. 15941 15942 159431) ACPI CA Core Subsystem Version 20020503: 15944 15945Added support a new OSL interface that allows the host operating 15946 15947system software to override the DSDT found in the firmware - 15948AcpiOsTableOverride. With this interface, the OSL can examine the 15949version of the firmware DSDT and replace it with a different one 15950if desired. 15951 15952Added new external interfaces for accessing ACPI registers from 15953device drivers and other system software - AcpiGetRegister and 15954AcpiSetRegister. This was simply an externalization of the 15955existing AcpiHwBitRegister interfaces. 15956 15957Fixed a regression introduced in the previous build where the 15958ASL/AML CreateField operator always returned an error, 15959"destination must be a NS Node". 15960 15961Extended the maximum time (before failure) to successfully enable 15962ACPI mode to 3 seconds. 15963 15964Code and Data Size: Current core subsystem library sizes are shown 15965below. These are the code and data sizes for the acpica.lib 15966produced by the Microsoft Visual C++ 6.0 compiler, and these 15967values do not include any ACPI driver or OSPM code. The debug 15968version of the code includes the debug output trace mechanism and 15969has a larger code and data size. Note that these values will vary 15970depending on the efficiency of the compiler and the compiler 15971options used during generation. 15972 15973 Previous Release 15974 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15975 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15976 Current Release: 15977 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15978 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15979 15980 159812) Linux 15982 15983Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 15984free. While 3 out of 4 of our in-house systems work fine, the last 15985one still hangs when testing the LAPIC timer. 15986 15987Renamed many files in 2.5 kernel release to omit "acpi_" from the 15988name. 15989 15990Added warning on boot for Presario 711FR. 15991 15992Sleep improvements (Pavel Machek) 15993 15994ACPI can now be built without CONFIG_PCI enabled. 15995 15996IA64: Fixed memory map functions (JI Lee) 15997 15998 159993) iASL Compiler Version X2043: 16000 16001Added support to allow the compiler to be integrated into the MS 16002VC++ development environment for one-button compilation of single 16003files or entire projects -- with error-to-source-line mapping. 16004 16005Implemented support for compile-time constant folding for the 16006Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 16007specification. This allows the ASL writer to use expressions 16008instead of Integer/Buffer/String constants in terms that must 16009evaluate to constants at compile time and will also simplify the 16010emitted AML in any such sub-expressions that can be folded 16011(evaluated at compile-time.) This increases the size of the 16012compiler significantly because a portion of the ACPI CA AML 16013interpreter is included within the compiler in order to pre- 16014evaluate constant expressions. 16015 16016 16017Fixed a problem with the "Unicode" ASL macro that caused the 16018compiler to fault. (This macro is used in conjunction with the 16019_STR reserved name.) 16020 16021Implemented an AML opcode optimization to use the Zero, One, and 16022Ones opcodes where possible to further reduce the size of integer 16023constants and thus reduce the overall size of the generated AML 16024code. 16025 16026Implemented error checking for new reserved terms for ACPI version 160272.0A. 16028 16029Implemented the -qr option to display the current list of ACPI 16030reserved names known to the compiler. 16031 16032Implemented the -qc option to display the current list of ASL 16033operators that are allowed within constant expressions and can 16034therefore be folded at compile time if the operands are constants. 16035 16036 160374) Documentation 16038 16039Updated the Programmer's Reference for new interfaces, data types, 16040and memory allocation model options. 16041 16042Updated the iASL Compiler User Reference to apply new format and 16043add information about new features and options. 16044 16045---------------------------------------- 1604619 April 2002. Summary of changes for this release. 16047 160481) ACPI CA Core Subsystem Version 20020419: 16049 16050The source code base for the Core Subsystem has been completely 16051cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 16052versions. The Lint option files used are included in the 16053/acpi/generate/lint directory. 16054 16055Implemented enhanced status/error checking across the entire 16056Hardware manager subsystem. Any hardware errors (reported from 16057the OSL) are now bubbled up and will abort a running control 16058method. 16059 16060 16061Fixed a problem where the per-ACPI-table integer width (32 or 64) 16062was stored only with control method nodes, causing a fault when 16063non-control method code was executed during table loading. The 16064solution implemented uses a global variable to indicate table 16065width across the entire ACPI subsystem. Therefore, ACPI CA does 16066not support mixed integer widths across different ACPI tables 16067(DSDT, SSDT). 16068 16069Fixed a problem where NULL extended fields (X fields) in an ACPI 160702.0 ACPI FADT caused the table load to fail. Although the 16071existing ACPI specification is a bit fuzzy on this topic, the new 16072behavior is to fall back on a ACPI 1.0 field if the corresponding 16073ACPI 2.0 X field is zero (even though the table revision indicates 16074a full ACPI 2.0 table.) The ACPI specification will be updated to 16075clarify this issue. 16076 16077Fixed a problem with the SystemMemory operation region handler 16078where memory was always accessed byte-wise even if the AML- 16079specified access width was larger than a byte. This caused 16080problems on systems with memory-mapped I/O. Memory is now 16081accessed with the width specified. On systems that do not support 16082non-aligned transfers, a check is made to guarantee proper address 16083alignment before proceeding in order to avoid an AML-caused 16084alignment fault within the kernel. 16085 16086 16087Fixed a problem with the ExtendedIrq resource where only one byte 16088of the 4-byte Irq field was extracted. 16089 16090Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 16091function was out of date and required a rewrite. 16092 16093Code and Data Size: Current core subsystem library sizes are shown 16094below. These are the code and data sizes for the acpica.lib 16095produced by the Microsoft Visual C++ 6.0 compiler, and these 16096values do not include any ACPI driver or OSPM code. The debug 16097version of the code includes the debug output trace mechanism and 16098has a larger code and data size. Note that these values will vary 16099depending on the efficiency of the compiler and the compiler 16100options used during generation. 16101 16102 Previous Release 16103 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16104 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16105 Current Release: 16106 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16107 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16108 16109 161102) Linux 16111 16112PCI IRQ routing fixes (Dominik Brodowski) 16113 16114 161153) iASL Compiler Version X2042: 16116 16117Implemented an additional compile-time error check for a field 16118unit whose size + minimum access width would cause a run-time 16119access beyond the end-of-region. Previously, only the field size 16120itself was checked. 16121 16122The Core subsystem and iASL compiler now share a common parse 16123object in preparation for compile-time evaluation of the type 161243/4/5 ASL operators. 16125 16126 16127---------------------------------------- 16128Summary of changes for this release: 03_29_02 16129 161301) ACPI CA Core Subsystem Version 20020329: 16131 16132Implemented support for late evaluation of TermArg operands to 16133Buffer and Package objects. This allows complex expressions to be 16134used in the declarations of these object types. 16135 16136Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 161371.0, if the field was larger than 32 bits, it was returned as a 16138buffer - otherwise it was returned as an integer. In ACPI 2.0, 16139the field is returned as a buffer only if the field is larger than 1614064 bits. The TableRevision is now considered when making this 16141conversion to avoid incompatibility with existing ASL code. 16142 16143Implemented logical addressing for AcpiOsGetRootPointer. This 16144allows an RSDP with either a logical or physical address. With 16145this support, the host OS can now override all ACPI tables with 16146one logical RSDP. Includes implementation of "typed" pointer 16147support to allow a common data type for both physical and logical 16148pointers internally. This required a change to the 16149AcpiOsGetRootPointer interface. 16150 16151Implemented the use of ACPI 2.0 Generic Address Structures for all 16152GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 16153mapped I/O for these ACPI features. 16154 16155Initialization now ignores not only non-required tables (All 16156tables other than the FADT, FACS, DSDT, and SSDTs), but also does 16157not validate the table headers of unrecognized tables. 16158 16159Fixed a problem where a notify handler could only be 16160installed/removed on an object of type Device. All "notify" 16161 16162objects are now supported -- Devices, Processor, Power, and 16163Thermal. 16164 16165Removed most verbosity from the ACPI_DB_INFO debug level. Only 16166critical information is returned when this debug level is enabled. 16167 16168Code and Data Size: Current core subsystem library sizes are shown 16169below. These are the code and data sizes for the acpica.lib 16170produced by the Microsoft Visual C++ 6.0 compiler, and these 16171values do not include any ACPI driver or OSPM code. The debug 16172version of the code includes the debug output trace mechanism and 16173has a larger code and data size. Note that these values will vary 16174depending on the efficiency of the compiler and the compiler 16175options used during generation. 16176 16177 Previous Release 16178 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16179 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16180 Current Release: 16181 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16182 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16183 16184 161852) Linux: 16186 16187The processor driver (acpi_processor.c) now fully supports ACPI 161882.0-based processor performance control (e.g. Intel(R) 16189SpeedStep(TM) technology) Note that older laptops that only have 16190the Intel "applet" interface are not supported through this. The 16191'limit' and 'performance' interface (/proc) are fully functional. 16192[Note that basic policy for controlling performance state 16193transitions will be included in the next version of ospmd.] The 16194idle handler was modified to more aggressively use C2, and PIIX4 16195errata handling underwent a complete overhaul (big thanks to 16196Dominik Brodowski). 16197 16198Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 16199based devices in the ACPI namespace are now dynamically bound 16200(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 16201This allows, among other things, ACPI to resolve bus numbers for 16202subordinate PCI bridges. 16203 16204Enhanced PCI IRQ routing to get the proper bus number for _PRT 16205entries defined underneath PCI bridges. 16206 16207Added IBM 600E to bad bios list due to invalid _ADR value for 16208PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 16209 16210In the process of adding full MADT support (e.g. IOAPIC) for IA32 16211(acpi.c, mpparse.c) -- stay tuned. 16212 16213Added back visual differentiation between fixed-feature and 16214control-method buttons in dmesg. Buttons are also subtyped (e.g. 16215button/power/PWRF) to simplify button identification. 16216 16217We no longer use -Wno-unused when compiling debug. Please ignore 16218any "_THIS_MODULE defined but not used" messages. 16219 16220Can now shut down the system using "magic sysrq" key. 16221 16222 162233) iASL Compiler version 2041: 16224 16225Fixed a problem where conversion errors for hex/octal/decimal 16226constants were not reported. 16227 16228Implemented a fix for the General Register template Address field. 16229This field was 8 bits when it should be 64. 16230 16231Fixed a problem where errors/warnings were no longer being emitted 16232within the listing output file. 16233 16234Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 16235exactly 4 characters, alphanumeric only. 16236 16237 16238 16239 16240---------------------------------------- 16241Summary of changes for this release: 03_08_02 16242 16243 162441) ACPI CA Core Subsystem Version 20020308: 16245 16246Fixed a problem with AML Fields where the use of the "AccessAny" 16247keyword could cause an interpreter error due to attempting to read 16248or write beyond the end of the parent Operation Region. 16249 16250Fixed a problem in the SystemMemory Operation Region handler where 16251an attempt was made to map memory beyond the end of the region. 16252This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 16253errors on some Linux systems. 16254 16255Fixed a problem where the interpreter/namespace "search to root" 16256algorithm was not functioning for some object types. Relaxed the 16257internal restriction on the search to allow upsearches for all 16258external object types as well as most internal types. 16259 16260 162612) Linux: 16262 16263We now use safe_halt() macro versus individual calls to sti | hlt. 16264 16265Writing to the processor limit interface should now work. "echo 1" 16266will increase the limit, 2 will decrease, and 0 will reset to the 16267 16268default. 16269 16270 162713) ASL compiler: 16272 16273Fixed segfault on Linux version. 16274 16275 16276---------------------------------------- 16277Summary of changes for this release: 02_25_02 16278 162791) ACPI CA Core Subsystem: 16280 16281 16282Fixed a problem where the GPE bit masks were not initialized 16283properly, causing erratic GPE behavior. 16284 16285Implemented limited support for multiple calling conventions. The 16286code can be generated with either the VPL (variable parameter 16287list, or "C") convention, or the FPL (fixed parameter list, or 16288"Pascal") convention. The core subsystem is about 3.4% smaller 16289when generated with FPL. 16290 16291 162922) Linux 16293 16294Re-add some /proc/acpi/event functionality that was lost during 16295the rewrite 16296 16297Resolved issue with /proc events for fixed-feature buttons showing 16298up as the system device. 16299 16300Fixed checks on C2/C3 latencies to be inclusive of maximum values. 16301 16302Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 16303 16304Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 16305 16306Fixed limit interface & usage to fix bugs with passive cooling 16307hysterisis. 16308 16309Restructured PRT support. 16310 16311 16312---------------------------------------- 16313Summary of changes for this label: 02_14_02 16314 16315 163161) ACPI CA Core Subsystem: 16317 16318Implemented support in AcpiLoadTable to allow loading of FACS and 16319FADT tables. 16320 16321Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 16322been removed. All 64-bit platforms should be migrated to the ACPI 163232.0 tables. The actbl71.h header has been removed from the source 16324tree. 16325 16326All C macros defined within the subsystem have been prefixed with 16327"ACPI_" to avoid collision with other system include files. 16328 16329Removed the return value for the two AcpiOsPrint interfaces, since 16330it is never used and causes lint warnings for ignoring the return 16331value. 16332 16333Added error checking to all internal mutex acquire and release 16334calls. Although a failure from one of these interfaces is 16335probably a fatal system error, these checks will cause the 16336immediate abort of the currently executing method or interface. 16337 16338Fixed a problem where the AcpiSetCurrentResources interface could 16339fault. This was a side effect of the deployment of the new memory 16340allocation model. 16341 16342Fixed a couple of problems with the Global Lock support introduced 16343in the last major build. The "common" (1.0/2.0) internal FACS was 16344being overwritten with the FACS signature and clobbering the 16345Global Lock pointer. Also, the actual firmware FACS was being 16346unmapped after construction of the "common" FACS, preventing 16347access to the actual Global Lock field within it. The "common" 16348internal FACS is no longer installed as an actual ACPI table; it 16349is used simply as a global. 16350 16351Code and Data Size: Current core subsystem library sizes are shown 16352below. These are the code and data sizes for the acpica.lib 16353produced by the Microsoft Visual C++ 6.0 compiler, and these 16354values do not include any ACPI driver or OSPM code. The debug 16355version of the code includes the debug output trace mechanism and 16356has a larger code and data size. Note that these values will vary 16357depending on the efficiency of the compiler and the compiler 16358options used during generation. 16359 16360 Previous Release (02_07_01) 16361 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16362 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16363 Current Release: 16364 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16365 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16366 16367 163682) Linux 16369 16370Updated Linux-specific code for core macro and OSL interface 16371changes described above. 16372 16373Improved /proc/acpi/event. It now can be opened only once and has 16374proper poll functionality. 16375 16376Fixed and restructured power management (acpi_bus). 16377 16378Only create /proc "view by type" when devices of that class exist. 16379 16380Fixed "charging/discharging" bug (and others) in acpi_battery. 16381 16382Improved thermal zone code. 16383 16384 163853) ASL Compiler, version X2039: 16386 16387 16388Implemented the new compiler restriction on ASL String hex/octal 16389escapes to non-null, ASCII values. An error results if an invalid 16390value is used. (This will require an ACPI 2.0 specification 16391change.) 16392 16393AML object labels that are output to the optional C and ASM source 16394are now prefixed with both the ACPI table signature and table ID 16395to help guarantee uniqueness within a large BIOS project. 16396 16397 16398---------------------------------------- 16399Summary of changes for this label: 02_01_02 16400 164011) ACPI CA Core Subsystem: 16402 16403ACPI 2.0 support is complete in the entire Core Subsystem and the 16404ASL compiler. All new ACPI 2.0 operators are implemented and all 16405other changes for ACPI 2.0 support are complete. With 16406simultaneous code and data optimizations throughout the subsystem, 16407ACPI 2.0 support has been implemented with almost no additional 16408cost in terms of code and data size. 16409 16410Implemented a new mechanism for allocation of return buffers. If 16411the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 16412be allocated on behalf of the caller. Consolidated all return 16413buffer validation and allocation to a common procedure. Return 16414buffers will be allocated via the primary OSL allocation interface 16415since it appears that a separate pool is not needed by most users. 16416If a separate pool is required for these buffers, the caller can 16417still use the original mechanism and pre-allocate the buffer(s). 16418 16419Implemented support for string operands within the DerefOf 16420operator. 16421 16422Restructured the Hardware and Event managers to be table driven, 16423simplifying the source code and reducing the amount of generated 16424code. 16425 16426Split the common read/write low-level ACPI register bitfield 16427procedure into a separate read and write, simplifying the code 16428considerably. 16429 16430Obsoleted the AcpiOsCallocate OSL interface. This interface was 16431used only a handful of times and didn't have enough critical mass 16432for a separate interface. Replaced with a common calloc procedure 16433in the core. 16434 16435Fixed a reported problem with the GPE number mapping mechanism 16436that allows GPE1 numbers to be non-contiguous with GPE0. 16437Reorganized the GPE information and shrunk a large array that was 16438originally large enough to hold info for all possible GPEs (256) 16439to simply large enough to hold all GPEs up to the largest GPE 16440number on the machine. 16441 16442Fixed a reported problem with resource structure alignment on 64- 16443bit platforms. 16444 16445Changed the AcpiEnableEvent and AcpiDisableEvent external 16446interfaces to not require any flags for the common case of 16447enabling/disabling a GPE. 16448 16449Implemented support to allow a "Notify" on a Processor object. 16450 16451Most TBDs in comments within the source code have been resolved 16452and eliminated. 16453 16454 16455Fixed a problem in the interpreter where a standalone parent 16456prefix (^) was not handled correctly in the interpreter and 16457debugger. 16458 16459Removed obsolete and unnecessary GPE save/restore code. 16460 16461Implemented Field support in the ASL Load operator. This allows a 16462table to be loaded from a named field, in addition to loading a 16463table directly from an Operation Region. 16464 16465Implemented timeout and handle support in the external Global Lock 16466interfaces. 16467 16468Fixed a problem in the AcpiDump utility where pathnames were no 16469longer being generated correctly during the dump of named objects. 16470 16471Modified the AML debugger to give a full display of if/while 16472predicates instead of just one AML opcode at a time. (The 16473predicate can have several nested ASL statements.) The old method 16474was confusing during single stepping. 16475 16476Code and Data Size: Current core subsystem library sizes are shown 16477below. These are the code and data sizes for the acpica.lib 16478produced by the Microsoft Visual C++ 6.0 compiler, and these 16479values do not include any ACPI driver or OSPM code. The debug 16480version of the code includes the debug output trace mechanism and 16481has a larger code and data size. Note that these values will vary 16482depending on the efficiency of the compiler and the compiler 16483options used during generation. 16484 16485 Previous Release (12_18_01) 16486 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16487 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16488 Current Release: 16489 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16490 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16491 164922) Linux 16493 16494 Implemented fix for PIIX reverse throttling errata (Processor 16495driver) 16496 16497Added new Limit interface (Processor and Thermal drivers) 16498 16499New thermal policy (Thermal driver) 16500 16501Many updates to /proc 16502 16503Battery "low" event support (Battery driver) 16504 16505Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 16506 16507IA32 - IA64 initialization unification, no longer experimental 16508 16509Menuconfig options redesigned 16510 165113) ASL Compiler, version X2037: 16512 16513Implemented several new output features to simplify integration of 16514AML code into firmware: 1) Output the AML in C source code with 16515labels for each named ASL object. The original ASL source code 16516is interleaved as C comments. 2) Output the AML in ASM source code 16517with labels and interleaved ASL source. 3) Output the AML in 16518raw hex table form, in either C or ASM. 16519 16520Implemented support for optional string parameters to the 16521LoadTable operator. 16522 16523Completed support for embedded escape sequences within string 16524literals. The compiler now supports all single character escapes 16525as well as the Octal and Hex escapes. Note: the insertion of a 16526null byte into a string literal (via the hex/octal escape) causes 16527the string to be immediately terminated. A warning is issued. 16528 16529Fixed a problem where incorrect AML was generated for the case 16530where an ASL namepath consists of a single parent prefix ( 16531 16532) with no trailing name segments. 16533 16534The compiler has been successfully generated with a 64-bit C 16535compiler. 16536 16537 16538 16539 16540---------------------------------------- 16541Summary of changes for this label: 12_18_01 16542 165431) Linux 16544 16545Enhanced blacklist with reason and severity fields. Any table's 16546signature may now be used to identify a blacklisted system. 16547 16548Call _PIC control method to inform the firmware which interrupt 16549model the OS is using. Turn on any disabled link devices. 16550 16551Cleaned up busmgr /proc error handling (Andreas Dilger) 16552 16553 2) ACPI CA Core Subsystem: 16554 16555Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 16556while loop) 16557 16558Completed implementation of the ACPI 2.0 "Continue", 16559"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 16560operators. All new ACPI 2.0 operators are now implemented in both 16561the ASL compiler and the AML interpreter. The only remaining ACPI 165622.0 task is support for the String data type in the DerefOf 16563operator. Fixed a problem with AcquireMutex where the status code 16564was lost if the caller had to actually wait for the mutex. 16565 16566Increased the maximum ASL Field size from 64K bits to 4G bits. 16567 16568Completed implementation of the external Global Lock interfaces -- 16569AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 16570Handler parameters were added. 16571 16572Completed another pass at removing warnings and issues when 16573compiling with 64-bit compilers. The code now compiles cleanly 16574with the Intel 64-bit C/C++ compiler. Most notably, the pointer 16575add and subtract (diff) macros have changed considerably. 16576 16577 16578Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1657964-bit platforms, 32-bits on all others. This type is used 16580wherever memory allocation and/or the C sizeof() operator is used, 16581and affects the OSL memory allocation interfaces AcpiOsAllocate 16582and AcpiOsCallocate. 16583 16584Implemented sticky user breakpoints in the AML debugger. 16585 16586Code and Data Size: Current core subsystem library sizes are shown 16587below. These are the code and data sizes for the acpica.lib 16588produced by the Microsoft Visual C++ 6.0 compiler, and these 16589values do not include any ACPI driver or OSPM code. The debug 16590version of the code includes the debug output trace mechanism and 16591has a larger code and data size. Note that these values will vary 16592depending on the efficiency of the compiler and the compiler 16593options used during generation. 16594 16595 Previous Release (12_05_01) 16596 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16597 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16598 Current Release: 16599 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16600 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16601 16602 3) ASL Compiler, version X2034: 16603 16604Now checks for (and generates an error if detected) the use of a 16605Break or Continue statement without an enclosing While statement. 16606 16607 16608Successfully generated the compiler with the Intel 64-bit C 16609compiler. 16610 16611 ---------------------------------------- 16612Summary of changes for this label: 12_05_01 16613 16614 1) ACPI CA Core Subsystem: 16615 16616The ACPI 2.0 CopyObject operator is fully implemented. This 16617operator creates a new copy of an object (and is also used to 16618bypass the "implicit conversion" mechanism of the Store operator.) 16619 16620The ACPI 2.0 semantics for the SizeOf operator are fully 16621implemented. The change is that performing a SizeOf on a 16622reference object causes an automatic dereference of the object to 16623tha actual value before the size is evaluated. This behavior was 16624undefined in ACPI 1.0. 16625 16626The ACPI 2.0 semantics for the Extended IRQ resource descriptor 16627have been implemented. The interrupt polarity and mode are now 16628independently set. 16629 16630Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 16631appearing in Package objects were not properly converted to 16632integers when the internal Package was converted to an external 16633object (via the AcpiEvaluateObject interface.) 16634 16635Fixed a problem with the namespace object deletion mechanism for 16636objects created by control methods. There were two parts to this 16637problem: 1) Objects created during the initialization phase method 16638parse were not being deleted, and 2) The object owner ID mechanism 16639to track objects was broken. 16640 16641Fixed a problem where the use of the ASL Scope operator within a 16642control method would result in an invalid opcode exception. 16643 16644Fixed a problem introduced in the previous label where the buffer 16645length required for the _PRT structure was not being returned 16646correctly. 16647 16648Code and Data Size: Current core subsystem library sizes are shown 16649below. These are the code and data sizes for the acpica.lib 16650produced by the Microsoft Visual C++ 6.0 compiler, and these 16651values do not include any ACPI driver or OSPM code. The debug 16652version of the code includes the debug output trace mechanism and 16653has a larger code and data size. Note that these values will vary 16654depending on the efficiency of the compiler and the compiler 16655options used during generation. 16656 16657 Previous Release (11_20_01) 16658 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16659 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16660 16661 Current Release: 16662 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16663 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16664 16665 2) Linux: 16666 16667Updated all files to apply cleanly against 2.4.16. 16668 16669Added basic PCI Interrupt Routing Table (PRT) support for IA32 16670(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 16671version supports both static and dyanmic PRT entries, but dynamic 16672entries are treated as if they were static (not yet 16673reconfigurable). Architecture- specific code to use this data is 16674absent on IA32 but should be available shortly. 16675 16676Changed the initialization sequence to start the ACPI interpreter 16677(acpi_init) prior to initialization of the PCI driver (pci_init) 16678in init/main.c. This ordering is required to support PRT and 16679facilitate other (future) enhancement. A side effect is that the 16680ACPI bus driver and certain device drivers can no longer be loaded 16681as modules. 16682 16683Modified the 'make menuconfig' options to allow PCI Interrupt 16684Routing support to be included without the ACPI Bus and other 16685device drivers. 16686 16687 3) ASL Compiler, version X2033: 16688 16689Fixed some issues with the use of the new CopyObject and 16690DataTableRegion operators. Both are fully functional. 16691 16692 ---------------------------------------- 16693Summary of changes for this label: 11_20_01 16694 16695 20 November 2001. Summary of changes for this release. 16696 16697 1) ACPI CA Core Subsystem: 16698 16699Updated Index support to match ACPI 2.0 semantics. Storing a 16700Integer, String, or Buffer to an Index of a Buffer will store only 16701the least-significant byte of the source to the Indexed buffer 16702byte. Multiple writes are not performed. 16703 16704Fixed a problem where the access type used in an AccessAs ASL 16705operator was not recorded correctly into the field object. 16706 16707Fixed a problem where ASL Event objects were created in a 16708signalled state. Events are now created in an unsignalled state. 16709 16710The internal object cache is now purged after table loading and 16711initialization to reduce the use of dynamic kernel memory -- on 16712the assumption that object use is greatest during the parse phase 16713of the entire table (versus the run-time use of individual control 16714methods.) 16715 16716ACPI 2.0 variable-length packages are now fully operational. 16717 16718Code and Data Size: Code and Data optimizations have permitted new 16719feature development with an actual reduction in the library size. 16720Current core subsystem library sizes are shown below. These are 16721the code and data sizes for the acpica.lib produced by the 16722Microsoft Visual C++ 6.0 compiler, and these values do not include 16723any ACPI driver or OSPM code. The debug version of the code 16724includes the debug output trace mechanism and has a larger code 16725and data size. Note that these values will vary depending on the 16726efficiency of the compiler and the compiler options used during 16727generation. 16728 16729 Previous Release (11_09_01): 16730 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16731 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16732 16733 Current Release: 16734 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16735 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16736 16737 2) Linux: 16738 16739Enhanced the ACPI boot-time initialization code to allow the use 16740of Local APIC tables for processor enumeration on IA-32, and to 16741pave the way for a fully MPS-free boot (on SMP systems) in the 16742near future. This functionality replaces 16743arch/i386/kernel/acpitables.c, which was introduced in an earlier 167442.4.15-preX release. To enable this feature you must add 16745"acpi_boot=on" to the kernel command line -- see the help entry 16746for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 16747the works... 16748 16749Restructured the configuration options to allow boot-time table 16750parsing support without inclusion of the ACPI Interpreter (and 16751other) code. 16752 16753NOTE: This release does not include fixes for the reported events, 16754power-down, and thermal passive cooling issues (coming soon). 16755 16756 3) ASL Compiler: 16757 16758Added additional typechecking for Fields within restricted access 16759Operation Regions. All fields within EC and CMOS regions must be 16760declared with ByteAcc. All fields withing SMBus regions must be 16761declared with the BufferAcc access type. 16762 16763Fixed a problem where the listing file output of control methods 16764no longer interleaved the actual AML code with the ASL source 16765code. 16766 16767 16768 16769 16770---------------------------------------- 16771Summary of changes for this label: 11_09_01 16772 167731) ACPI CA Core Subsystem: 16774 16775Implemented ACPI 2.0-defined support for writes to fields with a 16776Buffer, String, or Integer source operand that is smaller than the 16777target field. In these cases, the source operand is zero-extended 16778to fill the target field. 16779 16780Fixed a problem where a Field starting bit offset (within the 16781parent operation region) was calculated incorrectly if the 16782 16783alignment of the field differed from the access width. This 16784affected CreateWordField, CreateDwordField, CreateQwordField, and 16785possibly other fields that use the "AccessAny" keyword. 16786 16787Fixed a problem introduced in the 11_02_01 release where indirect 16788stores through method arguments did not operate correctly. 16789 167902) Linux: 16791 16792Implemented boot-time ACPI table parsing support 16793(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 16794facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 16795legacy BIOS interfaces (e.g. MPS) for the configuration of system 16796processors, memory, and interrupts during setup_arch(). Note that 16797this patch does not include the required architecture-specific 16798changes required to apply this information -- subsequent patches 16799will be posted for both IA32 and IA64 to achieve this. 16800 16801Added low-level sleep support for IA32 platforms, courtesy of Pat 16802Mochel. This allows IA32 systems to transition to/from various 16803sleeping states (e.g. S1, S3), although the lack of a centralized 16804driver model and power-manageable drivers will prevent its 16805(successful) use on most systems. 16806 16807Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 16808submenu, unified IA32 and IA64 options, added new "Boot using ACPI 16809tables" option, etc. 16810 16811Increased the default timeout for the EC driver from 1ms to 10ms 16812(1000 cycles of 10us) to try to address AE_TIME errors during EC 16813transactions. 16814 16815 ---------------------------------------- 16816Summary of changes for this label: 11_02_01 16817 168181) ACPI CA Core Subsystem: 16819 16820ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 16821(QWordAcc keyword). All ACPI 2.0 64-bit support is now 16822implemented. 16823 16824OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 16825changes to support ACPI 2.0 Qword field access. Read/Write 16826PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 16827accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 16828the value parameter for the address space handler interface is now 16829an ACPI_INTEGER. OSL implementations of these interfaces must now 16830handle the case where the Width parameter is 64. 16831 16832Index Fields: Fixed a problem where unaligned bit assembly and 16833disassembly for IndexFields was not supported correctly. 16834 16835Index and Bank Fields: Nested Index and Bank Fields are now 16836supported. During field access, a check is performed to ensure 16837that the value written to an Index or Bank register is not out of 16838the range of the register. The Index (or Bank) register is 16839written before each access to the field data. Future support will 16840include allowing individual IndexFields to be wider than the 16841DataRegister width. 16842 16843Fields: Fixed a problem where the AML interpreter was incorrectly 16844attempting to write beyond the end of a Field/OpRegion. This was 16845a boundary case that occurred when a DWORD field was written to a 16846BYTE access OpRegion, forcing multiple writes and causing the 16847interpreter to write one datum too many. 16848 16849Fields: Fixed a problem with Field/OpRegion access where the 16850starting bit address of a field was incorrectly calculated if the 16851current access type was wider than a byte (WordAcc, DwordAcc, or 16852QwordAcc). 16853 16854Fields: Fixed a problem where forward references to individual 16855FieldUnits (individual Field names within a Field definition) were 16856not resolved during the AML table load. 16857 16858Fields: Fixed a problem where forward references from a Field 16859definition to the parent Operation Region definition were not 16860resolved during the AML table load. 16861 16862Fields: Duplicate FieldUnit names within a scope are now detected 16863during AML table load. 16864 16865Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 16866returned an incorrect name for the root node. 16867 16868Code and Data Size: Code and Data optimizations have permitted new 16869feature development with an actual reduction in the library size. 16870Current core subsystem library sizes are shown below. These are 16871the code and data sizes for the acpica.lib produced by the 16872Microsoft Visual C++ 6.0 compiler, and these values do not include 16873any ACPI driver or OSPM code. The debug version of the code 16874includes the debug output trace mechanism and has a larger code 16875and data size. Note that these values will vary depending on the 16876efficiency of the compiler and the compiler options used during 16877generation. 16878 16879 Previous Release (10_18_01): 16880 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16881 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16882 16883 Current Release: 16884 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16885 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16886 16887 2) Linux: 16888 16889Improved /proc processor output (Pavel Machek) Re-added 16890MODULE_LICENSE("GPL") to all modules. 16891 16892 3) ASL Compiler version X2030: 16893 16894Duplicate FieldUnit names within a scope are now detected and 16895flagged as errors. 16896 16897 4) Documentation: 16898 16899Programmer Reference updated to reflect OSL and address space 16900handler interface changes described above. 16901 16902---------------------------------------- 16903Summary of changes for this label: 10_18_01 16904 16905ACPI CA Core Subsystem: 16906 16907Fixed a problem with the internal object reference count mechanism 16908that occasionally caused premature object deletion. This resolves 16909all of the outstanding problem reports where an object is deleted 16910in the middle of an interpreter evaluation. Although this problem 16911only showed up in rather obscure cases, the solution to the 16912problem involved an adjustment of all reference counts involving 16913objects attached to namespace nodes. 16914 16915Fixed a problem with Field support in the interpreter where 16916writing to an aligned field whose length is an exact multiple (2 16917or greater) of the field access granularity would cause an attempt 16918to write beyond the end of the field. 16919 16920The top level AML opcode execution functions within the 16921interpreter have been renamed with a more meaningful and 16922consistent naming convention. The modules exmonad.c and 16923exdyadic.c were eliminated. New modules are exoparg1.c, 16924exoparg2.c, exoparg3.c, and exoparg6.c. 16925 16926Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 16927 16928Fixed a problem where the AML debugger was causing some internal 16929objects to not be deleted during subsystem termination. 16930 16931Fixed a problem with the external AcpiEvaluateObject interface 16932where the subsystem would fault if the named object to be 16933evaluated refered to a constant such as Zero, Ones, etc. 16934 16935Fixed a problem with IndexFields and BankFields where the 16936subsystem would fault if the index, data, or bank registers were 16937not defined in the same scope as the field itself. 16938 16939Added printf format string checking for compilers that support 16940this feature. Corrected more than 50 instances of issues with 16941format specifiers within invocations of ACPI_DEBUG_PRINT 16942throughout the core subsystem code. 16943 16944The ASL "Revision" operator now returns the ACPI support level 16945implemented in the core - the value "2" since the ACPI 2.0 support 16946is more than 50% implemented. 16947 16948Enhanced the output of the AML debugger "dump namespace" command 16949to output in a more human-readable form. 16950 16951Current core subsystem library code sizes are shown below. These 16952 16953are the code and data sizes for the acpica.lib produced by the 16954Microsoft Visual C++ 6.0 compiler, and these values do not include 16955any ACPI driver or OSPM code. The debug version of the code 16956includes the full debug trace mechanism -- leading to a much 16957 16958larger code and data size. Note that these values will vary 16959depending on the efficiency of the compiler and the compiler 16960options used during generation. 16961 16962 Previous Label (09_20_01): 16963 Non-Debug Version: 65K Code, 5K Data, 70K Total 16964 Debug Version: 138K Code, 58K Data, 196K Total 16965 16966 This Label: 16967 16968 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16969 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16970 16971Linux: 16972 16973Implemented a "Bad BIOS Blacklist" to track machines that have 16974known ASL/AML problems. 16975 16976Enhanced the /proc interface for the thermal zone driver and added 16977support for _HOT (the critical suspend trip point). The 'info' 16978file now includes threshold/policy information, and allows setting 16979of _SCP (cooling preference) and _TZP (polling frequency) values 16980to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 16981frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 16982preference to the passive/quiet mode (if supported by the ASL). 16983 16984Implemented a workaround for a gcc bug that resuted in an OOPs 16985when loading the control method battery driver. 16986 16987 ---------------------------------------- 16988Summary of changes for this label: 09_20_01 16989 16990 ACPI CA Core Subsystem: 16991 16992The AcpiEnableEvent and AcpiDisableEvent interfaces have been 16993modified to allow individual GPE levels to be flagged as wake- 16994enabled (i.e., these GPEs are to remain enabled when the platform 16995sleeps.) 16996 16997The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 16998support wake-enabled GPEs. This means that upon entering the 16999sleep state, all GPEs that are not wake-enabled are disabled. 17000When leaving the sleep state, these GPEs are reenabled. 17001 17002A local double-precision divide/modulo module has been added to 17003enhance portability to OS kernels where a 64-bit math library is 17004not available. The new module is "utmath.c". 17005 17006Several optimizations have been made to reduce the use of CPU 17007stack. Originally over 2K, the maximum stack usage is now below 170082K at 1860 bytes (1.82k) 17009 17010Fixed a problem with the AcpiGetFirmwareTable interface where the 17011root table pointer was not mapped into a logical address properly. 17012 17013Fixed a problem where a NULL pointer was being dereferenced in the 17014interpreter code for the ASL Notify operator. 17015 17016Fixed a problem where the use of the ASL Revision operator 17017returned an error. This operator now returns the current version 17018of the ACPI CA core subsystem. 17019 17020Fixed a problem where objects passed as control method parameters 17021to AcpiEvaluateObject were always deleted at method termination. 17022However, these objects may end up being stored into the namespace 17023by the called method. The object reference count mechanism was 17024applied to these objects instead of a force delete. 17025 17026Fixed a problem where static strings or buffers (contained in the 17027AML code) that are declared as package elements within the ASL 17028code could cause a fault because the interpreter would attempt to 17029delete them. These objects are now marked with the "static 17030object" flag to prevent any attempt to delete them. 17031 17032Implemented an interpreter optimization to use operands directly 17033from the state object instead of extracting the operands to local 17034variables. This reduces stack use and code size, and improves 17035performance. 17036 17037The module exxface.c was eliminated as it was an unnecessary extra 17038layer of code. 17039 17040Current core subsystem library code sizes are shown below. These 17041are the code and data sizes for the acpica.lib produced by the 17042Microsoft Visual C++ 6.0 compiler, and these values do not include 17043any ACPI driver or OSPM code. The debug version of the code 17044includes the full debug trace mechanism -- leading to a much 17045larger code and data size. Note that these values will vary 17046depending on the efficiency of the compiler and the compiler 17047options used during generation. 17048 17049 Non-Debug Version: 65K Code, 5K Data, 70K Total 17050(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 17051Total (Previously 195K) 17052 17053Linux: 17054 17055Support for ACPI 2.0 64-bit integers has been added. All ACPI 17056Integer objects are now 64 bits wide 17057 17058All Acpi data types and structures are now in lower case. Only 17059Acpi macros are upper case for differentiation. 17060 17061 Documentation: 17062 17063Changes to the external interfaces as described above. 17064 17065 ---------------------------------------- 17066Summary of changes for this label: 08_31_01 17067 17068 ACPI CA Core Subsystem: 17069 17070A bug with interpreter implementation of the ASL Divide operator 17071was found and fixed. The implicit function return value (not the 17072explicit store operands) was returning the remainder instead of 17073the quotient. This was a longstanding bug and it fixes several 17074known outstanding issues on various platforms. 17075 17076The ACPI_DEBUG_PRINT and function trace entry/exit macros have 17077been further optimized for size. There are 700 invocations of the 17078DEBUG_PRINT macro alone, so each optimization reduces the size of 17079the debug version of the subsystem significantly. 17080 17081A stack trace mechanism has been implemented. The maximum stack 17082usage is about 2K on 32-bit platforms. The debugger command "stat 17083stack" will display the current maximum stack usage. 17084 17085All public symbols and global variables within the subsystem are 17086now prefixed with the string "Acpi". This keeps all of the 17087symbols grouped together in a kernel map, and avoids conflicts 17088with other kernel subsystems. 17089 17090Most of the internal fixed lookup tables have been moved into the 17091code segment via the const operator. 17092 17093Several enhancements have been made to the interpreter to both 17094reduce the code size and improve performance. 17095 17096Current core subsystem library code sizes are shown below. These 17097are the code and data sizes for the acpica.lib produced by the 17098Microsoft Visual C++ 6.0 compiler, and these values do not include 17099any ACPI driver or OSPM code. The debug version of the code 17100includes the full debug trace mechanism which contains over 700 17101invocations of the DEBUG_PRINT macro, 500 function entry macro 17102invocations, and over 900 function exit macro invocations -- 17103leading to a much larger code and data size. Note that these 17104values will vary depending on the efficiency of the compiler and 17105the compiler options used during generation. 17106 17107 Non-Debug Version: 64K Code, 5K Data, 69K Total 17108Debug Version: 137K Code, 58K Data, 195K Total 17109 17110 Linux: 17111 17112Implemented wbinvd() macro, pending a kernel-wide definition. 17113 17114Fixed /proc/acpi/event to handle poll() and short reads. 17115 17116 ASL Compiler, version X2026: 17117 17118Fixed a problem introduced in the previous label where the AML 17119 17120code emitted for package objects produced packages with zero 17121length. 17122 17123 ---------------------------------------- 17124Summary of changes for this label: 08_16_01 17125 17126ACPI CA Core Subsystem: 17127 17128The following ACPI 2.0 ASL operators have been implemented in the 17129AML interpreter (These are already supported by the Intel ASL 17130compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 17131ToBuffer. Support for 64-bit AML constants is implemented in the 17132AML parser, debugger, and disassembler. 17133 17134The internal memory tracking mechanism (leak detection code) has 17135been upgraded to reduce the memory overhead (a separate tracking 17136block is no longer allocated for each memory allocation), and now 17137supports all of the internal object caches. 17138 17139The data structures and code for the internal object caches have 17140been coelesced and optimized so that there is a single cache and 17141memory list data structure and a single group of functions that 17142implement generic cache management. This has reduced the code 17143size in both the debug and release versions of the subsystem. 17144 17145The DEBUG_PRINT macro(s) have been optimized for size and replaced 17146by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 17147different, because it generates a single call to an internal 17148function. This results in a savings of about 90 bytes per 17149invocation, resulting in an overall code and data savings of about 1715016% in the debug version of the subsystem. 17151 17152 Linux: 17153 17154Fixed C3 disk corruption problems and re-enabled C3 on supporting 17155machines. 17156 17157Integrated low-level sleep code by Patrick Mochel. 17158 17159Further tweaked source code Linuxization. 17160 17161Other minor fixes. 17162 17163 ASL Compiler: 17164 17165Support for ACPI 2.0 variable length packages is fixed/completed. 17166 17167Fixed a problem where the optional length parameter for the ACPI 171682.0 ToString operator. 17169 17170Fixed multiple extraneous error messages when a syntax error is 17171detected within the declaration line of a control method. 17172 17173 ---------------------------------------- 17174Summary of changes for this label: 07_17_01 17175 17176ACPI CA Core Subsystem: 17177 17178Added a new interface named AcpiGetFirmwareTable to obtain any 17179ACPI table via the ACPI signature. The interface can be called at 17180any time during kernel initialization, even before the kernel 17181virtual memory manager is initialized and paging is enabled. This 17182allows kernel subsystems to obtain ACPI tables very early, even 17183before the ACPI CA subsystem is initialized. 17184 17185Fixed a problem where Fields defined with the AnyAcc attribute 17186could be resolved to the incorrect address under the following 17187conditions: 1) the field width is larger than 8 bits and 2) the 17188parent operation region is not defined on a DWORD boundary. 17189 17190Fixed a problem where the interpreter is not being locked during 17191namespace initialization (during execution of the _INI control 17192methods), causing an error when an attempt is made to release it 17193later. 17194 17195ACPI 2.0 support in the AML Interpreter has begun and will be 17196ongoing throughout the rest of this year. In this label, The Mod 17197operator is implemented. 17198 17199Added a new data type to contain full PCI addresses named 17200ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 17201and Function values. 17202 17203 Linux: 17204 17205Enhanced the Linux version of the source code to change most 17206capitalized ACPI type names to lowercase. For example, all 17207instances of ACPI_STATUS are changed to acpi_status. This will 17208result in a large diff, but the change is strictly cosmetic and 17209aligns the CA code closer to the Linux coding standard. 17210 17211OSL Interfaces: 17212 17213The interfaces to the PCI configuration space have been changed to 17214add the PCI Segment number and to split the single 32-bit combined 17215DeviceFunction field into two 16-bit fields. This was 17216accomplished by moving the four values that define an address in 17217PCI configuration space (segment, bus, device, and function) to 17218the new ACPI_PCI_ID structure. 17219 17220The changes to the PCI configuration space interfaces led to a 17221reexamination of the complete set of address space access 17222interfaces for PCI, I/O, and Memory. The previously existing 18 17223interfaces have proven difficult to maintain (any small change 17224must be propagated across at least 6 interfaces) and do not easily 17225allow for future expansion to 64 bits if necessary. Also, on some 17226systems, it would not be appropriate to demultiplex the access 17227width (8, 16, 32,or 64) before calling the OSL if the 17228corresponding native OS interfaces contain a similar access width 17229parameter. For these reasons, the 18 address space interfaces 17230have been replaced by these 6 new ones: 17231 17232AcpiOsReadPciConfiguration 17233AcpiOsWritePciConfiguration 17234AcpiOsReadMemory 17235AcpiOsWriteMemory 17236AcpiOsReadPort 17237AcpiOsWritePort 17238 17239Added a new interface named AcpiOsGetRootPointer to allow the OSL 17240to perform the platform and/or OS-specific actions necessary to 17241obtain the ACPI RSDP table pointer. On IA-32 platforms, this 17242interface will simply call down to the CA core to perform the low- 17243memory search for the table. On IA-64, the RSDP is obtained from 17244EFI. Migrating this interface to the OSL allows the CA core to 17245 17246remain OS and platform independent. 17247 17248Added a new interface named AcpiOsSignal to provide a generic 17249"function code and pointer" interface for various miscellaneous 17250signals and notifications that must be made to the host OS. The 17251first such signals are intended to support the ASL Fatal and 17252Breakpoint operators. In the latter case, the AcpiOsBreakpoint 17253interface has been obsoleted. 17254 17255The definition of the AcpiFormatException interface has been 17256changed to simplify its use. The caller no longer must supply a 17257buffer to the call; A pointer to a const string is now returned 17258directly. This allows the call to be easily used in printf 17259statements, etc. since the caller does not have to manage a local 17260buffer. 17261 17262 17263 ASL Compiler, Version X2025: 17264 17265The ACPI 2.0 Switch/Case/Default operators have been implemented 17266and are fully functional. They will work with all ACPI 1.0 17267interpreters, since the operators are simply translated to If/Else 17268pairs. 17269 17270The ACPI 2.0 ElseIf operator is implemented and will also work 17271with 1.0 interpreters, for the same reason. 17272 17273Implemented support for ACPI 2.0 variable-length packages. These 17274packages have a separate opcode, and their size is determined by 17275the interpreter at run-time. 17276 17277Documentation The ACPI CA Programmer Reference has been updated to 17278reflect the new interfaces and changes to existing interfaces. 17279 17280 ------------------------------------------ 17281Summary of changes for this label: 06_15_01 17282 17283 ACPI CA Core Subsystem: 17284 17285Fixed a problem where a DWORD-accessed field within a Buffer 17286object would get its byte address inadvertently rounded down to 17287the nearest DWORD. Buffers are always Byte-accessible. 17288 17289 ASL Compiler, version X2024: 17290 17291Fixed a problem where the Switch() operator would either fault or 17292hang the compiler. Note however, that the AML code for this ACPI 172932.0 operator is not yet implemented. 17294 17295Compiler uses the new AcpiOsGetTimer interface to obtain compile 17296timings. 17297 17298Implementation of the CreateField operator automatically converts 17299a reference to a named field within a resource descriptor from a 17300byte offset to a bit offset if required. 17301 17302Added some missing named fields from the resource descriptor 17303support. These are the names that are automatically created by the 17304compiler to reference fields within a descriptor. They are only 17305valid at compile time and are not passed through to the AML 17306interpreter. 17307 17308Resource descriptor named fields are now typed as Integers and 17309subject to compile-time typechecking when used in expressions. 17310 17311 ------------------------------------------ 17312Summary of changes for this label: 05_18_01 17313 17314 ACPI CA Core Subsystem: 17315 17316Fixed a couple of problems in the Field support code where bits 17317from adjacent fields could be returned along with the proper field 17318bits. Restructured the field support code to improve performance, 17319readability and maintainability. 17320 17321New DEBUG_PRINTP macro automatically inserts the procedure name 17322into the output, saving hundreds of copies of procedure name 17323strings within the source, shrinking the memory footprint of the 17324debug version of the core subsystem. 17325 17326 Source Code Structure: 17327 17328The source code directory tree was restructured to reflect the 17329current organization of the component architecture. Some files 17330and directories have been moved and/or renamed. 17331 17332 Linux: 17333 17334Fixed leaking kacpidpc processes. 17335 17336Fixed queueing event data even when /proc/acpi/event is not 17337opened. 17338 17339 ASL Compiler, version X2020: 17340 17341Memory allocation performance enhancement - over 24X compile time 17342improvement on large ASL files. Parse nodes and namestring 17343buffers are now allocated from a large internal compiler buffer. 17344 17345The temporary .SRC file is deleted unless the "-s" option is 17346specified 17347 17348The "-d" debug output option now sends all output to the .DBG file 17349instead of the console. 17350 17351"External" second parameter is now optional 17352 17353"ElseIf" syntax now properly allows the predicate 17354 17355Last operand to "Load" now recognized as a Target operand 17356 17357Debug object can now be used anywhere as a normal object. 17358 17359ResourceTemplate now returns an object of type BUFFER 17360 17361EISAID now returns an object of type INTEGER 17362 17363"Index" now works with a STRING operand 17364 17365"LoadTable" now accepts optional parameters 17366 17367"ToString" length parameter is now optional 17368 17369"Interrupt (ResourceType," parse error fixed. 17370 17371"Register" with a user-defined region space parse error fixed 17372 17373Escaped backslash at the end of a string ("\\") scan/parse error 17374fixed 17375 17376"Revision" is now an object of type INTEGER. 17377 17378 17379 17380------------------------------------------ 17381Summary of changes for this label: 05_02_01 17382 17383Linux: 17384 17385/proc/acpi/event now blocks properly. 17386 17387Removed /proc/sys/acpi. You can still dump your DSDT from 17388/proc/acpi/dsdt. 17389 17390 ACPI CA Core Subsystem: 17391 17392Fixed a problem introduced in the previous label where some of the 17393"small" resource descriptor types were not recognized. 17394 17395Improved error messages for the case where an ASL Field is outside 17396the range of the parent operation region. 17397 17398 ASL Compiler, version X2018: 17399 17400 17401Added error detection for ASL Fields that extend beyond the length 17402of the parent operation region (only if the length of the region 17403is known at compile time.) This includes fields that have a 17404minimum access width that is smaller than the parent region, and 17405individual field units that are partially or entirely beyond the 17406extent of the parent. 17407 17408 17409 17410------------------------------------------ 17411Summary of changes for this label: 04_27_01 17412 17413 ACPI CA Core Subsystem: 17414 17415Fixed a problem where the namespace mutex could be released at the 17416wrong time during execution of AcpiRemoveAddressSpaceHandler. 17417 17418Added optional thread ID output for debug traces, to simplify 17419debugging of multiple threads. Added context switch notification 17420when the debug code realizes that a different thread is now 17421executing ACPI code. 17422 17423Some additional external data types have been prefixed with the 17424string "ACPI_" for consistency. This may effect existing code. 17425The data types affected are the external callback typedefs - e.g., 17426 17427WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 17428 17429 Linux: 17430 17431Fixed an issue with the OSL semaphore implementation where a 17432thread was waking up with an error from receiving a SIGCHLD 17433signal. 17434 17435Linux version of ACPI CA now uses the system C library for string 17436manipulation routines instead of a local implementation. 17437 17438Cleaned up comments and removed TBDs. 17439 17440 ASL Compiler, version X2017: 17441 17442Enhanced error detection and reporting for all file I/O 17443operations. 17444 17445 Documentation: 17446 17447Programmer Reference updated to version 1.06. 17448 17449 17450 17451------------------------------------------ 17452Summary of changes for this label: 04_13_01 17453 17454 ACPI CA Core Subsystem: 17455 17456Restructured support for BufferFields and RegionFields. 17457BankFields support is now fully operational. All known 32-bit 17458limitations on field sizes have been removed. Both BufferFields 17459and (Operation) RegionFields are now supported by the same field 17460management code. 17461 17462Resource support now supports QWORD address and IO resources. The 1746316/32/64 bit address structures and the Extended IRQ structure 17464have been changed to properly handle Source Resource strings. 17465 17466A ThreadId of -1 is now used to indicate a "mutex not acquired" 17467condition internally and must never be returned by AcpiOsThreadId. 17468This reserved value was changed from 0 since Unix systems allow a 17469thread ID of 0. 17470 17471Linux: 17472 17473Driver code reorganized to enhance portability 17474 17475Added a kernel configuration option to control ACPI_DEBUG 17476 17477Fixed the EC driver to honor _GLK. 17478 17479ASL Compiler, version X2016: 17480 17481Fixed support for the "FixedHw" keyword. Previously, the FixedHw 17482address space was set to 0, not 0x7f as it should be. 17483 17484 ------------------------------------------ 17485Summary of changes for this label: 03_13_01 17486 17487 ACPI CA Core Subsystem: 17488 17489During ACPI initialization, the _SB_._INI method is now run if 17490present. 17491 17492Notify handler fix - notifies are deferred until the parent method 17493completes execution. This fixes the "mutex already acquired" 17494issue seen occasionally. 17495 17496Part of the "implicit conversion" rules in ACPI 2.0 have been 17497found to cause compatibility problems with existing ASL/AML. The 17498convert "result-to-target-type" implementation has been removed 17499for stores to method Args and Locals. Source operand conversion 17500is still fully implemented. Possible changes to ACPI 2.0 17501specification pending. 17502 17503Fix to AcpiRsCalculatePciRoutingTableLength to return correct 17504length. 17505 17506Fix for compiler warnings for 64-bit compiles. 17507 17508 Linux: 17509 17510/proc output aligned for easier parsing. 17511 17512Release-version compile problem fixed. 17513 17514New kernel configuration options documented in Configure.help. 17515 17516IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 17517context" message. 17518 17519 OSPM: 17520 17521Power resource driver integrated with bus manager. 17522 17523Fixed kernel fault during active cooling for thermal zones. 17524 17525Source Code: 17526 17527The source code tree has been restructured. 17528 17529 17530 17531------------------------------------------ 17532Summary of changes for this label: 03_02_01 17533 17534 Linux OS Services Layer (OSL): 17535 17536Major revision of all Linux-specific code. 17537 17538Modularized all ACPI-specific drivers. 17539 17540Added new thermal zone and power resource drivers. 17541 17542Revamped /proc interface (new functionality is under /proc/acpi). 17543 17544New kernel configuration options. 17545 17546 Linux known issues: 17547 17548New kernel configuration options not documented in Configure.help 17549yet. 17550 17551 17552Module dependencies not currently implemented. If used, they 17553should be loaded in this order: busmgr, power, ec, system, 17554processor, battery, ac_adapter, button, thermal. 17555 17556Modules will not load if CONFIG_MODVERSION is set. 17557 17558IBM 600E - entering S5 may reboot instead of shutting down. 17559 17560IBM 600E - Sleep button may generate "Invalid <NULL> context" 17561message. 17562 17563Some systems may fail with "execution mutex already acquired" 17564message. 17565 17566 ACPI CA Core Subsystem: 17567 17568Added a new OSL Interface, AcpiOsGetThreadId. This was required 17569for the deadlock detection code. Defined to return a non-zero, 32- 17570bit thread ID for the currently executing thread. May be a non- 17571zero constant integer on single-thread systems. 17572 17573Implemented deadlock detection for internal subsystem mutexes. We 17574may add conditional compilation for this code (debug only) later. 17575 17576ASL/AML Mutex object semantics are now fully supported. This 17577includes multiple acquires/releases by owner and support for the 17578 17579Mutex SyncLevel parameter. 17580 17581A new "Force Release" mechanism automatically frees all ASL 17582Mutexes that have been acquired but not released when a thread 17583exits the interpreter. This forces conformance to the ACPI spec 17584("All mutexes must be released when an invocation exits") and 17585prevents deadlocked ASL threads. This mechanism can be expanded 17586(later) to monitor other resource acquisitions if OEM ASL code 17587continues to misbehave (which it will). 17588 17589Several new ACPI exception codes have been added for the Mutex 17590support. 17591 17592Recursive method calls are now allowed and supported (the ACPI 17593spec does in fact allow recursive method calls.) The number of 17594recursive calls is subject to the restrictions imposed by the 17595SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 17596parameter. 17597 17598Implemented support for the SyncLevel parameter for control 17599methods (ACPI 2.0 feature) 17600 17601Fixed a deadlock problem when multiple threads attempted to use 17602the interpreter. 17603 17604Fixed a problem where the string length of a String package 17605element was not always set in a package returned from 17606AcpiEvaluateObject. 17607 17608Fixed a problem where the length of a String package element was 17609not always included in the length of the overall package returned 17610from AcpiEvaluateObject. 17611 17612Added external interfaces (Acpi*) to the ACPI debug memory 17613manager. This manager keeps a list of all outstanding 17614allocations, and can therefore detect memory leaks and attempts to 17615free memory blocks more than once. Useful for code such as the 17616power manager, etc. May not be appropriate for device drivers. 17617Performance with the debug code enabled is slow. 17618 17619The ACPI Global Lock is now an optional hardware element. 17620 17621 ASL Compiler Version X2015: 17622 17623Integrated changes to allow the compiler to be generated on 17624multiple platforms. 17625 17626Linux makefile added to generate the compiler on Linux 17627 17628 Source Code: 17629 17630All platform-specific headers have been moved to their own 17631subdirectory, Include/Platform. 17632 17633New source file added, Interpreter/ammutex.c 17634 17635New header file, Include/acstruct.h 17636 17637 Documentation: 17638 17639The programmer reference has been updated for the following new 17640interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 17641 17642 ------------------------------------------ 17643Summary of changes for this label: 02_08_01 17644 17645Core ACPI CA Subsystem: Fixed a problem where an error was 17646incorrectly returned if the return resource buffer was larger than 17647the actual data (in the resource interfaces). 17648 17649References to named objects within packages are resolved to the 17650 17651full pathname string before packages are returned directly (via 17652the AcpiEvaluateObject interface) or indirectly via the resource 17653interfaces. 17654 17655Linux OS Services Layer (OSL): 17656 17657Improved /proc battery interface. 17658 17659 17660Added C-state debugging output and other miscellaneous fixes. 17661 17662ASL Compiler Version X2014: 17663 17664All defined method arguments can now be used as local variables, 17665including the ones that are not actually passed in as parameters. 17666The compiler tracks initialization of the arguments and issues an 17667exception if they are used without prior assignment (just like 17668locals). 17669 17670The -o option now specifies a filename prefix that is used for all 17671output files, including the AML output file. Otherwise, the 17672default behavior is as follows: 1) the AML goes to the file 17673specified in the DSDT. 2) all other output files use the input 17674source filename as the base. 17675 17676 ------------------------------------------ 17677Summary of changes for this label: 01_25_01 17678 17679Core ACPI CA Subsystem: Restructured the implementation of object 17680store support within the interpreter. This includes support for 17681the Store operator as well as any ASL operators that include a 17682target operand. 17683 17684Partially implemented support for Implicit Result-to-Target 17685conversion. This is when a result object is converted on the fly 17686to the type of an existing target object. Completion of this 17687support is pending further analysis of the ACPI specification 17688concerning this matter. 17689 17690CPU-specific code has been removed from the subsystem (hardware 17691directory). 17692 17693New Power Management Timer functions added 17694 17695Linux OS Services Layer (OSL): Moved system state transition code 17696to the core, fixed it, and modified Linux OSL accordingly. 17697 17698Fixed C2 and C3 latency calculations. 17699 17700 17701We no longer use the compilation date for the version message on 17702initialization, but retrieve the version from AcpiGetSystemInfo(). 17703 17704Incorporated for fix Sony VAIO machines. 17705 17706Documentation: The Programmer Reference has been updated and 17707reformatted. 17708 17709 17710ASL Compiler: Version X2013: Fixed a problem where the line 17711numbering and error reporting could get out of sync in the 17712presence of multiple include files. 17713 17714 ------------------------------------------ 17715Summary of changes for this label: 01_15_01 17716 17717Core ACPI CA Subsystem: 17718 17719Implemented support for type conversions in the execution of the 17720ASL Concatenate operator (The second operand is converted to 17721match the type of the first operand before concatenation.) 17722 17723Support for implicit source operand conversion is partially 17724implemented. The ASL source operand types Integer, Buffer, and 17725String are freely interchangeable for most ASL operators and are 17726converted by the interpreter on the fly as required. Implicit 17727Target operand conversion (where the result is converted to the 17728target type before storing) is not yet implemented. 17729 17730Support for 32-bit and 64-bit BCD integers is implemented. 17731 17732Problem fixed where a field read on an aligned field could cause a 17733read past the end of the field. 17734 17735New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 17736does not return a value, but the caller expects one. (The ASL 17737compiler flags this as a warning.) 17738 17739ASL Compiler: 17740 17741Version X2011: 177421. Static typechecking of all operands is implemented. This 17743prevents the use of invalid objects (such as using a Package where 17744an Integer is required) at compile time instead of at interpreter 17745run-time. 177462. The ASL source line is printed with ALL errors and warnings. 177473. Bug fix for source EOF without final linefeed. 177484. Debug option is split into a parse trace and a namespace trace. 177495. Namespace output option (-n) includes initial values for 17750integers and strings. 177516. Parse-only option added for quick syntax checking. 177527. Compiler checks for duplicate ACPI name declarations 17753 17754Version X2012: 177551. Relaxed typechecking to allow interchangeability between 17756strings, integers, and buffers. These types are now converted by 17757the interpreter at runtime. 177582. Compiler reports time taken by each internal subsystem in the 17759debug output file. 17760 17761 17762 ------------------------------------------ 17763Summary of changes for this label: 12_14_00 17764 17765ASL Compiler: 17766 17767This is the first official release of the compiler. Since the 17768compiler requires elements of the Core Subsystem, this label 17769synchronizes everything. 17770 17771------------------------------------------ 17772Summary of changes for this label: 12_08_00 17773 17774 17775Fixed a problem where named references within the ASL definition 17776of both OperationRegions and CreateXXXFields did not work 17777properly. The symptom was an AE_AML_OPERAND_TYPE during 17778initialization of the region/field. This is similar (but not 17779related internally) to the problem that was fixed in the last 17780label. 17781 17782Implemented both 32-bit and 64-bit support for the BCD ASL 17783functions ToBCD and FromBCD. 17784 17785Updated all legal headers to include "2000" in the copyright 17786years. 17787 17788 ------------------------------------------ 17789Summary of changes for this label: 12_01_00 17790 17791Fixed a problem where method invocations within the ASL definition 17792of both OperationRegions and CreateXXXFields did not work 17793properly. The symptom was an AE_AML_OPERAND_TYPE during 17794initialization of the region/field: 17795 17796 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 17797[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 17798(0x3005) 17799 17800Fixed a problem where operators with more than one nested 17801subexpression would fail. The symptoms were varied, by mostly 17802AE_AML_OPERAND_TYPE errors. This was actually a rather serious 17803problem that has gone unnoticed until now. 17804 17805 Subtract (Add (1,2), Multiply (3,4)) 17806 17807Fixed a problem where AcpiGetHandle didn't quite get fixed in the 17808previous build (The prefix part of a relative path was handled 17809incorrectly). 17810 17811Fixed a problem where Operation Region initialization failed if 17812the operation region name was a "namepath" instead of a simple 17813"nameseg". Symptom was an AE_NO_OPERAND error. 17814 17815Fixed a problem where an assignment to a local variable via the 17816indirect RefOf mechanism only worked for the first such 17817assignment. Subsequent assignments were ignored. 17818 17819 ------------------------------------------ 17820Summary of changes for this label: 11_15_00 17821 17822ACPI 2.0 table support with backwards support for ACPI 1.0 and the 178230.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 17824the AML interpreter does NOT have support for the new 2.0 ASL 17825grammar terms at this time. 17826 17827All ACPI hardware access is via the GAS structures in the ACPI 2.0 17828FADT. 17829 17830All physical memory addresses across all platforms are now 64 bits 17831wide. Logical address width remains dependent on the platform 17832(i.e., "void *"). 17833 17834AcpiOsMapMemory interface changed to a 64-bit physical address. 17835 17836The AML interpreter integer size is now 64 bits, as per the ACPI 178372.0 specification. 17838 17839For backwards compatibility with ACPI 1.0, ACPI tables with a 17840revision number less than 2 use 32-bit integers only. 17841 17842Fixed a problem where the evaluation of OpRegion operands did not 17843always resolve them to numbers properly. 17844 17845------------------------------------------ 17846Summary of changes for this label: 10_20_00 17847 17848Fix for CBN_._STA issue. This fix will allow correct access to 17849CBN_ OpRegions when the _STA returns 0x8. 17850 17851Support to convert ACPI constants (Ones, Zeros, One) to actual 17852values before a package object is returned 17853 17854Fix for method call as predicate to if/while construct causing 17855incorrect if/while behavior 17856 17857Fix for Else block package lengths sometimes calculated wrong (if 17858block > 63 bytes) 17859 17860Fix for Processor object length field, was always zero 17861 17862Table load abort if FACP sanity check fails 17863 17864Fix for problem with Scope(name) if name already exists 17865 17866Warning emitted if a named object referenced cannot be found 17867(resolved) during method execution. 17868 17869 17870 17871 17872 17873------------------------------------------ 17874Summary of changes for this label: 9_29_00 17875 17876New table initialization interfaces: AcpiInitializeSubsystem no 17877longer has any parameters AcpiFindRootPointer - Find the RSDP (if 17878necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 17879>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 17880AcpiLoadTables 17881 17882Note: These interface changes require changes to all existing OSDs 17883 17884The PCI_Config default address space handler is always installed 17885at the root namespace object. 17886 17887------------------------------------------- 17888Summary of changes for this label: 09_15_00 17889 17890The new initialization architecture is implemented. New 17891interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 17892AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 17893 17894(Namespace is automatically loaded when a table is loaded) 17895 17896The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1789752 bytes to 32 bytes. There is usually one of these for every 17898namespace object, so the memory savings is significant. 17899 17900Implemented just-in-time evaluation of the CreateField operators. 17901 17902Bug fixes for IA-64 support have been integrated. 17903 17904Additional code review comments have been implemented 17905 17906The so-called "third pass parse" has been replaced by a final walk 17907through the namespace to initialize all operation regions (address 17908spaces) and fields that have not yet been initialized during the 17909execution of the various _INI and REG methods. 17910 17911New file - namespace/nsinit.c 17912 17913------------------------------------------- 17914Summary of changes for this label: 09_01_00 17915 17916Namespace manager data structures have been reworked to change the 17917primary object from a table to a single object. This has 17918resulted in dynamic memory savings of 3X within the namespace and 179192X overall in the ACPI CA subsystem. 17920 17921Fixed problem where the call to AcpiEvFindPciRootBuses was 17922inadvertently left commented out. 17923 17924Reduced the warning count when generating the source with the GCC 17925compiler. 17926 17927Revision numbers added to each module header showing the 17928SourceSafe version of the file. Please refer to this version 17929number when giving us feedback or comments on individual modules. 17930 17931The main object types within the subsystem have been renamed to 17932clarify their purpose: 17933 17934ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 17935ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 17936ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 17937 17938NOTE: no changes to the initialization sequence are included in 17939this label. 17940 17941------------------------------------------- 17942Summary of changes for this label: 08_23_00 17943 17944Fixed problem where TerminateControlMethod was being called 17945multiple times per method 17946 17947Fixed debugger problem where single stepping caused a semaphore to 17948be oversignalled 17949 17950Improved performance through additional parse object caching - 17951added ACPI_EXTENDED_OP type 17952 17953------------------------------------------- 17954Summary of changes for this label: 08_10_00 17955 17956Parser/Interpreter integration: Eliminated the creation of 17957complete parse trees for ACPI tables and control methods. 17958Instead, parse subtrees are created and then deleted as soon as 17959they are processed (Either entered into the namespace or executed 17960by the interpreter). This reduces the use of dynamic kernel 17961memory significantly. (about 10X) 17962 17963Exception codes broken into classes and renumbered. Be sure to 17964recompile all code that includes acexcep.h. Hopefully we won't 17965have to renumber the codes again now that they are split into 17966classes (environment, programmer, AML code, ACPI table, and 17967internal). 17968 17969Fixed some additional alignment issues in the Resource Manager 17970subcomponent 17971 17972Implemented semaphore tracking in the AcpiExec utility, and fixed 17973several places where mutexes/semaphores were being unlocked 17974without a corresponding lock operation. There are no known 17975semaphore or mutex "leaks" at this time. 17976 17977Fixed the case where an ASL Return operator is used to return an 17978unnamed package. 17979 17980------------------------------------------- 17981Summary of changes for this label: 07_28_00 17982 17983Fixed a problem with the way addresses were calculated in 17984AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 17985manifested itself when a Field was created with WordAccess or 17986DwordAccess, but the field unit defined within the Field was less 17987 17988than a Word or Dword. 17989 17990Fixed a problem in AmlDumpOperands() module's loop to pull 17991operands off of the operand stack to display information. The 17992problem manifested itself as a TLB error on 64-bit systems when 17993accessing an operand stack with two or more operands. 17994 17995Fixed a problem with the PCI configuration space handlers where 17996context was getting confused between accesses. This required a 17997change to the generic address space handler and address space 17998setup definitions. Handlers now get both a global handler context 17999(this is the one passed in by the user when executing 18000AcpiInstallAddressSpaceHandler() and a specific region context 18001that is unique to each region (For example, the _ADR, _SEG and 18002_BBN values associated with a specific region). The generic 18003function definitions have changed to the following: 18004 18005typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 18006UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 18007*HandlerContext, // This used to be void *Context void 18008*RegionContext); // This is an additional parameter 18009 18010typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 18011RegionHandle, UINT32 Function, void *HandlerContext, void 18012**RegionContext); // This used to be **ReturnContext 18013 18014------------------------------------------- 18015Summary of changes for this label: 07_21_00 18016 18017Major file consolidation and rename. All files within the 18018interpreter have been renamed as well as most header files. This 18019was done to prevent collisions with existing files in the host 18020OSs -- filenames such as "config.h" and "global.h" seem to be 18021quite common. The VC project files have been updated. All 18022makefiles will require modification. 18023 18024The parser/interpreter integration continues in Phase 5 with the 18025implementation of a complete 2-pass parse (the AML is parsed 18026twice) for each table; This avoids the construction of a huge 18027parse tree and therefore reduces the amount of dynamic memory 18028required by the subsystem. Greater use of the parse object cache 18029means that performance is unaffected. 18030 18031Many comments from the two code reviews have been rolled in. 18032 18033The 64-bit alignment support is complete. 18034 18035------------------------------------------- 18036Summary of changes for this label: 06_30_00 18037 18038With a nod and a tip of the hat to the technology of yesteryear, 18039we've added support in the source code for 80 column output 18040devices. The code is now mostly constrained to 80 columns or 18041less to support environments and editors that 1) cannot display 18042or print more than 80 characters on a single line, and 2) cannot 18043disable line wrapping. 18044 18045A major restructuring of the namespace data structure has been 18046completed. The result is 1) cleaner and more 18047understandable/maintainable code, and 2) a significant reduction 18048in the dynamic memory requirement for each named ACPI object 18049(almost half). 18050 18051------------------------------------------- 18052Summary of changes for this label: 06_23_00 18053 18054Linux support has been added. In order to obtain approval to get 18055the ACPI CA subsystem into the Linux kernel, we've had to make 18056quite a few changes to the base subsystem that will affect all 18057users (all the changes are generic and OS- independent). The 18058effects of these global changes have been somewhat far reaching. 18059Files have been merged and/or renamed and interfaces have been 18060renamed. The major changes are described below. 18061 18062Osd* interfaces renamed to AcpiOs* to eliminate namespace 18063pollution/confusion within our target kernels. All OSD 18064interfaces must be modified to match the new naming convention. 18065 18066Files merged across the subsystem. A number of the smaller source 18067and header files have been merged to reduce the file count and 18068increase the density of the existing files. There are too many 18069to list here. In general, makefiles that call out individual 18070files will require rebuilding. 18071 18072Interpreter files renamed. All interpreter files now have the 18073prefix am* instead of ie* and is*. 18074 18075Header files renamed: The acapi.h file is now acpixf.h. The 18076acpiosd.h file is now acpiosxf.h. We are removing references to 18077the acronym "API" since it is somewhat windowsy. The new name is 18078"external interface" or xface or xf in the filenames.j 18079 18080 18081All manifest constants have been forced to upper case (some were 18082mixed case.) Also, the string "ACPI_" has been prepended to many 18083(not all) of the constants, typedefs, and structs. 18084 18085The globals "DebugLevel" and "DebugLayer" have been renamed 18086"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 18087 18088All other globals within the subsystem are now prefixed with 18089"AcpiGbl_" Internal procedures within the subsystem are now 18090prefixed with "Acpi" (with only a few exceptions). The original 18091two-letter abbreviation for the subcomponent remains after "Acpi" 18092- for example, CmCallocate became AcpiCmCallocate. 18093 18094Added a source code translation/conversion utility. Used to 18095generate the Linux source code, it can be modified to generate 18096other types of source as well. Can also be used to cleanup 18097existing source by removing extraneous spaces and blank lines. 18098Found in tools/acpisrc/* 18099 18100OsdUnMapMemory was renamed to OsdUnmapMemory and then 18101AcpiOsUnmapMemory. (UnMap became Unmap). 18102 18103A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 18104When set to one, this indicates that the caller wants to use the 18105 18106semaphore as a mutex, not a counting semaphore. ACPI CA uses 18107both types. However, implementers of this call may want to use 18108different OS primitives depending on the type of semaphore 18109requested. For example, some operating systems provide separate 18110 18111"mutex" and "semaphore" interfaces - where the mutex interface is 18112much faster because it doesn't have all the overhead of a full 18113semaphore implementation. 18114 18115Fixed a deadlock problem where a method that accesses the PCI 18116address space can block forever if it is the first access to the 18117space. 18118 18119------------------------------------------- 18120Summary of changes for this label: 06_02_00 18121 18122Support for environments that cannot handle unaligned data 18123accesses (e.g. firmware and OS environments devoid of alignment 18124handler technology namely SAL/EFI and the IA-64 Linux kernel) has 18125been added (via configurable macros) in these three areas: - 18126Transfer of data from the raw AML byte stream is done via byte 18127moves instead of word/dword/qword moves. - External objects are 18128aligned within the user buffer, including package elements (sub- 18129objects). - Conversion of name strings to UINT32 Acpi Names is now 18130done byte-wise. 18131 18132The Store operator was modified to mimic Microsoft's 18133implementation when storing to a Buffer Field. 18134 18135Added a check of the BM_STS bit before entering C3. 18136 18137The methods subdirectory has been obsoleted and removed. A new 18138file, cmeval.c subsumes the functionality. 18139 18140A 16-bit (DOS) version of AcpiExec has been developed. The 18141makefile is under the acpiexec directory. 18142