changes.txt revision 167802
1117521Snjl---------------------------------------- 2151937Sjkim20 March 2007. Summary of changes for version 20070320: 3151937Sjkim 4151937Sjkim1) ACPI CA Core Subsystem: 5151937Sjkim 6151937SjkimImplemented a change to the order of interpretation and 7151937Sjkimevaluation of AML operand objects within the AML interpreter. The 8151937Sjkiminterpreter now evaluates operands in the order that they appear 9151937Sjkimin the AML stream (and the corresponding ASL code), instead of in 10151937Sjkimthe reverse order (after the entire operand list has been 11151937Sjkimparsed). The previous behavior caused several subtle 12151937Sjkimincompatibilities with the Microsoft AML interpreter as well as 13151937Sjkimbeing somewhat non-intuitive. BZ 7871, local BZ 263. Valery 14151937SjkimPodrezov. 15151937Sjkim 16151937SjkimImplemented a change to the ACPI Global Lock support. All 17151937Sjkiminterfaces to the global lock now allow the same thread to 18151937Sjkimacquire the lock multiple times. This affects the 19151937SjkimAcpiAcquireGlobalLock external interface to the global lock as 20151937Sjkimwell as the internal use of the global lock to support AML fields 21151937Sjkim-- a control method that is holding the global lock can now 22151937Sjkimsimultaneously access AML fields that require global lock 23151937Sjkimprotection. Previously, in both cases, this would have resulted 24151937Sjkimin an AE_ALREADY_ACQUIRED exception. The change to 25151937SjkimAcpiAcquireGlobalLock is of special interest to drivers for the 26151937SjkimEmbedded Controller. There is no change to the behavior of the 27151937SjkimAML Acquire operator, as this can already be used to acquire a 28151937Sjkimmutex multiple times by the same thread. BZ 8066. With assistance 29151937Sjkimfrom Alexey Starikovskiy. 30151937Sjkim 31151937SjkimFixed a problem where invalid objects could be referenced in the 32151937SjkimAML Interpreter after error conditions. During operand 33151937Sjkimevaluation, ensure that the internal "Return Object" field is 34151937Sjkimcleared on error and only valid pointers are stored there. Caused 35151937Sjkimoccasional access to deleted objects that resulted in "large 36151937Sjkimreference count" warning messages. Valery Podrezov. 37151937Sjkim 38151937SjkimFixed a problem where an AE_STACK_OVERFLOW internal exception 39151937Sjkimcould occur on deeply nested control method invocations. BZ 7873, 40151937Sjkimlocal BZ 487. Valery Podrezov. 41151937Sjkim 42151937SjkimFixed an internal problem with the handling of result objects on 43151937Sjkimthe interpreter result stack. BZ 7872. Valery Podrezov. 44151937Sjkim 45151937SjkimRemoved obsolete code that handled the case where AML_NAME_OP is 46151937Sjkimthe target of a reference (Reference.Opcode). This code was no 47151937Sjkimlonger necessary. BZ 7874. Valery Podrezov. 48151937Sjkim 49151937SjkimRemoved obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. 50151937SjkimThis was a remnant from the previously discontinued 16-bit 51151937Sjkimsupport. 52151937Sjkim 53151937SjkimExample Code and Data Size: These are the sizes for the OS- 54151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 55151937Sjkim32-bit compiler. The debug version of the code includes the debug 56151937Sjkimoutput trace mechanism and has a much larger code and data size. 57151937Sjkim 58151937Sjkim Previous Release: 59151937Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 60151937Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 61151937Sjkim Current Release: 62151937Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 63151937Sjkim Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 64151937Sjkim 65151937Sjkim---------------------------------------- 66151937Sjkim26 January 2007. Summary of changes for version 20070126: 67151937Sjkim 68151937Sjkim1) ACPI CA Core Subsystem: 69151937Sjkim 70151937SjkimAdded the 2007 copyright to all module headers and signons. This 71151937Sjkimaffects virtually every file in the ACPICA core subsystem, the 72151937SjkimiASL compiler, and the utilities. 73151937Sjkim 74151937SjkimImplemented a fix for an incorrect parameter passed to 75151937SjkimAcpiTbDeleteTable during a table load. A bad pointer was passed 76151937Sjkimin the case where the DSDT is overridden, causing a fault in this 77151937Sjkimcase. 78151937Sjkim 79151937SjkimExample Code and Data Size: These are the sizes for the OS- 80151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 81151937Sjkim32-bit compiler. The debug version of the code includes the debug 82151937Sjkimoutput trace mechanism and has a much larger code and data size. 83151937Sjkim 84151937Sjkim Previous Release: 85151937Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 86151937Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 87151937Sjkim Current Release: 88151937Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 89151937Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 90151937Sjkim 91151937Sjkim---------------------------------------- 92151937Sjkim15 December 2006. Summary of changes for version 20061215: 93151937Sjkim 94151937Sjkim1) ACPI CA Core Subsystem: 95151937Sjkim 96151937SjkimSupport for 16-bit ACPICA has been completely removed since it is 97151937Sjkimno longer necessary and it clutters the code. All 16-bit macros, 98151937Sjkimtypes, and conditional compiles have been removed, cleaning up 99151937Sjkimand simplifying the code across the entire subsystem. DOS support 100151937Sjkimis no longer needed since the bootable Linux firmware kit is now 101151937Sjkimavailable. 102151937Sjkim 103151937SjkimThe handler for the Global Lock is now removed during 104151937SjkimAcpiTerminate to enable a clean subsystem restart, via the 105151937Sjkimimplementation of the AcpiEvRemoveGlobalLockHandler function. 106151937Sjkim(With assistance from Joel Bretz, HP) 107151937Sjkim 108151937SjkimImplemented enhancements to the multithreading support within the 109151937Sjkimdebugger to enable improved multithreading debugging and 110151937Sjkimevaluation of the subsystem. (Valery Podrezov) 111151937Sjkim 112151937SjkimDebugger: Enhanced the Statistics/Memory command to emit the 113151937Sjkimtotal (maximum) memory used during the execution, as well as the 114151937Sjkimmaximum memory consumed by each of the various object types. 115151937Sjkim(Valery Podrezov) 116151937Sjkim 117151937SjkimExample Code and Data Size: These are the sizes for the OS- 118151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 119151937Sjkim32-bit compiler. The debug version of the code includes the debug 120151937Sjkimoutput trace mechanism and has a much larger code and data size. 121151937Sjkim 122151937Sjkim Previous Release: 123151937Sjkim Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 124151937Sjkim Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 125151937Sjkim Current Release: 126151937Sjkim Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 127151937Sjkim Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 128151937Sjkim 129151937Sjkim 130151937Sjkim2) iASL Compiler/Disassembler and Tools: 131151937Sjkim 132151937SjkimAcpiExec: Implemented a new option (-m) to display full memory 133151937Sjkimuse statistics upon subsystem/program termination. (Valery 134151937SjkimPodrezov) 135151937Sjkim 136151937Sjkim---------------------------------------- 137151937Sjkim09 November 2006. Summary of changes for version 20061109: 138151937Sjkim 139151937Sjkim1) ACPI CA Core Subsystem: 140151937Sjkim 141151937SjkimOptimized the Load ASL operator in the case where the source 142151937Sjkimoperand is an operation region. Simply map the operation region 143151937Sjkimmemory, instead of performing a bytewise read. (Region must be of 144151937Sjkimtype SystemMemory, see below.) 145151937Sjkim 146151937SjkimFixed the Load ASL operator for the case where the source operand 147151937Sjkimis a region field. A buffer object is also allowed as the source 148151937Sjkimoperand. BZ 480 149151937Sjkim 150151937SjkimFixed a problem where the Load ASL operator allowed the source 151151937Sjkimoperand to be an operation region of any type. It is now 152151937Sjkimrestricted to regions of type SystemMemory, as per the ACPI 153151937Sjkimspecification. BZ 481 154151937Sjkim 155151937SjkimAdditional cleanup and optimizations for the new Table Manager 156151937Sjkimcode. 157151937Sjkim 158151937SjkimAcpiEnable will now fail if all of the required ACPI tables are 159151937Sjkimnot loaded (FADT, FACS, DSDT). BZ 477 160151937Sjkim 161151937SjkimAdded #pragma pack(8/4) to acobject.h to ensure that the 162151937Sjkimstructures in this header are always compiled as aligned. The 163151937SjkimACPI_OPERAND_OBJECT has been manually optimized to be aligned and 164151937Sjkimwill not work if it is byte-packed. 165151937Sjkim 166151937SjkimExample Code and Data Size: These are the sizes for the OS- 167151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 168151937Sjkim32-bit compiler. The debug version of the code includes the debug 169151937Sjkimoutput trace mechanism and has a much larger code and data size. 170151937Sjkim 171151937Sjkim Previous Release: 172151937Sjkim Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 173151937Sjkim Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 174151937Sjkim Current Release: 175151937Sjkim Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 176151937Sjkim Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 177151937Sjkim 178151937Sjkim 179151937Sjkim2) iASL Compiler/Disassembler and Tools: 180151937Sjkim 181151937SjkimFixed a problem where the presence of the _OSI predefined control 182151937Sjkimmethod within complex expressions could cause an internal 183151937Sjkimcompiler error. 184151937Sjkim 185151937SjkimAcpiExec: Implemented full region support for multiple address 186151937Sjkimspaces. SpaceId is now part of the REGION object. BZ 429 187151937Sjkim 188151937Sjkim---------------------------------------- 189151937Sjkim11 October 2006. Summary of changes for version 20061011: 190151937Sjkim 191151937Sjkim1) ACPI CA Core Subsystem: 192151937Sjkim 193151937SjkimCompleted an AML interpreter performance enhancement for control 194151937Sjkimmethod execution. Previously a 2-pass parse/execution, control 195151937Sjkimmethods are now completely parsed and executed in a single pass. 196151937SjkimThis improves overall interpreter performance by ~25%, reduces 197151937Sjkimcode size, and reduces CPU stack use. (Valery Podrezov + 198151937Sjkiminterpreter changes in version 20051202 that eliminated namespace 199151937Sjkimloading during the pass one parse.) 200151937Sjkim 201151937SjkimImplemented _CID support for PCI Root Bridge detection. If the 202151937Sjkim_HID does not match the predefined PCI Root Bridge IDs, the _CID 203151937Sjkimlist (if present) is now obtained and also checked for an ID 204151937Sjkimmatch. 205151937Sjkim 206151937SjkimImplemented additional support for the PCI _ADR execution: 207151937Sjkimupsearch until a device scope is found before executing _ADR. 208151937SjkimThis allows PCI_Config operation regions to be declared locally 209151937Sjkimwithin control methods underneath PCI device objects. 210151937Sjkim 211151937SjkimFixed a problem with a possible race condition between threads 212151937Sjkimexecuting AcpiWalkNamespace and the AML interpreter. This 213151937Sjkimcondition was removed by modifying AcpiWalkNamespace to (by 214151937Sjkimdefault) ignore all temporary namespace entries created during 215151937Sjkimany concurrent control method execution. An additional namespace 216151937Sjkimrace condition is known to exist between AcpiWalkNamespace and 217151937Sjkimthe Load/Unload ASL operators and is still under investigation. 218151937Sjkim 219151937SjkimRestructured the AML ParseLoop function, breaking it into several 220151937Sjkimsubfunctions in order to reduce CPU stack use and improve 221151937Sjkimmaintainability. (Mikhail Kouzmich) 222151937Sjkim 223151937SjkimAcpiGetHandle: Fix for parameter validation to detect invalid 224151937Sjkimcombinations of prefix handle and pathname. BZ 478 225151937Sjkim 226151937SjkimExample Code and Data Size: These are the sizes for the OS- 227151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 228151937Sjkim32-bit compiler. The debug version of the code includes the debug 229151937Sjkimoutput trace mechanism and has a much larger code and data size. 230151937Sjkim 231151937Sjkim Previous Release: 232151937Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 233151937Sjkim Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 234151937Sjkim Current Release: 235151937Sjkim Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 236151937Sjkim Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 237151937Sjkim 238151937Sjkim2) iASL Compiler/Disassembler and Tools: 239151937Sjkim 240151937SjkimPorted the -g option (get local ACPI tables) to the new ACPICA 241151937SjkimTable Manager to restore original behavior. 242151937Sjkim 243151937Sjkim---------------------------------------- 244151937Sjkim27 September 2006. Summary of changes for version 20060927: 245151937Sjkim 246151937Sjkim1) ACPI CA Core Subsystem: 247151937Sjkim 248151937SjkimRemoved the "Flags" parameter from AcpiGetRegister and 249151937SjkimAcpiSetRegister. These functions now use a spinlock for mutual 250151937Sjkimexclusion and the interrupt level indication flag is not needed. 251151937Sjkim 252151937SjkimFixed a problem with the Global Lock where the lock could appear 253151937Sjkimto be obtained before it is actually obtained. The global lock 254151937Sjkimsemaphore was inadvertently created with one unit instead of zero 255151937Sjkimunits. (BZ 464) Fiodor Suietov. 256151937Sjkim 257151937SjkimFixed a possible memory leak and fault in 258151937SjkimAcpiExResolveObjectToValue during a read from a buffer or region 259151937Sjkimfield. (BZ 458) Fiodor Suietov. 260151937Sjkim 261151937SjkimExample Code and Data Size: These are the sizes for the OS- 262151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 263151937Sjkim32-bit compiler. The debug version of the code includes the debug 264151937Sjkimoutput trace mechanism and has a much larger code and data size. 265151937Sjkim 266151937Sjkim Previous Release: 267151937Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 268151937Sjkim Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 269151937Sjkim Current Release: 270151937Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 271151937Sjkim Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 272151937Sjkim 273151937Sjkim 274151937Sjkim2) iASL Compiler/Disassembler and Tools: 275151937Sjkim 276151937SjkimFixed a compilation problem with the pre-defined Resource 277151937SjkimDescriptor field names where an "object does not exist" error 278151937Sjkimcould be incorrectly generated if the parent ResourceTemplate 279151937Sjkimpathname places the template within a different namespace scope 280151937Sjkimthan the current scope. (BZ 7212) 281151937Sjkim 282151937SjkimFixed a problem where the compiler could hang after syntax errors 283151937Sjkimdetected in an ElseIf construct. (BZ 453) 284151937Sjkim 285151937SjkimFixed a problem with the AmlFilename parameter to the 286151937SjkimDefinitionBlock() operator. An incorrect output filename was 287151937Sjkimproduced when this parameter was a null string (""). Now, the 288151937Sjkimoriginal input filename is used as the AML output filename, with 289151937Sjkiman ".aml" extension. 290151937Sjkim 291151937SjkimImplemented a generic batch command mode for the AcpiExec utility 292151937Sjkim(execute any AML debugger command) (Valery Podrezov). 293151937Sjkim 294151937Sjkim---------------------------------------- 295151937Sjkim12 September 2006. Summary of changes for version 20060912: 296151937Sjkim 297151937Sjkim1) ACPI CA Core Subsystem: 298151937Sjkim 299151937SjkimEnhanced the implementation of the "serialized mode" of the 300151937Sjkiminterpreter (enabled via the AcpiGbl_AllMethodsSerialized flag.) 301151937SjkimWhen this mode is specified, instead of creating a serialization 302151937Sjkimsemaphore per control method, the interpreter lock is simply no 303151937Sjkimlonger released before a blocking operation during control method 304151937Sjkimexecution. This effectively makes the AML Interpreter single- 305151937Sjkimthreaded. The overhead of a semaphore per-method is eliminated. 306151937Sjkim 307151937SjkimFixed a regression where an error was no longer emitted if a 308151937Sjkimcontrol method attempts to create 2 objects of the same name. 309151937SjkimThis once again returns AE_ALREADY_EXISTS. When this exception 310151937Sjkimoccurs, it invokes the mechanism that will dynamically serialize 311151937Sjkimthe control method to possible prevent future errors. (BZ 440) 312151937Sjkim 313151937SjkimIntegrated a fix for a problem with PCI Express HID detection in 314151937Sjkimthe PCI Config Space setup procedure. (BZ 7145) 315151937Sjkim 316151937SjkimMoved all FADT-related functions to a new file, tbfadt.c. 317151937SjkimEliminated the AcpiHwInitialize function - the FADT registers are 318151937Sjkimnow validated when the table is loaded. 319151937Sjkim 320151937SjkimAdded two new warnings during FADT verification - 1) if the FADT 321151937Sjkimis larger than the largest known FADT version, and 2) if there is 322151937Sjkima mismatch between a 32-bit block address and the 64-bit X 323151937Sjkimcounterpart (when both are non-zero.) 324151937Sjkim 325151937SjkimExample Code and Data Size: These are the sizes for the OS- 326151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 327151937Sjkim32-bit compiler. The debug version of the code includes the debug 328151937Sjkimoutput trace mechanism and has a much larger code and data size. 329151937Sjkim 330151937Sjkim Previous Release: 331151937Sjkim Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 332151937Sjkim Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 333151937Sjkim Current Release: 334151937Sjkim Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 335151937Sjkim Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 336151937Sjkim 337151937Sjkim 338151937Sjkim2) iASL Compiler/Disassembler and Tools: 339151937Sjkim 340151937SjkimFixed a problem with the implementation of the Switch() operator 341151937Sjkimwhere the temporary variable was declared too close to the actual 342151937SjkimSwitch, instead of at method level. This could cause a problem if 343151937Sjkimthe Switch() operator is within a while loop, causing an error on 344151937Sjkimthe second iteration. (BZ 460) 345151937Sjkim 346151937SjkimDisassembler - fix for error emitted for unknown type for target 347151937Sjkimof scope operator. Now, ignore it and continue. 348151937Sjkim 349151937SjkimDisassembly of an FADT now verifies the input FADT and reports 350151937Sjkimany errors found. Fix for proper disassembly of full-sized (ACPI 351151937Sjkim2.0) FADTs. 352151937Sjkim 353151937SjkimDisassembly of raw data buffers with byte initialization data now 354151937Sjkimprefixes each output line with the current buffer offset. 355151937Sjkim 356151937SjkimDisassembly of ASF! table now includes all variable-length data 357151937Sjkimfields at the end of some of the subtables. 358151937Sjkim 359151937SjkimThe disassembler now emits a comment if a buffer appears to be a 360151937SjkimResourceTemplate, but cannot be disassembled as such because the 361151937SjkimEndTag does not appear at the very end of the buffer. 362151937Sjkim 363151937SjkimAcpiExec - Added the "-t" command line option to enable the 364151937Sjkimserialized mode of the AML interpreter. 365151937Sjkim 366151937Sjkim---------------------------------------- 367151937Sjkim31 August 2006. Summary of changes for version 20060831: 368151937Sjkim 369151937Sjkim1) ACPI CA Core Subsystem: 370151937Sjkim 371151937SjkimMiscellaneous fixes for the Table Manager: 372151937Sjkim- Correctly initialize internal common FADT for all 64-bit "X" 373151937Sjkimfields 374151937Sjkim- Fixed a couple table mapping issues during table load 375151937Sjkim- Fixed a couple alignment issues for IA64 376151937Sjkim- Initialize input array to zero in AcpiInitializeTables 377151937Sjkim- Additional parameter validation for AcpiGetTable, 378151937SjkimAcpiGetTableHeader, AcpiGetTableByIndex 379151937Sjkim 380151937SjkimChange for GPE support: when a "wake" GPE is received, all wake 381151937SjkimGPEs are now immediately disabled to prevent the waking GPE from 382151937Sjkimfiring again and to prevent other wake GPEs from interrupting the 383151937Sjkimwake process. 384151937Sjkim 385151937SjkimAdded the AcpiGpeCount global that tracks the number of processed 386151937SjkimGPEs, to be used for debugging systems with a large number of 387151937SjkimACPI interrupts. 388151937Sjkim 389151937SjkimImplemented support for the "DMAR" ACPI table (DMA Redirection 390151937SjkimTable) in both the ACPICA headers and the disassembler. 391151937Sjkim 392151937SjkimExample Code and Data Size: These are the sizes for the OS- 393151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 394151937Sjkim32-bit compiler. The debug version of the code includes the debug 395151937Sjkimoutput trace mechanism and has a much larger code and data size. 396151937Sjkim 397151937Sjkim Previous Release: 398151937Sjkim Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 399151937Sjkim Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 400151937Sjkim Current Release: 401151937Sjkim Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 402151937Sjkim Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 403151937Sjkim 404151937Sjkim 405151937Sjkim2) iASL Compiler/Disassembler and Tools: 406151937Sjkim 407151937SjkimDisassembler support for the DMAR ACPI table. 408151937Sjkim 409151937Sjkim---------------------------------------- 410151937Sjkim23 August 2006. Summary of changes for version 20060823: 411151937Sjkim 412151937Sjkim1) ACPI CA Core Subsystem: 413151937Sjkim 414151937SjkimThe Table Manager component has been completely redesigned and 415151937Sjkimreimplemented. The new design is much simpler, and reduces the 416151937Sjkimoverall code and data size of the kernel-resident ACPICA by 417151937Sjkimapproximately 5%. Also, it is now possible to obtain the ACPI 418151937Sjkimtables very early during kernel initialization, even before 419151937Sjkimdynamic memory management is initialized. (Alexey Starikovskiy, 420151937SjkimFiodor Suietov, Bob Moore) 421151937Sjkim 422151937SjkimObsolete ACPICA interfaces: 423151937Sjkim 424151937Sjkim- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early 425151937Sjkimkernel init time). 426151937Sjkim- AcpiLoadTable: Not needed. 427151937Sjkim- AcpiUnloadTable: Not needed. 428151937Sjkim 429151937SjkimNew ACPICA interfaces: 430151937Sjkim 431151937Sjkim- AcpiInitializeTables: Must be called before the table manager 432151937Sjkimcan be used. 433151937Sjkim- AcpiReallocateRootTable: Used to transfer the root table to 434151937Sjkimdynamically allocated memory after it becomes available. 435151937Sjkim- AcpiGetTableByIndex: Allows the host to easily enumerate all 436151937SjkimACPI tables in the RSDT/XSDT. 437151937Sjkim 438151937SjkimOther ACPICA changes: 439151937Sjkim 440151937Sjkim- AcpiGetTableHeader returns the actual mapped table header, not 441151937Sjkima copy. Use AcpiOsUnmapMemory to free this mapping. 442151937Sjkim- AcpiGetTable returns the actual mapped table. The mapping is 443151937Sjkimmanaged internally and must not be deleted by the caller. Use of 444151937Sjkimthis interface causes no additional dynamic memory allocation. 445151937Sjkim- AcpiFindRootPointer: Support for physical addressing has been 446151937Sjkimeliminated, it appeared to be unused. 447151937Sjkim- The interface to AcpiOsMapMemory has changed to be consistent 448151937Sjkimwith the other allocation interfaces. 449151937Sjkim- The interface to AcpiOsGetRootPointer has changed to eliminate 450151937Sjkimunnecessary parameters. 451151937Sjkim- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 452151937Sjkimbits on 64-bit platforms. Was previously 64 bits on all 453151937Sjkimplatforms. 454151937Sjkim- The interface to the ACPI Global Lock acquire/release macros 455151937Sjkimhave changed slightly since ACPICA no longer keeps a local copy 456151937Sjkimof the FACS with a constructed pointer to the actual global lock. 457151937Sjkim 458151937SjkimPorting to the new table manager: 459151937Sjkim 460151937Sjkim- AcpiInitializeTables: Must be called once, and can be called 461151937Sjkimanytime during the OS initialization process. It allows the host 462151937Sjkimto specify an area of memory to be used to store the internal 463151937Sjkimversion of the RSDT/XSDT (root table). This allows the host to 464151937Sjkimaccess ACPI tables before memory management is initialized and 465151937Sjkimrunning. 466151937Sjkim- AcpiReallocateRootTable: Can be called after memory management 467151937Sjkimis running to copy the root table to a dynamically allocated 468151937Sjkimarray, freeing up the scratch memory specified in the call to 469151937SjkimAcpiInitializeTables. 470151937Sjkim- AcpiSubsystemInitialize: This existing interface is independent 471151937Sjkimof the Table Manager, and does not have to be called before the 472151937SjkimTable Manager can be used, it only must be called before the rest 473151937Sjkimof ACPICA can be used. 474151937Sjkim- ACPI Tables: Some changes have been made to the names and 475151937Sjkimstructure of the actbl.h and actbl1.h header files and may 476151937Sjkimrequire changes to existing code. For example, bitfields have 477151937Sjkimbeen completely removed because of their lack of portability 478151937Sjkimacross C compilers. 479151937Sjkim- Update interfaces to the Global Lock acquire/release macros if 480151937Sjkimlocal versions are used. (see acwin.h) 481151937Sjkim 482151937SjkimObsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 483151937Sjkim 484151937SjkimNew files: tbfind.c 485151937Sjkim 486151937SjkimExample Code and Data Size: These are the sizes for the OS- 487151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 488151937Sjkim32-bit compiler. The debug version of the code includes the debug 489151937Sjkimoutput trace mechanism and has a much larger code and data size. 490151937Sjkim 491151937Sjkim Previous Release: 492151937Sjkim Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 493151937Sjkim Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 494151937Sjkim Current Release: 495151937Sjkim Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 496151937Sjkim Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 497151937Sjkim 498151937Sjkim 499151937Sjkim2) iASL Compiler/Disassembler and Tools: 500151937Sjkim 501151937SjkimNo changes for this release. 502151937Sjkim 503151937Sjkim---------------------------------------- 504151937Sjkim21 July 2006. Summary of changes for version 20060721: 505151937Sjkim 506151937Sjkim1) ACPI CA Core Subsystem: 507151937Sjkim 508151937SjkimThe full source code for the ASL test suite used to validate the 509151937SjkimiASL compiler and the ACPICA core subsystem is being released 510151937Sjkimwith the ACPICA source for the first time. The source is 511151937Sjkimcontained in a separate package and consists of over 1100 files 512151937Sjkimthat exercise all ASL/AML operators. The package should appear on 513151937Sjkimthe Intel/ACPI web site shortly. (Valery Podrezov, Fiodor 514151937SjkimSuietov) 515151937Sjkim 516151937SjkimCompleted a new design and implementation for support of the ACPI 517151937SjkimGlobal Lock. On the OS side, the global lock is now treated as a 518151937Sjkimstandard AML mutex. Previously, multiple OS threads could 519151937Sjkim"acquire" the global lock simultaneously. However, this could 520151937Sjkimcause the BIOS to be starved out of the lock - especially in 521151937Sjkimcases such as the Embedded Controller driver where there is a 522151937Sjkimtight coupling between the OS and the BIOS. 523151937Sjkim 524151937SjkimImplemented an optimization for the ACPI Global Lock interrupt 525151937Sjkimmechanism. The Global Lock interrupt handler no longer queues the 526151937Sjkimexecution of a separate thread to signal the global lock 527151937Sjkimsemaphore. Instead, the semaphore is signaled directly from the 528151937Sjkiminterrupt handler. 529151937Sjkim 530151937SjkimImplemented support within the AML interpreter for package 531151937Sjkimobjects that contain a larger AML length (package list length) 532151937Sjkimthan the package element count. In this case, the length of the 533151937Sjkimpackage is truncated to match the package element count. Some 534151937SjkimBIOS code apparently modifies the package length on the fly, and 535151937Sjkimthis change supports this behavior. Provides compatibility with 536151937Sjkimthe MS AML interpreter. (With assistance from Fiodor Suietov) 537151937Sjkim 538151937SjkimImplemented a temporary fix for the BankValue parameter of a Bank 539151937SjkimField to support all constant values, now including the Zero and 540151937SjkimOne opcodes. Evaluation of this parameter must eventually be 541151937Sjkimconverted to a full TermArg evaluation. A not-implemented error 542151937Sjkimis now returned (temporarily) for non-constant values for this 543151937Sjkimparameter. 544151937Sjkim 545151937SjkimFixed problem reports (Fiodor Suietov) integrated: 546151937Sjkim- Fix for premature object deletion after CopyObject on Operation 547151937SjkimRegion (BZ 350) 548151937Sjkim 549151937SjkimExample Code and Data Size: These are the sizes for the OS- 550151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 551151937Sjkim32-bit compiler. The debug version of the code includes the debug 552151937Sjkimoutput trace mechanism and has a much larger code and data size. 553151937Sjkim 554151937Sjkim Previous Release: 555151937Sjkim Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 556151937Sjkim Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 557151937Sjkim Current Release: 558151937Sjkim Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 559151937Sjkim Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 560151937Sjkim 561151937Sjkim 562151937Sjkim2) iASL Compiler/Disassembler and Tools: 563151937Sjkim 564151937SjkimNo changes for this release. 565151937Sjkim 566151937Sjkim---------------------------------------- 567151937Sjkim07 July 2006. Summary of changes for version 20060707: 568151937Sjkim 569151937Sjkim1) ACPI CA Core Subsystem: 570151937Sjkim 571151937SjkimAdded the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C 572151937Sjkimcompilers that do not allow the initialization of address 573151937Sjkimpointers within packed structures - even though the hardware 574151937Sjkimitself may support misaligned transfers. Some of the debug data 575151937Sjkimstructures are packed by default to minimize size. 576151937Sjkim 577151937SjkimAdded an error message for the case where AcpiOsGetThreadId() 578151937Sjkimreturns zero. A non-zero value is required by the core ACPICA 579151937Sjkimcode to ensure the proper operation of AML mutexes and recursive 580151937Sjkimcontrol methods. 581151937Sjkim 582151937SjkimThe DSDT is now the only ACPI table that determines whether the 583151937SjkimAML interpreter is in 32-bit or 64-bit mode. Not really a 584151937Sjkimfunctional change, but the hooks for per-table 32/64 switching 585151937Sjkimhave been removed from the code. A clarification to the ACPI 586151937Sjkimspecification is forthcoming in ACPI 3.0B. 587151937Sjkim 588151937SjkimFixed a possible leak of an OwnerID in the error path of 589151937SjkimAcpiTbInitTableDescriptor (tbinstal.c), and migrated all table 590151937SjkimOwnerID deletion to a single place in AcpiTbUninstallTable to 591151937Sjkimcorrect possible leaks when using the AcpiTbDeleteTablesByType 592151937Sjkiminterface (with assistance from Lance Ortiz.) 593151937Sjkim 594151937SjkimFixed a problem with Serialized control methods where the 595151937Sjkimsemaphore associated with the method could be over-signaled after 596151937Sjkimmultiple method invocations. 597151937Sjkim 598151937SjkimFixed two issues with the locking of the internal namespace data 599151937Sjkimstructure. Both the Unload() operator and AcpiUnloadTable 600151937Sjkiminterface now lock the namespace during the namespace deletion 601151937Sjkimassociated with the table unload (with assistance from Linn 602151937SjkimCrosetto.) 603151937Sjkim 604151937SjkimFixed problem reports (Valery Podrezov) integrated: 605151937Sjkim- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 606151937Sjkim5426) 607151937Sjkim 608151937SjkimFixed problem reports (Fiodor Suietov) integrated: 609151937Sjkim- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 610151937Sjkim- On Address Space handler deletion, needless deactivation call 611151937Sjkim(BZ 374) 612151937Sjkim- AcpiRemoveAddressSpaceHandler: validate Device handle parameter 613151937Sjkim(BZ 375) 614151937Sjkim- Possible memory leak, Notify sub-objects of Processor, Power, 615151937SjkimThermalZone (BZ 376) 616151937Sjkim- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 617151937Sjkim378) 618151937Sjkim- Minimum Length of RSDT should be validated (BZ 379) 619151937Sjkim- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj 620151937Sjkimhas no Handler (BZ (380) 621151937Sjkim- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified 622151937Sjkimtype loaded (BZ 381) 623151937Sjkim 624151937SjkimExample Code and Data Size: These are the sizes for the OS- 625151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 626151937Sjkim32-bit compiler. The debug version of the code includes the debug 627151937Sjkimoutput trace mechanism and has a much larger code and data size. 628151937Sjkim 629151937Sjkim Previous Release: 630151937Sjkim Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 631151937Sjkim Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 632151937Sjkim Current Release: 633151937Sjkim Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 634151937Sjkim Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 635151937Sjkim 636151937Sjkim 637151937Sjkim2) iASL Compiler/Disassembler and Tools: 638151937Sjkim 639151937SjkimFixed problem reports: 640151937SjkimCompiler segfault when ASL contains a long (>1024) String 641151937Sjkimdeclaration (BZ 436) 642151937Sjkim 643151937Sjkim---------------------------------------- 644151937Sjkim23 June 2006. Summary of changes for version 20060623: 645151937Sjkim 646151937Sjkim1) ACPI CA Core Subsystem: 647151937Sjkim 648151937SjkimImplemented a new ACPI_SPINLOCK type for the OSL lock interfaces. 649151937SjkimThis allows the type to be customized to the host OS for improved 650151937Sjkimefficiency (since a spinlock is usually a very small object.) 651151937Sjkim 652151937SjkimImplemented support for "ignored" bits in the ACPI registers. 653151937SjkimAccording to the ACPI specification, these bits should be 654151937Sjkimpreserved when writing the registers via a read/modify/write 655151937Sjkimcycle. There are 3 bits preserved in this manner: PM1_CONTROL[0] 656151937Sjkim(SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 657151937Sjkim 658151937SjkimImplemented the initial deployment of new OSL mutex interfaces. 659151937SjkimSince some host operating systems have separate mutex and 660151937Sjkimsemaphore objects, this feature was requested. The base code now 661151937Sjkimuses mutexes (and the new mutex interfaces) wherever a binary 662151937Sjkimsemaphore was used previously. However, for the current release, 663151937Sjkimthe mutex interfaces are defined as macros to map them to the 664151937Sjkimexisting semaphore interfaces. Therefore, no OSL changes are 665151937Sjkimrequired at this time. (See acpiosxf.h) 666151937Sjkim 667151937SjkimFixed several problems with the support for the control method 668151937SjkimSyncLevel parameter. The SyncLevel now works according to the 669151937SjkimACPI specification and in concert with the Mutex SyncLevel 670151937Sjkimparameter, since the current SyncLevel is a property of the 671151937Sjkimexecuting thread. Mutual exclusion for control methods is now 672151937Sjkimimplemented with a mutex instead of a semaphore. 673151937Sjkim 674151937SjkimFixed three instances of the use of the C shift operator in the 675151937Sjkimbitfield support code (exfldio.c) to avoid the use of a shift 676151937Sjkimvalue larger than the target data width. The behavior of C 677151937Sjkimcompilers is undefined in this case and can cause unpredictable 678151937Sjkimresults, and therefore the case must be detected and avoided. 679151937Sjkim(Fiodor Suietov) 680151937Sjkim 681151937SjkimAdded an info message whenever an SSDT or OEM table is loaded 682151937Sjkimdynamically via the Load() or LoadTable() ASL operators. This 683151937Sjkimshould improve debugging capability since it will show exactly 684151937Sjkimwhat tables have been loaded (beyond the tables present in the 685151937SjkimRSDT/XSDT.) 686151937Sjkim 687151937SjkimExample Code and Data Size: These are the sizes for the OS- 688151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 689151937Sjkim32-bit compiler. The debug version of the code includes the debug 690151937Sjkimoutput trace mechanism and has a much larger code and data size. 691151937Sjkim 692151937Sjkim Previous Release: 693151937Sjkim Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 694151937Sjkim Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 695151937Sjkim Current Release: 696151937Sjkim Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 697151937Sjkim Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 698151937Sjkim 699151937Sjkim 700151937Sjkim2) iASL Compiler/Disassembler and Tools: 701151937Sjkim 702151937SjkimNo changes for this release. 703151937Sjkim 704151937Sjkim---------------------------------------- 705151937Sjkim08 June 2006. Summary of changes for version 20060608: 706151937Sjkim 707151937Sjkim1) ACPI CA Core Subsystem: 708151937Sjkim 709151937SjkimConverted the locking mutex used for the ACPI hardware to a 710151937Sjkimspinlock. This change should eliminate all problems caused by 711151937Sjkimattempting to acquire a semaphore at interrupt level, and it 712151937Sjkimmeans that all ACPICA external interfaces that directly access 713151937Sjkimthe ACPI hardware can be safely called from interrupt level. OSL 714151937Sjkimcode that implements the semaphore interfaces should be able to 715151937Sjkimeliminate any workarounds for being called at interrupt level. 716151937Sjkim 717151937SjkimFixed a regression introduced in 20060526 where the ACPI device 718151937Sjkiminitialization could be prematurely aborted with an AE_NOT_FOUND 719151937Sjkimif a device did not have an optional _INI method. 720151937Sjkim 721151937SjkimFixed an IndexField issue where a write to the Data Register 722151937Sjkimshould be limited in size to the AccessSize (width) of the 723151937SjkimIndexField itself. (BZ 433, Fiodor Suietov) 724151937Sjkim 725151937SjkimFixed problem reports (Valery Podrezov) integrated: 726151937Sjkim- Allow store of ThermalZone objects to Debug object (BZ 727151937Sjkim5369/5370) 728151937Sjkim 729151937SjkimFixed problem reports (Fiodor Suietov) integrated: 730151937Sjkim- AcpiGetTableHeader doesn't handle multiple instances correctly 731151937Sjkim(BZ 364) 732151937Sjkim 733151937SjkimRemoved four global mutexes that were obsolete and were no longer 734151937Sjkimbeing used. 735151937Sjkim 736151937SjkimExample Code and Data Size: These are the sizes for the OS- 737151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 738151937Sjkim32-bit compiler. The debug version of the code includes the debug 739151937Sjkimoutput trace mechanism and has a much larger code and data size. 740151937Sjkim 741151937Sjkim Previous Release: 742151937Sjkim Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 743151937Sjkim Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 744151937Sjkim Current Release: 745151937Sjkim Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 746151937Sjkim Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 747151937Sjkim 748151937Sjkim 749151937Sjkim2) iASL Compiler/Disassembler and Tools: 750151937Sjkim 751151937SjkimFixed a fault when using -g option (get tables from registry) on 752151937SjkimWindows machines. 753151937Sjkim 754151937SjkimFixed problem reports integrated: 755151937Sjkim- Generate error if CreateField NumBits parameter is zero. (BZ 756151937Sjkim405) 757151937Sjkim- Fault if Offset/Length in Field unit is very large (BZ 432, 758151937SjkimFiodor Suietov) 759151937Sjkim- Global table revision override (-r) is ignored (BZ 413) 760151937Sjkim 761151937Sjkim---------------------------------------- 762151937Sjkim26 May 2006. Summary of changes for version 20060526: 763151937Sjkim 764151937Sjkim1) ACPI CA Core Subsystem: 765151937Sjkim 766151937SjkimRestructured, flattened, and simplified the internal interfaces 767151937Sjkimfor namespace object evaluation - resulting in smaller code, less 768151937SjkimCPU stack use, and fewer interfaces. (With assistance from 769151937SjkimMikhail Kouzmich) 770151937Sjkim 771151937SjkimFixed a problem with the CopyObject operator where the first 772151937Sjkimparameter was not typed correctly for the parser, interpreter, 773151937Sjkimcompiler, and disassembler. Caused various errors and unexpected 774151937Sjkimbehavior. 775151937Sjkim 776151937SjkimFixed a problem where a ShiftLeft or ShiftRight of more than 64 777151937Sjkimbits produced incorrect results with some C compilers. Since the 778151937Sjkimbehavior of C compilers when the shift value is larger than the 779151937Sjkimdatatype width is apparently not well defined, the interpreter 780151937Sjkimnow detects this condition and simply returns zero as expected in 781151937Sjkimall such cases. (BZ 395) 782151937Sjkim 783151937SjkimFixed problem reports (Valery Podrezov) integrated: 784151937Sjkim- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 785151937Sjkim5329) 786151937Sjkim- Allow interpreter to handle nested method declarations (BZ 787151937Sjkim5361) 788151937Sjkim 789151937SjkimFixed problem reports (Fiodor Suietov) integrated: 790151937Sjkim- AcpiTerminate doesn't free debug memory allocation list objects 791151937Sjkim(BZ 355) 792151937Sjkim- After Core Subsystem shutdown, AcpiSubsystemStatus returns 793151937SjkimAE_OK (BZ 356) 794151937Sjkim- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 795151937Sjkim357) 796151937Sjkim- Resource Manager should return AE_TYPE for non-device objects 797151937Sjkim(BZ 358) 798151937Sjkim- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 799151937Sjkim- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData 800151937Sjkim(BZ 360) 801151937Sjkim- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 802151937Sjkim- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 803151937Sjkim- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is 804151937Sjkimloaded (BZ 365) 805151937Sjkim- Status of the Global Initialization Handler call not used (BZ 806151937Sjkim366) 807151937Sjkim- Incorrect object parameter to Global Initialization Handler (BZ 808151937Sjkim367) 809151937Sjkim 810151937SjkimExample Code and Data Size: These are the sizes for the OS- 811151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 812151937Sjkim32-bit compiler. The debug version of the code includes the debug 813151937Sjkimoutput trace mechanism and has a much larger code and data size. 814151937Sjkim 815151937Sjkim Previous Release: 816151937Sjkim Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 817151937Sjkim Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 818151937Sjkim Current Release: 819151937Sjkim Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 820151937Sjkim Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 821151937Sjkim 822151937Sjkim 823151937Sjkim2) iASL Compiler/Disassembler and Tools: 824151937Sjkim 825151937SjkimModified the parser to allow the names IO, DMA, and IRQ to be 826151937Sjkimused as namespace identifiers with no collision with existing 827151937Sjkimresource descriptor macro names. This provides compatibility with 828151937Sjkimother ASL compilers and is most useful for 829151937Sjkimdisassembly/recompilation of existing tables without parse 830151937Sjkimerrors. (With assistance from Thomas Renninger) 831151937Sjkim 832151937SjkimDisassembler: fixed an incorrect disassembly problem with the 833151937SjkimDataTableRegion and CopyObject operators. Fixed a possible fault 834151937Sjkimduring disassembly of some Alias operators. 835151937Sjkim 836151937Sjkim---------------------------------------- 837151937Sjkim12 May 2006. Summary of changes for version 20060512: 838151937Sjkim 839151937Sjkim1) ACPI CA Core Subsystem: 840151937Sjkim 841151937SjkimReplaced the AcpiOsQueueForExecution interface with a new 842151937Sjkiminterface named AcpiOsExecute. The major difference is that the 843151937Sjkimnew interface does not have a Priority parameter, this appeared 844151937Sjkimto be useless and has been replaced by a Type parameter. The Type 845151937Sjkimtells the host what type of execution is being requested, such as 846151937Sjkimglobal lock handler, notify handler, GPE handler, etc. This 847151937Sjkimallows the host to queue and execute the request as appropriate 848151937Sjkimfor the request type, possibly using different work queues and 849151937Sjkimdifferent priorities for the various request types. This enables 850151937Sjkimfixes for multithreading deadlock problems such as BZ #5534, and 851151937Sjkimwill require changes to all existing OS interface layers. (Alexey 852151937SjkimStarikovskiy and Bob Moore) 853151937Sjkim 854151937SjkimFixed a possible memory leak associated with the support for the 855151937Sjkimso-called "implicit return" ACPI extension. Reported by FreeBSD, 856151937SjkimBZ #6514. (Fiodor Suietov) 857151937Sjkim 858151937SjkimFixed a problem with the Load() operator where a table load from 859151937Sjkiman operation region could overwrite an internal table buffer by 860151937Sjkimup to 7 bytes and cause alignment faults on IPF systems. (With 861151937Sjkimassistance from Luming Yu) 862151937Sjkim 863151937SjkimExample Code and Data Size: These are the sizes for the OS- 864151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 865151937Sjkim32-bit compiler. The debug version of the code includes the debug 866151937Sjkimoutput trace mechanism and has a much larger code and data size. 867151937Sjkim 868151937Sjkim Previous Release: 869151937Sjkim Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 870151937Sjkim Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 871151937Sjkim Current Release: 872151937Sjkim Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 873151937Sjkim Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 874151937Sjkim 875151937Sjkim 876151937Sjkim 877151937Sjkim2) iASL Compiler/Disassembler and Tools: 878151937Sjkim 879151937SjkimDisassembler: Implemented support to cross reference the internal 880151937Sjkimnamespace and automatically generate ASL External() statements 881151937Sjkimfor symbols not defined within the current table being 882151937Sjkimdisassembled. This will simplify the disassembly and 883151937Sjkimrecompilation of interdependent tables such as SSDTs since these 884151937Sjkimstatements will no longer have to be added manually. 885151937Sjkim 886151937SjkimDisassembler: Implemented experimental support to automatically 887151937Sjkimdetect invocations of external control methods and generate 888151937Sjkimappropriate External() statements. This is problematic because 889151937Sjkimthe AML cannot be correctly parsed until the number of arguments 890151937Sjkimfor each control method is known. Currently, standalone method 891151937Sjkiminvocations and invocations as the source operand of a Store() 892151937Sjkimstatement are supported. 893151937Sjkim 894151937SjkimDisassembler: Implemented support for the ASL pseudo-operators 895151937SjkimLNotEqual, LLessEqual, and LGreaterEqual. Previously disassembled 896151937Sjkimas LNot(LEqual()), LNot(LGreater()), and LNot(LLess()), this 897151937Sjkimmakes the disassembled ASL code more readable and likely closer 898151937Sjkimto the original ASL source. 899151937Sjkim 900151937Sjkim---------------------------------------- 901151937Sjkim21 April 2006. Summary of changes for version 20060421: 902151937Sjkim 903151937Sjkim1) ACPI CA Core Subsystem: 904151937Sjkim 905151937SjkimRemoved a device initialization optimization introduced in 906151937Sjkim20051216 where the _STA method was not run unless an _INI was 907151937Sjkimalso present for the same device. This optimization could cause 908151937Sjkimproblems because it could allow _INI methods to be run within a 909151937Sjkimnot-present device subtree. (If a not-present device had no _INI, 910151937Sjkim_STA would not be run, the not-present status would not be 911151937Sjkimdiscovered, and the children of the device would be incorrectly 912151937Sjkimtraversed.) 913151937Sjkim 914151937SjkimImplemented a new _STA optimization where namespace subtrees that 915151937Sjkimdo not contain _INI are identified and ignored during device 916151937Sjkiminitialization. Selectively running _STA can significantly 917151937Sjkimimprove boot time on large machines (with assistance from Len 918151937SjkimBrown.) 919151937Sjkim 920151937SjkimImplemented support for the device initialization case where the 921151937Sjkimreturned _STA flags indicate a device not-present but 922151937Sjkimfunctioning. In this case, _INI is not run, but the device 923151937Sjkimchildren are examined for presence, as per the ACPI 924151937Sjkimspecification. 925151937Sjkim 926151937SjkimImplemented an additional change to the IndexField support in 927151937Sjkimorder to conform to MS behavior. The value written to the Index 928151937SjkimRegister is not simply a byte offset, it is a byte offset in 929151937Sjkimunits of the access width of the parent Index Field. (Fiodor 930151937SjkimSuietov) 931151937Sjkim 932151937SjkimDefined and deployed a new OSL interface, AcpiOsValidateAddress. 933151937SjkimThis interface is called during the creation of all AML operation 934151937Sjkimregions, and allows the host OS to exert control over what 935151937Sjkimaddresses it will allow the AML code to access. Operation Regions 936151937Sjkimwhose addresses are disallowed will cause a runtime exception 937151937Sjkimwhen they are actually accessed (will not affect or abort table 938151937Sjkimloading.) See oswinxf or osunixxf for an example implementation. 939151937Sjkim 940151937SjkimDefined and deployed a new OSL interface, 941151937SjkimAcpiOsValidateInterface. This interface allows the host OS to 942151937Sjkimmatch the various "optional" interface/behavior strings for the 943151937Sjkim_OSI predefined control method as appropriate (with assistance 944151937Sjkimfrom Bjorn Helgaas.) See oswinxf or osunixxf for an example 945151937Sjkimimplementation. 946151937Sjkim 947151937SjkimRestructured and corrected various problems in the exception 948151937Sjkimhandling code paths within DsCallControlMethod and 949151937SjkimDsTerminateControlMethod in dsmethod (with assistance from 950151937SjkimTakayoshi Kochi.) 951151937Sjkim 952151937SjkimModified the Linux source converter to ignore quoted string 953151937Sjkimliterals while converting identifiers from mixed to lower case. 954151937SjkimThis will correct problems with the disassembler and other areas 955151937Sjkimwhere such strings must not be modified. 956151937Sjkim 957151937SjkimThe ACPI_FUNCTION_* macros no longer require quotes around the 958151937Sjkimfunction name. This allows the Linux source converter to convert 959151937Sjkimthe names, now that the converter ignores quoted strings. 960151937Sjkim 961151937SjkimExample Code and Data Size: These are the sizes for the OS- 962151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 963151937Sjkim32-bit compiler. The debug version of the code includes the debug 964151937Sjkimoutput trace mechanism and has a much larger code and data size. 965151937Sjkim 966151937Sjkim Previous Release: 967151937Sjkim 968151937Sjkim Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 969151937Sjkim Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 970151937Sjkim Current Release: 971151937Sjkim Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 972151937Sjkim Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 973151937Sjkim 974151937Sjkim 975151937Sjkim2) iASL Compiler/Disassembler and Tools: 976151937Sjkim 977151937SjkimImplemented 3 new warnings for iASL, and implemented multiple 978151937Sjkimwarning levels (w2 flag). 979151937Sjkim 980151937Sjkim1) Ignored timeouts: If the TimeoutValue parameter to Wait or 981151937SjkimAcquire is not WAIT_FOREVER (0xFFFF) and the code does not 982151937Sjkimexamine the return value to check for the possible timeout, a 983151937Sjkimwarning is issued. 984151937Sjkim 985151937Sjkim2) Useless operators: If an ASL operator does not specify an 986151937Sjkimoptional target operand and it also does not use the function 987151937Sjkimreturn value from the operator, a warning is issued since the 988151937Sjkimoperator effectively does nothing. 989151937Sjkim 990151937Sjkim3) Unreferenced objects: If a namespace object is created, but 991151937Sjkimnever referenced, a warning is issued. This is a warning level 2 992151937Sjkimsince there are cases where this is ok, such as when a secondary 993151937Sjkimtable is loaded that uses the unreferenced objects. Even so, care 994151937Sjkimis taken to only flag objects that don't look like they will ever 995151937Sjkimbe used. For example, the reserved methods (starting with an 996151937Sjkimunderscore) are usually not referenced because it is expected 997151937Sjkimthat the OS will invoke them. 998151937Sjkim 999151937Sjkim---------------------------------------- 1000151937Sjkim31 March 2006. Summary of changes for version 20060331: 1001151937Sjkim 1002151937Sjkim1) ACPI CA Core Subsystem: 1003151937Sjkim 1004151937SjkimImplemented header file support for the following additional ACPI 1005151937Sjkimtables: ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. 1006151937SjkimWith this support, all current and known ACPI tables are now 1007151937Sjkimdefined in the ACPICA headers and are available for use by device 1008151937Sjkimdrivers and other software. 1009151937Sjkim 1010151937SjkimImplemented support to allow tables that contain ACPI names with 1011151937Sjkiminvalid characters to be loaded. Previously, this would cause the 1012151937Sjkimtable load to fail, but since there are several known cases of 1013151937Sjkimsuch tables on existing machines, this change was made to enable 1014151937SjkimACPI support for them. Also, this matches the behavior of the 1015151937SjkimMicrosoft ACPI implementation. 1016151937Sjkim 1017151937SjkimFixed a couple regressions introduced during the memory 1018151937Sjkimoptimization in the 20060317 release. The namespace node 1019151937Sjkimdefinition required additional reorganization and an internal 1020151937Sjkimdatatype that had been changed to 8-bit was restored to 32-bit. 1021151937Sjkim(Valery Podrezov) 1022151937Sjkim 1023151937SjkimFixed a problem where a null pointer passed to 1024151937SjkimAcpiUtDeleteGenericState could be passed through to 1025151937SjkimAcpiOsReleaseObject which is unexpected. Such null pointers are 1026151937Sjkimnow trapped and ignored, matching the behavior of the previous 1027151937Sjkimimplementation before the deployment of AcpiOsReleaseObject. 1028151937Sjkim(Valery Podrezov, Fiodor Suietov) 1029151937Sjkim 1030151937SjkimFixed a memory mapping leak during the deletion of a SystemMemory 1031151937Sjkimoperation region where a cached memory mapping was not deleted. 1032151937SjkimThis became a noticeable problem for operation regions that are 1033151937Sjkimdefined within frequently used control methods. (Dana Meyers) 1034151937Sjkim 1035151937SjkimReorganized the ACPI table header files into two main files: one 1036151937Sjkimfor the ACPI tables consumed by the ACPICA core, and another for 1037151937Sjkimthe miscellaneous ACPI tables that are consumed by the drivers 1038151937Sjkimand other software. The various FADT definitions were merged into 1039151937Sjkimone common section and three different tables (ACPI 1.0, 1.0+, 1040151937Sjkimand 2.0) 1041151937Sjkim 1042151937SjkimExample Code and Data Size: These are the sizes for the OS- 1043151937Sjkimindependent acpica.lib produced by the Microsoft Visual C++ 6.0 1044151937Sjkim32-bit compiler. The debug version of the code includes the debug 1045151937Sjkimoutput trace mechanism and has a much larger code and data size. 1046151937Sjkim 1047151937Sjkim Previous Release: 1048151937Sjkim Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 1049151937Sjkim Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 1050151937Sjkim Current Release: 1051151937Sjkim Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 1052151937Sjkim Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 1053151937Sjkim 1054151937Sjkim 1055151937Sjkim2) iASL Compiler/Disassembler and Tools: 1056151937Sjkim 1057151937SjkimDisassembler: Implemented support to decode and format all non- 1058151937SjkimAML ACPI tables (tables other than DSDTs and SSDTs.) This 1059151937Sjkimincludes the new tables added to the ACPICA headers, therefore 1060151937Sjkimall current and known ACPI tables are supported. 1061151937Sjkim 1062151937SjkimDisassembler: The change to allow ACPI names with invalid 1063151937Sjkimcharacters also enables the disassembly of such tables. Invalid 1064151937Sjkimcharacters within names are changed to '*' to make the name 1065151937Sjkimprintable; the iASL compiler will still generate an error for 1066151937Sjkimsuch names, however, since this is an invalid ACPI character. 1067151937Sjkim 1068151937SjkimImplemented an option for AcpiXtract (-a) to extract all tables 1069151937Sjkimfound in the input file. The default invocation extracts only the 1070151937SjkimDSDTs and SSDTs. 1071151937Sjkim 1072151937SjkimFixed a couple of gcc generation issues for iASL and AcpiExec and 1073151937Sjkimadded a makefile for the AcpiXtract utility. 1074151937Sjkim 1075151937Sjkim---------------------------------------- 1076151937Sjkim17 March 2006. Summary of changes for version 20060317: 1077151937Sjkim 1078151937Sjkim1) ACPI CA Core Subsystem: 1079151937Sjkim 1080151937SjkimImplemented the use of a cache object for all internal namespace 1081151937Sjkimnodes. Since there are about 1000 static nodes in a typical 1082151937Sjkimsystem, this will decrease memory use for cache implementations 1083151937Sjkimthat minimize per-allocation overhead (such as a slab allocator.) 1084151937Sjkim 1085151937SjkimRemoved the reference count mechanism for internal namespace 1086151937Sjkimnodes, since it was deemed unnecessary. This reduces the size of 1087151937Sjkimeach namespace node by about 5%-10% on all platforms. Nodes are 1088151937Sjkimnow 20 bytes for the 32-bit case, and 32 bytes for the 64-bit 1089151937Sjkimcase. 1090151937Sjkim 1091151937SjkimOptimized several internal data structures to reduce object size 1092151937Sjkimon 64-bit platforms by packing data within the 64-bit alignment. 1093151937SjkimThis includes the frequently used ACPI_OPERAND_OBJECT, of which 1094151937Sjkimthere can be ~1000 static instances corresponding to the 1095151937Sjkimnamespace objects. 1096151937Sjkim 1097151937SjkimAdded two new strings for the predefined _OSI method: "Windows 1098151937Sjkim2001.1 SP1" and "Windows 2006". 1099151937Sjkim 1100151937SjkimSplit the allocation tracking mechanism out to a separate file, 1101151937Sjkimfrom utalloc.c to uttrack.c. This mechanism appears to be only 1102151937Sjkimuseful for application-level code. Kernels may wish to not 1103151937Sjkiminclude uttrack.c in distributions. 1104151937Sjkim 1105151937SjkimRemoved all remnants of the obsolete ACPI_REPORT_* macros and the 1106151937Sjkimassociated code. (These macros have been replaced by the 1107151937SjkimACPI_ERROR and ACPI_WARNING macros.) 1108151937Sjkim 1109151937SjkimCode and Data Size: These are the sizes for the acpica.lib 1110151937Sjkimproduced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1111151937Sjkimvalues do not include any ACPI driver or OSPM code. The debug 1112151937Sjkimversion of the code includes the debug output trace mechanism and 1113151937Sjkimhas a much larger code and data size. Note that these values will 1114151937Sjkimvary depending on the efficiency of the compiler and the compiler 1115151937Sjkimoptions used during generation. 1116151937Sjkim 1117151937Sjkim Previous Release: 1118151937Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 1119151937Sjkim Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 1120151937Sjkim Current Release: 1121151937Sjkim Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 1122151937Sjkim Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 1123151937Sjkim 1124151937Sjkim 1125151937Sjkim2) iASL Compiler/Disassembler and Tools: 1126151937Sjkim 1127151937SjkimImplemented an ANSI C version of the acpixtract utility. This 1128151937Sjkimversion will automatically extract the DSDT and all SSDTs from 1129151937Sjkimthe input acpidump text file and dump the binary output to 1130151937Sjkimseparate files. It can also display a summary of the input file 1131151937Sjkimincluding the headers for each table found and will extract any 1132151937Sjkimsingle ACPI table, with any signature. (See 1133151937Sjkimsource/tools/acpixtract) 1134151937Sjkim 1135151937Sjkim---------------------------------------- 1136151937Sjkim10 March 2006. Summary of changes for version 20060310: 1137151937Sjkim 1138151937Sjkim1) ACPI CA Core Subsystem: 1139151937Sjkim 1140151937SjkimTagged all external interfaces to the subsystem with the new 1141151937SjkimACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary 1142151937Sjkimto assist kernel integration. For Linux, the macro resolves to 1143151937Sjkimthe EXPORT_SYMBOL macro. The default definition is NULL. 1144151937Sjkim 1145151937SjkimAdded the ACPI_THREAD_ID type for the return value from 1146151937SjkimAcpiOsGetThreadId. This allows the host to define this as 1147151937Sjkimnecessary to simplify kernel integration. The default definition 1148151937Sjkimis ACPI_NATIVE_UINT. 1149151937Sjkim 1150151937SjkimFixed two interpreter problems related to error processing, the 1151151937Sjkimdeletion of objects, and placing invalid pointers onto the 1152151937Sjkiminternal operator result stack. BZ 6028, 6151 (Valery Podrezov) 1153151937Sjkim 1154151937SjkimIncreased the reference count threshold where a warning is 1155151937Sjkimemitted for large reference counts in order to eliminate 1156151937Sjkimunnecessary warnings on systems with large namespaces (especially 1157151937Sjkim64-bit.) Increased the value from 0x400 to 0x800. 1158151937Sjkim 1159151937SjkimDue to universal disagreement as to the meaning of the 'c' in the 1160151937Sjkimcalloc() function, the ACPI_MEM_CALLOCATE macro has been renamed 1161151937Sjkimto ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 1162151937Sjkim'clear'. ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to 1163151937SjkimACPI_ALLOCATE and ACPI_FREE. 1164151937Sjkim 1165151937SjkimCode and Data Size: These are the sizes for the acpica.lib 1166151937Sjkimproduced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1167151937Sjkimvalues do not include any ACPI driver or OSPM code. The debug 1168151937Sjkimversion of the code includes the debug output trace mechanism and 1169151937Sjkimhas a much larger code and data size. Note that these values will 1170151937Sjkimvary depending on the efficiency of the compiler and the compiler 1171151937Sjkimoptions used during generation. 1172151937Sjkim 1173151937Sjkim Previous Release: 1174151937Sjkim Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 1175151937Sjkim Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 1176151937Sjkim Current Release: 1177151937Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 1178151937Sjkim Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 1179151937Sjkim 1180151937Sjkim 1181151937Sjkim2) iASL Compiler/Disassembler: 1182151937Sjkim 1183151937SjkimDisassembler: implemented support for symbolic resource 1184151937Sjkimdescriptor references. If a CreateXxxxField operator references a 1185151937Sjkimfixed offset within a resource descriptor, a name is assigned to 1186151937Sjkimthe descriptor and the offset is translated to the appropriate 1187151937Sjkimresource tag and pathname. The addition of this support brings 1188151937Sjkimthe disassembled code very close to the original ASL source code 1189151937Sjkimand helps eliminate run-time errors when the disassembled code is 1190151937Sjkimmodified (and recompiled) in such a way as to invalidate the 1191151937Sjkimoriginal fixed offsets. 1192151937Sjkim 1193151937SjkimImplemented support for a Descriptor Name as the last parameter 1194151937Sjkimto the ASL Register() macro. This parameter was inadvertently 1195151937Sjkimleft out of the ACPI specification, and will be added for ACPI 1196151937Sjkim3.0b. 1197151937Sjkim 1198151937SjkimFixed a problem where the use of the "_OSI" string (versus the 1199151937Sjkimfull path "\_OSI") caused an internal compiler error. ("No back 1200151937Sjkimptr to op") 1201151937Sjkim 1202151937SjkimFixed a problem with the error message that occurs when an 1203151937Sjkiminvalid string is used for a _HID object (such as one with an 1204151937Sjkimembedded asterisk: "*PNP010A".) The correct message is now 1205151937Sjkimdisplayed. 1206151937Sjkim 1207151937Sjkim---------------------------------------- 1208151937Sjkim17 February 2006. Summary of changes for version 20060217: 1209151937Sjkim 1210151937Sjkim1) ACPI CA Core Subsystem: 1211151937Sjkim 1212151937SjkimImplemented a change to the IndexField support to match the 1213151937Sjkimbehavior of the Microsoft AML interpreter. The value written to 1214151937Sjkimthe Index register is now a byte offset, no longer an index based 1215151937Sjkimupon the width of the Data register. This should fix IndexField 1216151937Sjkimproblems seen on some machines where the Data register is not 1217151937Sjkimexactly one byte wide. The ACPI specification will be clarified 1218151937Sjkimon this point. 1219151937Sjkim 1220151937SjkimFixed a problem where several resource descriptor types could 1221151937Sjkimoverrun the internal descriptor buffer due to size 1222151937Sjkimmiscalculation: VendorShort, VendorLong, and Interrupt. This was 1223151937Sjkimnoticed on IA64 machines, but could affect all platforms. 1224151937Sjkim 1225151937SjkimFixed a problem where individual resource descriptors were 1226151937Sjkimmisaligned within the internal buffer, causing alignment faults 1227151937Sjkimon IA64 platforms. 1228151937Sjkim 1229151937SjkimCode and Data Size: These are the sizes for the acpica.lib 1230151937Sjkimproduced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1231151937Sjkimvalues do not include any ACPI driver or OSPM code. The debug 1232151937Sjkimversion of the code includes the debug output trace mechanism and 1233151937Sjkimhas a much larger code and data size. Note that these values will 1234151937Sjkimvary depending on the efficiency of the compiler and the compiler 1235151937Sjkimoptions used during generation. 1236151937Sjkim 1237151937Sjkim Previous Release: 1238151937Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 1239151937Sjkim Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 1240151937Sjkim Current Release: 1241151937Sjkim Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 1242151937Sjkim Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 1243151937Sjkim 1244151937Sjkim 1245151937Sjkim2) iASL Compiler/Disassembler: 1246151937Sjkim 1247151937SjkimImplemented support for new reserved names: _WDG and _WED are 1248151937SjkimMicrosoft extensions for Windows Instrumentation Management, _TDL 1249151937Sjkimis a new ACPI-defined method (Throttling Depth Limit.) 1250151937Sjkim 1251151937SjkimFixed a problem where a zero-length VendorShort or VendorLong 1252151937Sjkimresource descriptor was incorrectly emitted as a descriptor of 1253151937Sjkimlength one. 1254151937Sjkim 1255151937Sjkim---------------------------------------- 1256151937Sjkim10 February 2006. Summary of changes for version 20060210: 1257151937Sjkim 1258151937Sjkim1) ACPI CA Core Subsystem: 1259151937Sjkim 1260151937SjkimRemoved a couple of extraneous ACPI_ERROR messages that appeared 1261151937Sjkimduring normal execution. These became apparent after the 1262151937Sjkimconversion from ACPI_DEBUG_PRINT. 1263151937Sjkim 1264151937SjkimFixed a problem where the CreateField operator could hang if the 1265151937SjkimBitIndex or NumBits parameter referred to a named object. (Valery 1266151937SjkimPodrezov, BZ 5359) 1267151937Sjkim 1268151937SjkimFixed a problem where a DeRefOf operation on a buffer object 1269151937Sjkimincorrectly failed with an exception. This also fixes a couple of 1270151937Sjkimrelated RefOf and DeRefOf issues. (Valery Podrezov, BZ 1271151937Sjkim5360/5392/5387) 1272151937Sjkim 1273151937SjkimFixed a problem where the AE_BUFFER_LIMIT exception was returned 1274151937Sjkiminstead of AE_STRING_LIMIT on an out-of-bounds Index() operation. 1275151937Sjkim(Valery Podrezov, BZ 5480) 1276151937Sjkim 1277151937SjkimImplemented a memory cleanup at the end of the execution of each 1278151937Sjkimiteration of an AML While() loop, preventing the accumulation of 1279151937Sjkimoutstanding objects. (Valery Podrezov, BZ 5427) 1280151937Sjkim 1281151937SjkimEliminated a chunk of duplicate code in the object resolution 1282151937Sjkimcode. (Valery Podrezov, BZ 5336) 1283151937Sjkim 1284151937SjkimFixed several warnings during the 64-bit code generation. 1285151937Sjkim 1286151937SjkimThe AcpiSrc source code conversion tool now inserts one line of 1287151937Sjkimwhitespace after an if() statement that is followed immediately 1288151937Sjkimby a comment, improving readability of the Linux code. 1289151937Sjkim 1290151937SjkimCode and Data Size: The current and previous library sizes for 1291151937Sjkimthe core subsystem are shown below. These are the code and data 1292151937Sjkimsizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1293151937Sjkim32-bit compiler. These values do not include any ACPI driver or 1294151937SjkimOSPM code. The debug version of the code includes the debug 1295151937Sjkimoutput trace mechanism and has a much larger code and data size. 1296151937SjkimNote that these values will vary depending on the efficiency of 1297151937Sjkimthe compiler and the compiler options used during generation. 1298151937Sjkim 1299151937Sjkim Previous Release: 1300151937Sjkim Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 1301151937Sjkim Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 1302151937Sjkim Current Release: 1303151937Sjkim Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 1304151937Sjkim Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 1305151937Sjkim 1306151937Sjkim 1307151937Sjkim2) iASL Compiler/Disassembler: 1308151937Sjkim 1309151937SjkimFixed a problem with the disassembly of a BankField operator with 1310151937Sjkima complex expression for the BankValue parameter. 1311151937Sjkim 1312151937Sjkim---------------------------------------- 1313151937Sjkim27 January 2006. Summary of changes for version 20060127: 1314151937Sjkim 1315151937Sjkim1) ACPI CA Core Subsystem: 1316151937Sjkim 1317151937SjkimImplemented support in the Resource Manager to allow unresolved 1318151937Sjkimnamestring references within resource package objects for the 1319151937Sjkim_PRT method. This support is in addition to the previously 1320151937Sjkimimplemented unresolved reference support within the AML parser. 1321151937SjkimIf the interpreter slack mode is enabled, these unresolved 1322151937Sjkimreferences will be passed through to the caller as a NULL package 1323151937Sjkimentry. 1324151937Sjkim 1325151937SjkimImplemented and deployed new macros and functions for error and 1326151937Sjkimwarning messages across the subsystem. These macros are simpler 1327151937Sjkimand generate less code than their predecessors. The new macros 1328151937SjkimACPI_ERROR, ACPI_EXCEPTION, ACPI_WARNING, and ACPI_INFO replace 1329151937Sjkimthe ACPI_REPORT_* macros. The older macros remain defined to 1330151937Sjkimallow ACPI drivers time to migrate to the new macros. 1331151937Sjkim 1332151937SjkimImplemented the ACPI_CPU_FLAGS type to simplify host OS 1333151937Sjkimintegration of the Acquire/Release Lock OSL interfaces. 1334151937Sjkim 1335151937SjkimFixed a problem where Alias ASL operators are sometimes not 1336151937Sjkimcorrectly resolved, in both the interpreter and the iASL 1337151937Sjkimcompiler. 1338151937Sjkim 1339151937SjkimFixed several problems with the implementation of the 1340151937SjkimConcatenateResTemplate ASL operator. As per the ACPI 1341151937Sjkimspecification, zero length buffers are now treated as a single 1342151937SjkimEndTag. One-length buffers always cause a fatal exception. Non- 1343151937Sjkimzero length buffers that do not end with a full 2-byte EndTag 1344151937Sjkimcause a fatal exception. 1345151937Sjkim 1346151937SjkimFixed a possible structure overwrite in the AcpiGetObjectInfo 1347151937Sjkimexternal interface. (With assistance from Thomas Renninger) 1348151937Sjkim 1349151937SjkimCode and Data Size: The current and previous library sizes for 1350151937Sjkimthe core subsystem are shown below. These are the code and data 1351151937Sjkimsizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1352151937Sjkim32-bit compiler. These values do not include any ACPI driver or 1353151937SjkimOSPM code. The debug version of the code includes the debug 1354151937Sjkimoutput trace mechanism and has a much larger code and data size. 1355151937SjkimNote that these values will vary depending on the efficiency of 1356151937Sjkimthe compiler and the compiler options used during generation. 1357151937Sjkim 1358151937Sjkim Previous Release: 1359151937Sjkim Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 1360151937Sjkim Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 1361151937Sjkim Current Release: 1362151937Sjkim Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 1363151937Sjkim Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 1364138287Smarks 1365138287Smarks 1366138287Smarks2) iASL Compiler/Disassembler: 1367138287Smarks 1368151937SjkimFixed an internal error that was generated for any forward 1369151937Sjkimreferences to ASL Alias objects. 1370151937Sjkim 1371138287Smarks---------------------------------------- 1372151937Sjkim13 January 2006. Summary of changes for version 20060113: 1373151937Sjkim 1374151937Sjkim1) ACPI CA Core Subsystem: 1375138287Smarks 1376151937SjkimAdded 2006 copyright to all module headers and signons. This 1377151937Sjkimaffects virtually every file in the ACPICA core subsystem, iASL 1378151937Sjkimcompiler, and the utilities. 1379151937Sjkim 1380151937SjkimEnhanced the ACPICA error reporting in order to simplify user 1381151937Sjkimmigration to the non-debug version of ACPICA. Replaced all 1382151937Sjkiminstances of the ACPI_DEBUG_PRINT macro invoked at the 1383151937SjkimACPI_DB_ERROR and ACPI_DB_WARN debug levels with the 1384138287SmarksACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, respectively. 1385151937SjkimThis preserves all error and warning messages in the non-debug 1386151937Sjkimversion of the ACPICA code (this has been referred to as the 1387151937Sjkim"debug lite" option.) Over 200 cases were converted to create a 1388151937Sjkimtotal of over 380 error/warning messages across the ACPICA code. 1389138287SmarksThis increases the code and data size of the default non-debug 1390151937Sjkimversion of the code somewhat (about 13K), but all error/warning 1391151937Sjkimreporting may be disabled if desired (and code eliminated) by 1392151937Sjkimspecifying the ACPI_NO_ERROR_MESSAGES compile-time configuration 1393151937Sjkimoption. The size of the debug version of ACPICA remains about the 1394151937Sjkimsame. 1395151937Sjkim 1396151937SjkimFixed a memory leak within the AML Debugger "Set" command. One 1397151937Sjkimobject was not properly deleted for every successful invocation 1398138287Smarksof the command. 1399151937Sjkim 1400151937SjkimCode and Data Size: The current and previous library sizes for 1401151937Sjkimthe core subsystem are shown below. These are the code and data 1402151937Sjkimsizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1403151937Sjkim32-bit compiler. These values do not include any ACPI driver or 1404151937SjkimOSPM code. The debug version of the code includes the debug 1405138287Smarksoutput trace mechanism and has a much larger code and data size. 1406138287SmarksNote that these values will vary depending on the efficiency of 1407138287Smarksthe compiler and the compiler options used during generation. 1408138287Smarks 1409138287Smarks Previous Release: 1410138287Smarks Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 1411138287Smarks Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 1412138287Smarks Current Release: 1413138287Smarks Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 1414138287Smarks Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 1415138287Smarks 1416138287Smarks 1417138287Smarks2) iASL Compiler/Disassembler: 1418138287Smarks 1419138287SmarksThe compiler now officially supports the ACPI 3.0a specification 1420138287Smarksthat was released on December 30, 2005. (Specification is 1421138287Smarksavailable at www.acpi.info) 1422138287Smarks 1423138287Smarks---------------------------------------- 1424138287Smarks16 December 2005. Summary of changes for version 20051216: 1425138287Smarks 1426138287Smarks1) ACPI CA Core Subsystem: 1427138287Smarks 1428138287SmarksImplemented optional support to allow unresolved names within ASL 1429138287SmarksPackage objects. A null object is inserted in the package when a 1430138287Smarksnamed reference cannot be located in the current namespace. 1431138287SmarksEnabled via the interpreter slack flag, this should eliminate 1432138287SmarksAE_NOT_FOUND exceptions seen on machines that contain such code. 1433138287Smarks 1434138287SmarksImplemented an optimization to the initialization sequence that 1435138287Smarkscan improve boot time. During ACPI device initialization, the 1436138287Smarks_STA method is now run if and only if the _INI method exists. The 1437138287Smarks_STA method is used to determine if the device is present; An 1438138287Smarks_INI can only be run if _STA returns present, but it is a waste 1439138287Smarksof time to run the _STA method if the _INI does not exist. 1440138287Smarks(Prototype and assistance from Dong Wei) 1441138287Smarks 1442138287SmarksImplemented use of the C99 uintptr_t for the pointer casting 1443138287Smarksmacros if it is available in the current compiler. Otherwise, the 1444138287Smarksdefault (void *) cast is used as before. 1445138287Smarks 1446138287SmarksFixed some possible memory leaks found within the execution path 1447138287Smarksof the Break, Continue, If, and CreateField operators. (Valery 1448138287SmarksPodrezov) 1449138287Smarks 1450138287SmarksFixed a problem introduced in the 20051202 release where an 1451138287Smarksexception is generated during method execution if a control 1452138287Smarksmethod attempts to declare another method. 1453138287Smarks 1454138287SmarksMoved resource descriptor string constants that are used by both 1455138287Smarksthe AML disassembler and AML debugger to the common utilities 1456138287Smarksdirectory so that these components are independent. 1457138287Smarks 1458138287SmarksImplemented support in the AcpiExec utility (-e switch) to 1459138287Smarksglobally ignore exceptions during control method execution 1460138287Smarks(method is not aborted.) 1461138287Smarks 1462138287SmarksAdded the rsinfo.c source file to the AcpiExec makefile for 1463138287SmarksLinux/Unix generation. 1464138287Smarks 1465138287SmarksCode and Data Size: The current and previous library sizes for 1466138287Smarksthe core subsystem are shown below. These are the code and data 1467138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1468138287Smarks32-bit compiler. These values do not include any ACPI driver or 1469138287SmarksOSPM code. The debug version of the code includes the debug 1470138287Smarksoutput trace mechanism and has a much larger code and data size. 1471138287SmarksNote that these values will vary depending on the efficiency of 1472138287Smarksthe compiler and the compiler options used during generation. 1473138287Smarks 1474138287Smarks Previous Release: 1475138287Smarks Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 1476138287Smarks Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 1477138287Smarks Current Release: 1478138287Smarks Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 1479138287Smarks Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 1480138287Smarks 1481138287Smarks 1482138287Smarks2) iASL Compiler/Disassembler: 1483138287Smarks 1484138287SmarksFixed a problem where a CPU stack overflow fault could occur if a 1485138287Smarksrecursive method call was made from within a Return statement. 1486138287Smarks 1487138287Smarks---------------------------------------- 1488138287Smarks02 December 2005. Summary of changes for version 20051202: 1489138287Smarks 1490138287Smarks1) ACPI CA Core Subsystem: 1491138287Smarks 1492138287SmarksModified the parsing of control methods to no longer create 1493138287Smarksnamespace objects during the first pass of the parse. Objects are 1494138287Smarksnow created only during the execute phase, at the moment the 1495138287Smarksnamespace creation operator is encountered in the AML (Name, 1496138287SmarksOperationRegion, CreateByteField, etc.) This should eliminate 1497138287SmarksALREADY_EXISTS exceptions seen on some machines where reentrant 1498138287Smarkscontrol methods are protected by an AML mutex. The mutex will now 1499138287Smarkscorrectly block multiple threads from attempting to create the 1500138287Smarkssame object more than once. 1501138287Smarks 1502138287SmarksIncreased the number of available Owner Ids for namespace object 1503138287Smarkstracking from 32 to 255. This should eliminate the OWNER_ID_LIMIT 1504138287Smarksexceptions seen on some machines with a large number of ACPI 1505138287Smarkstables (either static or dynamic). 1506138287Smarks 1507138287SmarksFixed a problem with the AcpiExec utility where a fault could 1508138287Smarksoccur when the -b switch (batch mode) is used. 1509138287Smarks 1510138287SmarksEnhanced the namespace dump routine to output the owner ID for 1511138287Smarkseach namespace object. 1512138287Smarks 1513138287SmarksCode and Data Size: The current and previous library sizes for 1514138287Smarksthe core subsystem are shown below. These are the code and data 1515138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1516138287Smarks32-bit compiler. These values do not include any ACPI driver or 1517138287SmarksOSPM code. The debug version of the code includes the debug 1518138287Smarksoutput trace mechanism and has a much larger code and data size. 1519138287SmarksNote that these values will vary depending on the efficiency of 1520138287Smarksthe compiler and the compiler options used during generation. 1521138287Smarks 1522138287Smarks Previous Release: 1523138287Smarks Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 1524138287Smarks Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 1525138287Smarks Current Release: 1526138287Smarks Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 1527138287Smarks Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 1528138287Smarks 1529138287Smarks 1530138287Smarks2) iASL Compiler/Disassembler: 1531138287Smarks 1532138287SmarksFixed a parse error during compilation of certain Switch/Case 1533138287Smarksconstructs. To simplify the parse, the grammar now allows for 1534138287Smarksmultiple Default statements and this error is now detected and 1535138287Smarksflagged during the analysis phase. 1536138287Smarks 1537138287SmarksDisassembler: The disassembly now includes the contents of the 1538138287Smarksoriginal table header within a comment at the start of the file. 1539138287SmarksThis includes the name and version of the original ASL compiler. 1540138287Smarks 1541138287Smarks---------------------------------------- 1542138287Smarks17 November 2005. Summary of changes for version 20051117: 1543138287Smarks 1544138287Smarks1) ACPI CA Core Subsystem: 1545138287Smarks 1546138287SmarksFixed a problem in the AML parser where the method thread count 1547138287Smarkscould be decremented below zero if any errors occurred during the 1548138287Smarksmethod parse phase. This should eliminate AE_AML_METHOD_LIMIT 1549138287Smarksexceptions seen on some machines. This also fixed a related 1550138287Smarksregression with the mechanism that detects and corrects methods 1551138287Smarksthat cannot properly handle reentrancy (related to the deployment 1552138287Smarksof the new OwnerId mechanism.) 1553138287Smarks 1554138287SmarksEliminated the pre-parsing of control methods (to detect errors) 1555138287Smarksduring table load. Related to the problem above, this was causing 1556138287Smarksunwind issues if any errors occurred during the parse, and it 1557138287Smarksseemed to be overkill. A table load should not be aborted if 1558138287Smarksthere are problems with any single control method, thus rendering 1559138287Smarksthis feature rather pointless. 1560138287Smarks 1561138287SmarksFixed a problem with the new table-driven resource manager where 1562138287Smarksan internal buffer overflow could occur for small resource 1563138287Smarkstemplates. 1564138287Smarks 1565138287SmarksImplemented a new external interface, AcpiGetVendorResource. This 1566138287Smarksinterface will find and return a vendor-defined resource 1567138287Smarksdescriptor within a _CRS or _PRS method via an ACPI 3.0 UUID 1568138287Smarksmatch. With assistance from Bjorn Helgaas. 1569138287Smarks 1570138287SmarksRemoved the length limit (200) on string objects as per the 1571138287Smarksupcoming ACPI 3.0A specification. This affects the following 1572138287Smarksareas of the interpreter: 1) any implicit conversion of a Buffer 1573138287Smarksto a String, 2) a String object result of the ASL Concatentate 1574138287Smarksoperator, 3) the String object result of the ASL ToString 1575138287Smarksoperator. 1576138287Smarks 1577138287SmarksFixed a problem in the Windows OS interface layer (OSL) where a 1578138287SmarksWAIT_FOREVER on a semaphore object would incorrectly timeout. 1579138287SmarksThis allows the multithreading features of the AcpiExec utility 1580138287Smarksto work properly under Windows. 1581138287Smarks 1582138287SmarksUpdated the Linux makefiles for the iASL compiler and AcpiExec to 1583138287Smarksinclude the recently added file named "utresrc.c". 1584138287Smarks 1585138287SmarksCode and Data Size: The current and previous library sizes for 1586138287Smarksthe core subsystem are shown below. These are the code and data 1587138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1588138287Smarks32-bit compiler. These values do not include any ACPI driver or 1589138287SmarksOSPM code. The debug version of the code includes the debug 1590138287Smarksoutput trace mechanism and has a much larger code and data size. 1591138287SmarksNote that these values will vary depending on the efficiency of 1592138287Smarksthe compiler and the compiler options used during generation. 1593138287Smarks 1594138287Smarks Previous Release: 1595138287Smarks Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 1596138287Smarks Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 1597138287Smarks Current Release: 1598138287Smarks Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 1599138287Smarks Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 1600138287Smarks 1601138287Smarks 1602138287Smarks2) iASL Compiler/Disassembler: 1603138287Smarks 1604138287SmarksRemoved the limit (200) on string objects as per the upcoming 1605138287SmarksACPI 3.0A specification. For the iASL compiler, this means that 1606138287Smarksstring literals within the source ASL can be of any length. 1607138287Smarks 1608138287SmarksEnhanced the listing output to dump the AML code for resource 1609138287Smarksdescriptors immediately after the ASL code for each descriptor, 1610138287Smarksinstead of in a block at the end of the entire resource template. 1611138287Smarks 1612138287SmarksEnhanced the compiler debug output to dump the entire original 1613138287Smarksparse tree constructed during the parse phase, before any 1614138287Smarkstransforms are applied to the tree. The transformed tree is 1615138287Smarksdumped also. 1616138287Smarks 1617138287Smarks---------------------------------------- 1618138287Smarks02 November 2005. Summary of changes for version 20051102: 1619138287Smarks 1620138287Smarks1) ACPI CA Core Subsystem: 1621138287Smarks 1622138287SmarksModified the subsystem initialization sequence to improve GPE 1623138287Smarkssupport. The GPE initialization has been split into two parts in 1624138287Smarksorder to defer execution of the _PRW methods (Power Resources for 1625138287SmarksWake) until after the hardware is fully initialized and the SCI 1626138287Smarkshandler is installed. This allows the _PRW methods to access 1627138287Smarksfields protected by the Global Lock. This will fix systems where 1628138287Smarksa NO_GLOBAL_LOCK exception has been seen during initialization. 1629138287Smarks 1630138287SmarksConverted the ACPI internal object disassemble and display code 1631138287Smarkswithin the AML debugger to fully table-driven operation, reducing 1632138287Smarkscode size and increasing maintainability. 1633138287Smarks 1634138287SmarksFixed a regression with the ConcatenateResTemplate() ASL operator 1635138287Smarksintroduced in the 20051021 release. 1636138287Smarks 1637138287SmarksImplemented support for "local" internal ACPI object types within 1638138287Smarksthe debugger "Object" command and the AcpiWalkNamespace external 1639138287Smarksinterfaces. These local types include RegionFields, BankFields, 1640138287SmarksIndexFields, Alias, and reference objects. 1641138287Smarks 1642138287SmarksMoved common AML resource handling code into a new file, 1643138287Smarks"utresrc.c". This code is shared by both the Resource Manager and 1644138287Smarksthe AML Debugger. 1645138287Smarks 1646138287SmarksCode and Data Size: The current and previous library sizes for 1647138287Smarksthe core subsystem are shown below. These are the code and data 1648138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1649138287Smarks32-bit compiler. These values do not include any ACPI driver or 1650138287SmarksOSPM code. The debug version of the code includes the debug 1651138287Smarksoutput trace mechanism and has a much larger code and data size. 1652138287SmarksNote that these values will vary depending on the efficiency of 1653138287Smarksthe compiler and the compiler options used during generation. 1654138287Smarks 1655138287Smarks Previous Release: 1656138287Smarks Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 1657138287Smarks Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 1658138287Smarks Current Release: 1659138287Smarks Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 1660138287Smarks Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 1661138287Smarks 1662138287Smarks 1663138287Smarks2) iASL Compiler/Disassembler: 1664138287Smarks 1665138287SmarksFixed a problem with very large initializer lists (more than 4000 1666138287Smarkselements) for both Buffer and Package objects where the parse 1667138287Smarksstack could overflow. 1668138287Smarks 1669138287SmarksEnhanced the pre-compile source code scan for non-ASCII 1670138287Smarkscharacters to ignore characters within comment fields. The scan 1671138287Smarksis now always performed and is no longer optional, detecting 1672138287Smarksinvalid characters within a source file immediately rather than 1673138287Smarksduring the parse phase or later. 1674138287Smarks 1675138287SmarksEnhanced the ASL grammar definition to force early reductions on 1676138287Smarksall list-style grammar elements so that the overall parse stack 1677138287Smarksusage is greatly reduced. This should improve performance and 1678138287Smarksreduce the possibility of parse stack overflow. 1679138287Smarks 1680138287SmarksEliminated all reduce/reduce conflicts in the iASL parser 1681138287Smarksgeneration. Also, with the addition of a %expected statement, the 1682138287Smarkscompiler generates from source with no warnings. 1683138287Smarks 1684138287SmarksFixed a possible segment fault in the disassembler if the input 1685138287Smarksfilename does not contain a "dot" extension (Thomas Renninger). 1686138287Smarks 1687138287Smarks---------------------------------------- 1688138287Smarks21 October 2005. Summary of changes for version 20051021: 1689138287Smarks 1690138287Smarks1) ACPI CA Core Subsystem: 1691138287Smarks 1692138287SmarksImplemented support for the EM64T and other x86-64 processors. 1693138287SmarksThis essentially entails recognizing that these processors 1694138287Smarkssupport non-aligned memory transfers. Previously, all 64-bit 1695138287Smarksprocessors were assumed to lack hardware support for non-aligned 1696138287Smarkstransfers. 1697138287Smarks 1698138287SmarksCompleted conversion of the Resource Manager to nearly full table- 1699138287Smarksdriven operation. Specifically, the resource conversion code 1700138287Smarks(convert AML to internal format and the reverse) and the debug 1701138287Smarkscode to dump internal resource descriptors are fully table- 1702138287Smarksdriven, reducing code and data size and improving 1703138287Smarksmaintainability. 1704138287Smarks 1705138287SmarksThe OSL interfaces for Acquire and Release Lock now use a 64-bit 1706138287Smarksflag word on 64-bit processors instead of a fixed 32-bit word. 1707138287Smarks(With assistance from Alexey Starikovskiy) 1708138287Smarks 1709138287SmarksImplemented support within the resource conversion code for the 1710138287SmarksType-Specific byte within the various ACPI 3.0 *WordSpace macros. 1711138287Smarks 1712138287SmarksFixed some issues within the resource conversion code for the 1713138287Smarkstype-specific flags for both Memory and I/O address resource 1714138287Smarksdescriptors. For Memory, implemented support for the MTP and TTP 1715138287Smarksflags. For I/O, split the TRS and TTP flags into two separate 1716138287Smarksfields. 1717138287Smarks 1718138287SmarksCode and Data Size: The current and previous library sizes for 1719138287Smarksthe core subsystem are shown below. These are the code and data 1720138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1721138287Smarks32-bit compiler. These values do not include any ACPI driver or 1722138287SmarksOSPM code. The debug version of the code includes the debug 1723138287Smarksoutput trace mechanism and has a much larger code and data size. 1724138287SmarksNote that these values will vary depending on the efficiency of 1725138287Smarksthe compiler and the compiler options used during generation. 1726138287Smarks 1727138287Smarks Previous Release: 1728138287Smarks Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 1729138287Smarks Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 1730138287Smarks Current Release: 1731138287Smarks Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 1732138287Smarks Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 1733138287Smarks 1734138287Smarks 1735138287Smarks 1736138287Smarks2) iASL Compiler/Disassembler: 1737138287Smarks 1738138287SmarksRelaxed a compiler restriction that disallowed a ResourceIndex 1739138287Smarksbyte if the corresponding ResourceSource string was not also 1740138287Smarkspresent in a resource descriptor declaration. This restriction 1741138287Smarkscaused problems with existing AML/ASL code that includes the 1742138287SmarksIndex byte without the string. When such AML was disassembled, it 1743138287Smarkscould not be compiled without modification. Further, the modified 1744138287Smarkscode created a resource template with a different size than the 1745138287Smarksoriginal, breaking code that used fixed offsets into the resource 1746138287Smarkstemplate buffer. 1747138287Smarks 1748138287SmarksRemoved a recent feature of the disassembler to ignore a lone 1749138287SmarksResourceIndex byte. This byte is now emitted if present so that 1750138287Smarksthe exact AML can be reproduced when the disassembled code is 1751138287Smarksrecompiled. 1752138287Smarks 1753138287SmarksImproved comments and text alignment for the resource descriptor 1754138287Smarkscode emitted by the disassembler. 1755138287Smarks 1756138287SmarksImplemented disassembler support for the ACPI 3.0 AccessSize 1757138287Smarksfield within a Register() resource descriptor. 1758138287Smarks 1759138287Smarks---------------------------------------- 1760138287Smarks30 September 2005. Summary of changes for version 20050930: 1761138287Smarks 1762138287Smarks1) ACPI CA Core Subsystem: 1763138287Smarks 1764138287SmarksCompleted a major overhaul of the Resource Manager code - 1765138287Smarksspecifically, optimizations in the area of the AML/internal 1766138287Smarksresource conversion code. The code has been optimized to simplify 1767138287Smarksand eliminate duplicated code, CPU stack use has been decreased 1768138287Smarksby optimizing function parameters and local variables, and naming 1769138287Smarksconventions across the manager have been standardized for clarity 1770138287Smarksand ease of maintenance (this includes function, parameter, 1771138287Smarksvariable, and struct/typedef names.) The update may force changes 1772138287Smarksin some driver code, depending on how resources are handled by 1773138287Smarksthe host OS. 1774138287Smarks 1775138287SmarksAll Resource Manager dispatch and information tables have been 1776138287Smarksmoved to a single location for clarity and ease of maintenance. 1777138287SmarksOne new file was created, named "rsinfo.c". 1778138287Smarks 1779138287SmarksThe ACPI return macros (return_ACPI_STATUS, etc.) have been 1780138287Smarksmodified to guarantee that the argument is not evaluated twice, 1781138287Smarksmaking them less prone to macro side-effects. However, since 1782138287Smarksthere exists the possibility of additional stack use if a 1783138287Smarksparticular compiler cannot optimize them (such as in the debug 1784138287Smarksgeneration case), the original macros are optionally available. 1785138287SmarksNote that some invocations of the return_VALUE macro may now 1786138287Smarkscause size mismatch warnings; the return_UINT8 and return_UINT32 1787138287Smarksmacros are provided to eliminate these. (From Randy Dunlap) 1788138287Smarks 1789138287SmarksImplemented a new mechanism to enable debug tracing for 1790138287Smarksindividual control methods. A new external interface, 1791138287SmarksAcpiDebugTrace, is provided to enable this mechanism. The intent 1792138287Smarksis to allow the host OS to easily enable and disable tracing for 1793138287Smarksproblematic control methods. This interface can be easily exposed 1794138287Smarksto a user or debugger interface if desired. See the file 1795138287Smarkspsxface.c for details. 1796138287Smarks 1797138287SmarksAcpiUtCallocate will now return a valid pointer if a length of 1798138287Smarkszero is specified - a length of one is used and a warning is 1799138287Smarksissued. This matches the behavior of AcpiUtAllocate. 1800138287Smarks 1801138287SmarksCode and Data Size: The current and previous library sizes for 1802138287Smarksthe core subsystem are shown below. These are the code and data 1803138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1804138287Smarks32-bit compiler. These values do not include any ACPI driver or 1805138287SmarksOSPM code. The debug version of the code includes the debug 1806138287Smarksoutput trace mechanism and has a much larger code and data size. 1807138287SmarksNote that these values will vary depending on the efficiency of 1808138287Smarksthe compiler and the compiler options used during generation. 1809138287Smarks 1810138287Smarks Previous Release: 1811138287Smarks Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 1812138287Smarks Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 1813138287Smarks Current Release: 1814138287Smarks Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 1815138287Smarks Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 1816138287Smarks 1817138287Smarks 1818138287Smarks2) iASL Compiler/Disassembler: 1819138287Smarks 1820138287SmarksA remark is issued if the effective compile-time length of a 1821138287Smarkspackage or buffer is zero. Previously, this was a warning. 1822138287Smarks 1823138287Smarks---------------------------------------- 1824138287Smarks16 September 2005. Summary of changes for version 20050916: 1825138287Smarks 1826138287Smarks1) ACPI CA Core Subsystem: 1827138287Smarks 1828138287SmarksFixed a problem within the Resource Manager where support for the 1829138287SmarksGeneric Register descriptor was not fully implemented. This 1830138287Smarksdescriptor is now fully recognized, parsed, disassembled, and 1831138287Smarksdisplayed. 1832138287Smarks 1833138287SmarksCompletely restructured the Resource Manager code to utilize 1834138287Smarkstable-driven dispatch and lookup, eliminating many of the large 1835138287Smarksswitch() statements. This reduces overall subsystem code size and 1836138287Smarkscode complexity. Affects the resource parsing and construction, 1837138287Smarksdisassembly, and debug dump output. 1838138287Smarks 1839138287SmarksCleaned up and restructured the debug dump output for all 1840138287Smarksresource descriptors. Improved readability of the output and 1841138287Smarksreduced code size. 1842138287Smarks 1843138287SmarksFixed a problem where changes to internal data structures caused 1844138287Smarksthe optional ACPI_MUTEX_DEBUG code to fail compilation if 1845138287Smarksspecified. 1846138287Smarks 1847138287SmarksCode and Data Size: The current and previous library sizes for 1848138287Smarksthe core subsystem are shown below. These are the code and data 1849138287Smarkssizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 1850138287Smarks32-bit compiler. These values do not include any ACPI driver or 1851138287SmarksOSPM code. The debug version of the code includes the debug 1852138287Smarksoutput trace mechanism and has a much larger code and data size. 1853138287SmarksNote that these values will vary depending on the efficiency of 1854138287Smarksthe compiler and the compiler options used during generation. 1855138287Smarks 1856138287Smarks Previous Release: 1857138287Smarks Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 1858138287Smarks Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 1859138287Smarks Current Release: 1860138287Smarks Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 1861138287Smarks Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 1862138287Smarks 1863138287Smarks 1864138287Smarks2) iASL Compiler/Disassembler: 1865138287Smarks 1866138287SmarksUpdated the disassembler to automatically insert an 1867138287SmarksEndDependentFn() macro into the ASL stream if this macro is 1868138287Smarksmissing in the original AML code, simplifying compilation of the 1869138287Smarksresulting ASL module. 1870138287Smarks 1871138287SmarksFixed a problem in the disassembler where a disassembled 1872138287SmarksResourceSource string (within a large resource descriptor) was 1873138287Smarksnot surrounded by quotes and not followed by a comma, causing 1874138287Smarkserrors when the resulting ASL module was compiled. Also, escape 1875138287Smarkssequences within a ResourceSource string are now handled 1876138287Smarkscorrectly (especially "\\") 1877138287Smarks 1878138287Smarks---------------------------------------- 1879138287Smarks02 September 2005. Summary of changes for version 20050902: 1880138287Smarks 1881138287Smarks1) ACPI CA Core Subsystem: 1882138287Smarks 1883138287SmarksFixed a problem with the internal Owner ID allocation and 1884138287Smarksdeallocation mechanisms for control method execution and 1885138287Smarksrecursive method invocation. This should eliminate the 1886138287SmarksOWNER_ID_LIMIT exceptions and "Invalid OwnerId" messages seen on 1887138287Smarkssome systems. Recursive method invocation depth is currently 1888138287Smarkslimited to 255. (Alexey Starikovskiy) 1889138287Smarks 1890138287SmarksCompletely eliminated all vestiges of support for the "module- 1891138287Smarkslevel executable code" until this support is fully implemented 1892138287Smarksand debugged. This should eliminate the NO_RETURN_VALUE 1893138287Smarksexceptions seen during table load on some systems that invoke 1894138287Smarksthis support. 1895138287Smarks 1896138287SmarksFixed a problem within the resource manager code where the 1897138287Smarkstransaction flags for a 64-bit address descriptor were handled 1898138287Smarksincorrectly in the type-specific flag byte. 1899138287Smarks 1900138287SmarksConsolidated duplicate code within the address descriptor 1901138287Smarksresource manager code, reducing overall subsystem code size. 1902138287Smarks 1903138287SmarksFixed a fault when using the AML debugger "disassemble" command 1904138287Smarksto disassemble individual control methods. 1905138287Smarks 1906138287SmarksRemoved references to the "release_current" directory within the 1907138287SmarksUnix release package. 1908138287Smarks 1909138287SmarksCode and Data Size: The current and previous core subsystem 1910138287Smarkslibrary sizes are shown below. These are the code and data sizes 1911138287Smarksfor the acpica.lib produced by the Microsoft Visual C++ 6.0 1912138287Smarkscompiler. These values do not include any ACPI driver or OSPM 1913131440Smarkscode. The debug version of the code includes the debug output 1914131440Smarkstrace mechanism and has a much larger code and data size. Note 1915131440Smarksthat these values will vary depending on the efficiency of the 1916131440Smarkscompiler and the compiler options used during generation. 1917131440Smarks 1918131440Smarks Previous Release: 1919131440Smarks Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 1920131440Smarks Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 1921131440Smarks Current Release: 1922131440Smarks Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 1923131440Smarks Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 1924131440Smarks 1925131440Smarks 1926131440Smarks2) iASL Compiler/Disassembler: 1927131440Smarks 1928131440SmarksImplemented an error check for illegal duplicate values in the 1929131440Smarksinterrupt and dma lists for the following ASL macros: Dma(), 1930131440SmarksIrq(), IrqNoFlags(), and Interrupt(). 1931131440Smarks 1932131440SmarksImplemented error checking for the Irq() and IrqNoFlags() macros 1933131440Smarksto detect too many values in the interrupt list (16 max) and 1934131440Smarksinvalid values in the list (range 0 - 15) 1935131440Smarks 1936131440SmarksThe maximum length string literal within an ASL file is now 1937131440Smarksrestricted to 200 characters as per the ACPI specification. 1938131440Smarks 1939131440SmarksFixed a fault when using the -ln option (generate namespace 1940131440Smarkslisting). 1941131440Smarks 1942131440SmarksImplemented an error check to determine if a DescriptorName 1943131440Smarkswithin a resource descriptor has already been used within the 1944131440Smarkscurrent scope. 1945131440Smarks 1946131440Smarks---------------------------------------- 1947131440Smarks15 August 2005. Summary of changes for version 20050815: 1948131440Smarks 1949131440Smarks1) ACPI CA Core Subsystem: 1950131440Smarks 1951131440SmarksImplemented a full bytewise compare to determine if a table load 1952131440Smarksrequest is attempting to load a duplicate table. The compare is 1953131440Smarksperformed if the table signatures and table lengths match. This 1954131440Smarkswill allow different tables with the same OEM Table ID and 1955131440Smarksrevision to be loaded - probably against the ACPI specification, 1956131440Smarksbut discovered in the field nonetheless. 1957131440Smarks 1958131440SmarksAdded the changes.txt logfile to each of the zipped release 1959131440Smarkspackages. 1960129684Snjl 1961129684SnjlCode and Data Size: Current and previous core subsystem library 1962129684Snjlsizes are shown below. These are the code and data sizes for the 1963129684Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1964129684Snjlthese values do not include any ACPI driver or OSPM code. The 1965129684Snjldebug version of the code includes the debug output trace 1966129684Snjlmechanism and has a much larger code and data size. Note that 1967129684Snjlthese values will vary depending on the efficiency of the 1968129684Snjlcompiler and the compiler options used during generation. 1969129684Snjl 1970129684Snjl Previous Release: 1971129684Snjl Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 1972129684Snjl Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 1973129684Snjl Current Release: 1974129684Snjl Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 1975129684Snjl Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 1976129684Snjl 1977129684Snjl 1978129684Snjl2) iASL Compiler/Disassembler: 1979129684Snjl 1980129684SnjlFixed a problem where incorrect AML code could be generated for 1981129684SnjlPackage objects if optimization is disabled (via the -oa switch). 1982129684Snjl 1983129684SnjlFixed a problem with where incorrect AML code is generated for 1984129684Snjlvariable-length packages when the package length is not specified 1985129684Snjland the number of initializer values is greater than 255. 1986129684Snjl 1987129684Snjl 1988129684Snjl---------------------------------------- 1989129684Snjl29 July 2005. Summary of changes for version 20050729: 1990129684Snjl 1991129684Snjl1) ACPI CA Core Subsystem: 1992129684Snjl 1993129684SnjlImplemented support to ignore an attempt to install/load a 1994129684Snjlparticular ACPI table more than once. Apparently there exists 1995129684SnjlBIOS code that repeatedly attempts to load the same SSDT upon 1996129684Snjlcertain events. With assistance from Venkatesh Pallipadi. 1997129684Snjl 1998129684SnjlRestructured the main interface to the AML parser in order to 1999129684Snjlcorrectly handle all exceptional conditions. This will prevent 2000129684Snjlleakage of the OwnerId resource and should eliminate the 2001129684SnjlAE_OWNER_ID_LIMIT exceptions seen on some machines. With 2002129684Snjlassistance from Alexey Starikovskiy. 2003129684Snjl 2004129684SnjlSupport for "module level code" has been disabled in this version 2005129684Snjldue to a number of issues that have appeared on various machines. 2006129684SnjlThe support can be enabled by defining 2007129684SnjlACPI_ENABLE_MODULE_LEVEL_CODE during subsystem compilation. When 2008129684Snjlthe issues are fully resolved, the code will be enabled by 2009129684Snjldefault again. 2010129684Snjl 2011129684SnjlModified the internal functions for debug print support to define 2012129684Snjlthe FunctionName parameter as a (const char *) for compatibility 2013129684Snjlwith compiler built-in macros such as __FUNCTION__, etc. 2014129684Snjl 2015129684SnjlLinted the entire ACPICA source tree for both 32-bit and 64-bit. 2016129684Snjl 2017129684SnjlImplemented support to display an object count summary for the 2018129684SnjlAML Debugger commands Object and Methods. 2019129684Snjl 2020129684SnjlCode and Data Size: Current and previous core subsystem library 2021129684Snjlsizes are shown below. These are the code and data sizes for the 2022129684Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2023129684Snjlthese values do not include any ACPI driver or OSPM code. The 2024129684Snjldebug version of the code includes the debug output trace 2025129684Snjlmechanism and has a much larger code and data size. Note that 2026129684Snjlthese values will vary depending on the efficiency of the 2027129684Snjlcompiler and the compiler options used during generation. 2028129684Snjl 2029129684Snjl Previous Release: 2030129684Snjl Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 2031129684Snjl Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 2032129684Snjl Current Release: 2033129684Snjl Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 2034129684Snjl Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 2035129684Snjl 2036129684Snjl 2037129684Snjl2) iASL Compiler/Disassembler: 2038129684Snjl 2039129684SnjlFixed a regression that appeared in the 20050708 version of the 2040129684Snjlcompiler where an error message was inadvertently emitted for 2041129684Snjlinvocations of the _OSI reserved control method. 2042129684Snjl 2043129684Snjl---------------------------------------- 2044129684Snjl08 July 2005. Summary of changes for version 20050708: 2045129684Snjl 2046129684Snjl1) ACPI CA Core Subsystem: 2047129684Snjl 2048129684SnjlThe use of the CPU stack in the debug version of the subsystem 2049129684Snjlhas been considerably reduced. Previously, a debug structure was 2050129684Snjldeclared in every function that used the debug macros. This 2051129684Snjlstructure has been removed in favor of declaring the individual 2052129684Snjlelements as parameters to the debug functions. This reduces the 2053129684Snjlcumulative stack use during nested execution of ACPI function 2054129684Snjlcalls at the cost of a small increase in the code size of the 2055129684Snjldebug version of the subsystem. With assistance from Alexey 2056129684SnjlStarikovskiy and Len Brown. 2057129684Snjl 2058129684SnjlAdded the ACPI_GET_FUNCTION_NAME macro to enable the compiler- 2059129684Snjldependent headers to define a macro that will return the current 2060129684Snjlfunction name at runtime (such as __FUNCTION__ or _func_, etc.) 2061129684SnjlThe function name is used by the debug trace output. If 2062129684SnjlACPI_GET_FUNCTION_NAME is not defined in the compiler-dependent 2063129684Snjlheader, the function name is saved on the CPU stack (one pointer 2064129684Snjlper function.) This mechanism is used because apparently there 2065129684Snjlexists no standard ANSI-C defined macro that that returns the 2066129684Snjlfunction name. 2067129684Snjl 2068129684SnjlRedesigned and reimplemented the "Owner ID" mechanism used to 2069129684Snjltrack namespace objects created/deleted by ACPI tables and 2070129684Snjlcontrol method execution. A bitmap is now used to allocate and 2071129684Snjlfree the IDs, thus solving the wraparound problem present in the 2072129684Snjlprevious implementation. The size of the namespace node 2073129684Snjldescriptor was reduced by 2 bytes as a result (Alexey 2074129684SnjlStarikovskiy). 2075129684Snjl 2076129684SnjlRemoved the UINT32_BIT and UINT16_BIT types that were used for 2077129684Snjlthe bitfield flag definitions within the headers for the 2078129684Snjlpredefined ACPI tables. These have been replaced by UINT8_BIT in 2079129684Snjlorder to increase the code portability of the subsystem. If the 2080129684Snjluse of UINT8 remains a problem, we may be forced to eliminate 2081129684Snjlbitfields entirely because of a lack of portability. 2082129684Snjl 2083129684SnjlEnhanced the performance of the AcpiUtUpdateObjectReference 2084129684Snjlprocedure. This is a frequently used function and this 2085129684Snjlimprovement increases the performance of the entire subsystem 2086129684Snjl(Alexey Starikovskiy). 2087129684Snjl 2088129684SnjlFixed several possible memory leaks and the inverse - premature 2089129684Snjlobject deletion (Alexey Starikovskiy). 2090129684Snjl 2091129684SnjlCode and Data Size: Current and previous core subsystem library 2092129684Snjlsizes are shown below. These are the code and data sizes for the 2093129684Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2094129684Snjlthese values do not include any ACPI driver or OSPM code. The 2095129684Snjldebug version of the code includes the debug output trace 2096129684Snjlmechanism and has a much larger code and data size. Note that 2097129684Snjlthese values will vary depending on the efficiency of the 2098129684Snjlcompiler and the compiler options used during generation. 2099129684Snjl 2100129684Snjl Previous Release: 2101129684Snjl Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 2102129684Snjl Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 2103129684Snjl Current Release: 2104129684Snjl Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 2105129684Snjl Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 2106129684Snjl 2107129684Snjl---------------------------------------- 2108129684Snjl24 June 2005. Summary of changes for version 20050624: 2109129684Snjl 2110129684Snjl1) ACPI CA Core Subsystem: 2111129684Snjl 2112129684SnjlModified the new OSL cache interfaces to use ACPI_CACHE_T as the 2113129684Snjltype for the host-defined cache object. This allows the OSL 2114129684Snjlimplementation to define and type this object in any manner 2115129684Snjldesired, simplifying the OSL implementation. For example, 2116129684SnjlACPI_CACHE_T is defined as kmem_cache_t for Linux, and should be 2117129684Snjldefined in the OS-specific header file for other operating 2118129684Snjlsystems as required. 2119129684Snjl 2120129684SnjlChanged the interface to AcpiOsAcquireObject to directly return 2121129684Snjlthe requested object as the function return (instead of 2122129684SnjlACPI_STATUS.) This change was made for performance reasons, since 2123129684Snjlthis is the purpose of the interface in the first place. 2124129684SnjlAcpiOsAcquireObject is now similar to the AcpiOsAllocate 2125129684Snjlinterface. 2126129684Snjl 2127129684SnjlImplemented a new AML debugger command named Businfo. This 2128129684Snjlcommand displays information about all devices that have an 2129129684Snjlassociate _PRT object. The _ADR, _HID, _UID, and _CID are 2130129684Snjldisplayed for these devices. 2131128212Snjl 2132128212SnjlModified the initialization sequence in AcpiInitializeSubsystem 2133128212Snjlto call the OSL interface AcpiOslInitialize first, before any 2134128212Snjllocal initialization. This change was required because the global 2135128212Snjlinitialization now calls OSL interfaces. 2136128212Snjl 2137128212SnjlEnhanced the Dump command to display the entire contents of 2138128212SnjlPackage objects (including all sub-objects and their values.) 2139128212Snjl 2140128212SnjlRestructured the code base to split some files because of size 2141128212Snjland/or because the code logically belonged in a separate file. 2142128212SnjlNew files are listed below. All makefiles and project files 2143128212Snjlincluded in the ACPI CA release have been updated. 2144128212Snjl utilities/utcache.c /* Local cache interfaces */ 2145128212Snjl utilities/utmutex.c /* Local mutex support */ 2146128212Snjl utilities/utstate.c /* State object support */ 2147128212Snjl interpreter/parser/psloop.c /* Main AML parse loop */ 2148128212Snjl 2149128212SnjlCode and Data Size: Current and previous core subsystem library 2150128212Snjlsizes are shown below. These are the code and data sizes for the 2151128212Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2152128212Snjlthese values do not include any ACPI driver or OSPM code. The 2153128212Snjldebug version of the code includes the debug output trace 2154128212Snjlmechanism and has a much larger code and data size. Note that 2155128212Snjlthese values will vary depending on the efficiency of the 2156128212Snjlcompiler and the compiler options used during generation. 2157128212Snjl 2158128212Snjl Previous Release: 2159128212Snjl Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 2160128212Snjl Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 2161128212Snjl Current Release: 2162128212Snjl Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 2163128212Snjl Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 2164128212Snjl 2165128212Snjl 2166128212Snjl2) iASL Compiler/Disassembler: 2167128212Snjl 2168128212SnjlFixed a regression introduced in version 20050513 where the use 2169128212Snjlof a Package object within a Case() statement caused a compile 2170128212Snjltime exception. The original behavior has been restored (a 2171128212SnjlMatch() operator is emitted.) 2172128212Snjl 2173128212Snjl---------------------------------------- 2174128212Snjl17 June 2005. Summary of changes for version 20050617: 2175128212Snjl 2176128212Snjl1) ACPI CA Core Subsystem: 2177128212Snjl 2178128212SnjlMoved the object cache operations into the OS interface layer 2179128212Snjl(OSL) to allow the host OS to handle these operations if desired 2180128212Snjl(for example, the Linux OSL will invoke the slab allocator). This 2181128212Snjlsupport is optional; the compile time define ACPI_USE_LOCAL_CACHE 2182128212Snjlmay be used to utilize the original cache code in the ACPI CA 2183128212Snjlcore. The new OSL interfaces are shown below. See utalloc.c for 2184128212Snjlan example implementation, and acpiosxf.h for the exact interface 2185128212Snjldefinitions. With assistance from Alexey Starikovskiy. 2186128212Snjl AcpiOsCreateCache 2187128212Snjl AcpiOsDeleteCache 2188128212Snjl AcpiOsPurgeCache 2189128212Snjl AcpiOsAcquireObject 2190128212Snjl AcpiOsReleaseObject 2191128212Snjl 2192128212SnjlModified the interfaces to AcpiOsAcquireLock and 2193128212SnjlAcpiOsReleaseLock to return and restore a flags parameter. This 2194128212Snjlfits better with many OS lock models. Note: the current execution 2195128212Snjlstate (interrupt handler or not) is no longer passed to these 2196128212Snjlinterfaces. If necessary, the OSL must determine this state by 2197128212Snjlitself, a simple and fast operation. With assistance from Alexey 2198128212SnjlStarikovskiy. 2199128212Snjl 2200128212SnjlFixed a problem in the ACPI table handling where a valid XSDT was 2201128212Snjlassumed present if the revision of the RSDP was 2 or greater. 2202128212SnjlAccording to the ACPI specification, the XSDT is optional in all 2203128212Snjlcases, and the table manager therefore now checks for both an 2204128212SnjlRSDP >=2 and a valid XSDT pointer. Otherwise, the RSDT pointer is 2205128212Snjlused. Some ACPI 2.0 compliant BIOSs contain only the RSDT. 2206128212Snjl 2207128212SnjlFixed an interpreter problem with the Mid() operator in the case 2208128212Snjlof an input string where the resulting output string is of zero 2209128212Snjllength. It now correctly returns a valid, null terminated string 2210128212Snjlobject instead of a string object with a null pointer. 2211128212Snjl 2212128212SnjlFixed a problem with the control method argument handling to 2213128212Snjlallow a store to an Arg object that already contains an object of 2214128212Snjltype Device. The Device object is now correctly overwritten. 2215128212SnjlPreviously, an error was returned. 2216128212Snjl 2217128212Snjl 2218128212SnjlEnhanced the debugger Find command to emit object values in 2219128212Snjladdition to the found object pathnames. The output format is the 2220128212Snjlsame as the dump namespace command. 2221128212Snjl 2222128212SnjlEnhanced the debugger Set command. It now has the ability to set 2223128212Snjlthe value of any Named integer object in the namespace 2224128212Snjl(Previously, only method locals and args could be set.) 2225128212Snjl 2226128212SnjlCode and Data Size: Current and previous core subsystem library 2227128212Snjlsizes are shown below. These are the code and data sizes for the 2228128212Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2229128212Snjlthese values do not include any ACPI driver or OSPM code. The 2230128212Snjldebug version of the code includes the debug output trace 2231128212Snjlmechanism and has a much larger code and data size. Note that 2232128212Snjlthese values will vary depending on the efficiency of the 2233128212Snjlcompiler and the compiler options used during generation. 2234128212Snjl 2235128212Snjl Previous Release: 2236128212Snjl Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 2237128212Snjl Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 2238127175Snjl Current Release: 2239127175Snjl Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 2240127175Snjl Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 2241127175Snjl 2242127175Snjl 2243127175Snjl2) iASL Compiler/Disassembler: 2244127175Snjl 2245127175SnjlFixed a regression in the disassembler where if/else/while 2246127175Snjlconstructs were output incorrectly. This problem was introduced 2247127175Snjlin the previous release (20050526). This problem also affected 2248127175Snjlthe single-step disassembly in the debugger. 2249127175Snjl 2250127175SnjlFixed a problem where compiling the reserved _OSI method would 2251127175Snjlrandomly (but rarely) produce compile errors. 2252127175Snjl 2253127175SnjlEnhanced the disassembler to emit compilable code in the face of 2254127175Snjlincorrect AML resource descriptors. If the optional 2255127175SnjlResourceSourceIndex is present, but the ResourceSource is not, do 2256127175Snjlnot emit the ResourceSourceIndex in the disassembly. Otherwise, 2257127175Snjlthe resulting code cannot be compiled without errors. 2258127175Snjl 2259127175Snjl---------------------------------------- 2260127175Snjl26 May 2005. Summary of changes for version 20050526: 2261127175Snjl 2262127175Snjl1) ACPI CA Core Subsystem: 2263127175Snjl 2264127175SnjlImplemented support to execute Type 1 and Type 2 AML opcodes 2265127175Snjlappearing at the module level (not within a control method.) 2266127175SnjlThese opcodes are executed exactly once at the time the table is 2267127175Snjlloaded. This type of code was legal up until the release of ACPI 2268127175Snjl2.0B (2002) and is now supported within ACPI CA in order to 2269127175Snjlprovide backwards compatibility with earlier BIOS 2270127175Snjlimplementations. This eliminates the "Encountered executable code 2271127175Snjlat module level" warning that was previously generated upon 2272127175Snjldetection of such code. 2273127175Snjl 2274127175SnjlFixed a problem in the interpreter where an AE_NOT_FOUND 2275127175Snjlexception could inadvertently be generated during the lookup of 2276127175Snjlnamespace objects in the second pass parse of ACPI tables and 2277127175Snjlcontrol methods. It appears that this problem could occur during 2278127175Snjlthe resolution of forward references to namespace objects. 2279127175Snjl 2280127175SnjlAdded the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex 2281127175Snjlfunction, corresponding to the same #ifdef in the 2282127175SnjlAcpiUtAcquireMutex function. This allows the deadlock detection 2283127175Snjldebug code to be compiled out in the normal case, improving mutex 2284127175Snjlperformance (and overall subsystem performance) considerably. 2285127175Snjl 2286127175SnjlImplemented a handful of miscellaneous fixes for possible memory 2287127175Snjlleaks on error conditions and error handling control paths. These 2288127175Snjlfixes were suggested by FreeBSD and the Coverity Prevent source 2289127175Snjlcode analysis tool. 2290127175Snjl 2291127175SnjlAdded a check for a null RSDT pointer in AcpiGetFirmwareTable 2292127175Snjl(tbxfroot.c) to prevent a fault in this error case. 2293127175Snjl 2294127175SnjlCode and Data Size: Current and previous core subsystem library 2295127175Snjlsizes are shown below. These are the code and data sizes for the 2296127175Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2297127175Snjlthese values do not include any ACPI driver or OSPM code. The 2298127175Snjldebug version of the code includes the debug output trace 2299127175Snjlmechanism and has a much larger code and data size. Note that 2300126372Snjlthese values will vary depending on the efficiency of the 2301126372Snjlcompiler and the compiler options used during generation. 2302126372Snjl 2303126372Snjl Previous Release: 2304126372Snjl Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 2305126372Snjl Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 2306126372Snjl Current Release: 2307126372Snjl Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 2308126372Snjl Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 2309126372Snjl 2310126372Snjl 2311126372Snjl2) iASL Compiler/Disassembler: 2312126372Snjl 2313126372SnjlImplemented support to allow Type 1 and Type 2 ASL operators to 2314126372Snjlappear at the module level (not within a control method.) These 2315126372Snjloperators will be executed once at the time the table is loaded. 2316126372SnjlThis type of code was legal up until the release of ACPI 2.0B 2317126372Snjl(2002) and is now supported by the iASL compiler in order to 2318126372Snjlprovide backwards compatibility with earlier BIOS ASL code. 2319126372Snjl 2320126372SnjlThe ACPI integer width (specified via the table revision ID or 2321126372Snjlthe -r override, 32 or 64 bits) is now used internally during 2322126372Snjlcompile-time constant folding to ensure that constants are 2323126372Snjltruncated to 32 bits if necessary. Previously, the revision ID 2324126372Snjlvalue was only emitted in the AML table header. 2325126372Snjl 2326126372SnjlAn error message is now generated for the Mutex and Method 2327126372Snjloperators if the SyncLevel parameter is outside the legal range 2328126372Snjlof 0 through 15. 2329126372Snjl 2330126372SnjlFixed a problem with the Method operator ParameterTypes list 2331126372Snjlhandling (ACPI 3.0). Previously, more than 2 types or 2 arguments 2332126372Snjlgenerated a syntax error. The actual underlying implementation 2333126372Snjlof method argument typechecking is still under development, 2334126372Snjlhowever. 2335126372Snjl 2336126372Snjl---------------------------------------- 2337126372Snjl13 May 2005. Summary of changes for version 20050513: 2338126372Snjl 2339126372Snjl1) ACPI CA Core Subsystem: 2340126372Snjl 2341126372SnjlImplemented support for PCI Express root bridges -- added support 2342126372Snjlfor device PNP0A08 in the root bridge search within 2343126372SnjlAcpiEvPciConfigRegionSetup. 2344126372Snjl 2345126372SnjlThe interpreter now automatically truncates incoming 64-bit 2346126372Snjlconstants to 32 bits if currently executing out of a 32-bit ACPI 2347126372Snjltable (Revision < 2). This also affects the iASL compiler 2348126372Snjlconstant folding. (Note: as per below, the iASL compiler no 2349126372Snjllonger allows 64-bit constants within 32-bit tables.) 2350126372Snjl 2351126372SnjlFixed a problem where string and buffer objects with "static" 2352126372Snjlpointers (pointers to initialization data within an ACPI table) 2353126372Snjlwere not handled consistently. The internal object copy operation 2354126372Snjlnow always copies the data to a newly allocated buffer, 2355126372Snjlregardless of whether the source object is static or not. 2356126372Snjl 2357126372SnjlFixed a problem with the FromBCD operator where an implicit 2358126372Snjlresult conversion was improperly performed while storing the 2359126372Snjlresult to the target operand. Since this is an "explicit 2360126372Snjlconversion" operator, the implicit conversion should never be 2361126372Snjlperformed on the output. 2362126372Snjl 2363126372SnjlFixed a problem with the CopyObject operator where a copy to an 2364126372Snjlexisting named object did not always completely overwrite the 2365126372Snjlexisting object stored at name. Specifically, a buffer-to-buffer 2366126372Snjlcopy did not delete the existing buffer. 2367126372Snjl 2368126372SnjlReplaced "InterruptLevel" with "InterruptNumber" in all GPE 2369126372Snjlinterfaces and structs for consistency. 2370126372Snjl 2371126372SnjlCode and Data Size: Current and previous core subsystem library 2372126372Snjlsizes are shown below. These are the code and data sizes for the 2373126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2374126372Snjlthese values do not include any ACPI driver or OSPM code. The 2375126372Snjldebug version of the code includes the debug output trace 2376126372Snjlmechanism and has a much larger code and data size. Note that 2377126372Snjlthese values will vary depending on the efficiency of the 2378126372Snjlcompiler and the compiler options used during generation. 2379126372Snjl 2380126372Snjl Previous Release: 2381126372Snjl Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 2382126372Snjl Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 2383126372Snjl Current Release: (Same sizes) 2384126372Snjl Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 2385126372Snjl Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 2386126372Snjl 2387126372Snjl 2388126372Snjl2) iASL Compiler/Disassembler: 2389126372Snjl 2390126372SnjlThe compiler now emits a warning if an attempt is made to 2391126372Snjlgenerate a 64-bit integer constant from within a 32-bit ACPI 2392126372Snjltable (Revision < 2). The integer is truncated to 32 bits. 2393126372Snjl 2394126372SnjlFixed a problem with large package objects: if the static length 2395126372Snjlof the package is greater than 255, the "variable length package" 2396126372Snjlopcode is emitted. Previously, this caused an error. This 2397126372Snjlrequires an update to the ACPI spec, since it currently 2398126372Snjl(incorrectly) states that packages larger than 255 elements are 2399126372Snjlnot allowed. 2400126372Snjl 2401126372SnjlThe disassembler now correctly handles variable length packages 2402126372Snjland packages larger than 255 elements. 2403126372Snjl 2404126372Snjl---------------------------------------- 2405126372Snjl08 April 2005. Summary of changes for version 20050408: 2406126372Snjl 2407126372Snjl1) ACPI CA Core Subsystem: 2408126372Snjl 2409126372SnjlFixed three cases in the interpreter where an "index" argument to 2410126372Snjlan ASL function was still (internally) 32 bits instead of the 2411126372Snjlrequired 64 bits. This was the Index argument to the Index, Mid, 2412126372Snjland Match operators. 2413126372Snjl 2414126372SnjlThe "strupr" function is now permanently local (AcpiUtStrupr), 2415126372Snjlsince this is not a POSIX-defined function and not present in 2416126372Snjlmost kernel-level C libraries. All references to the C library 2417126372Snjlstrupr function have been removed from the headers. 2418126372Snjl 2419126372SnjlCompleted the deployment of static functions/prototypes. All 2420126372Snjlprototypes with the static attribute have been moved from the 2421126372Snjlheaders to the owning C file. 2422126372Snjl 2423126372SnjlImplemented an extract option (-e) for the AcpiBin utility (AML 2424126372Snjlbinary utility). This option allows the utility to extract 2425126372Snjlindividual ACPI tables from the output of AcpiDmp. It provides 2426126372Snjlthe same functionality of the acpixtract.pl perl script without 2427126372Snjlthe worry of setting the correct perl options. AcpiBin runs on 2428126372SnjlWindows and has not yet been generated/validated in the 2429126372SnjlLinux/Unix environment (but should be soon). 2430126372Snjl 2431126372SnjlUpdated and fixed the table dump option for AcpiBin (-d). This 2432126372Snjloption converts a single ACPI table to a hex/ascii file, similar 2433126372Snjlto the output of AcpiDmp. 2434126372Snjl 2435126372SnjlCode and Data Size: Current and previous core subsystem library 2436126372Snjlsizes are shown below. These are the code and data sizes for the 2437126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2438126372Snjlthese values do not include any ACPI driver or OSPM code. The 2439126372Snjldebug version of the code includes the debug output trace 2440126372Snjlmechanism and has a much larger code and data size. Note that 2441126372Snjlthese values will vary depending on the efficiency of the 2442126372Snjlcompiler and the compiler options used during generation. 2443126372Snjl 2444126372Snjl Previous Release: 2445126372Snjl Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 2446126372Snjl Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 2447126372Snjl Current Release: 2448126372Snjl Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 2449126372Snjl Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 2450126372Snjl 2451126372Snjl 2452126372Snjl2) iASL Compiler/Disassembler: 2453126372Snjl 2454126372SnjlDisassembler fix: Added a check to ensure that the table length 2455126372Snjlfound in the ACPI table header within the input file is not 2456126372Snjllonger than the actual input file size. This indicates some kind 2457126372Snjlof file or table corruption. 2458126372Snjl 2459126372Snjl---------------------------------------- 2460126372Snjl29 March 2005. Summary of changes for version 20050329: 2461126372Snjl 2462126372Snjl1) ACPI CA Core Subsystem: 2463126372Snjl 2464126372SnjlAn error is now generated if an attempt is made to create a 2465126372SnjlBuffer Field of length zero (A CreateField with a length operand 2466126372Snjlof zero.) 2467126372Snjl 2468126372SnjlThe interpreter now issues a warning whenever executable code at 2469126372Snjlthe module level is detected during ACPI table load. This will 2470126372Snjlgive some idea of the prevalence of this type of code. 2471126372Snjl 2472126372SnjlImplemented support for references to named objects (other than 2473126372Snjlcontrol methods) within package objects. 2474126372Snjl 2475126372SnjlEnhanced package object output for the debug object. Package 2476126372Snjlobjects are now completely dumped, showing all elements. 2477126372Snjl 2478126372SnjlEnhanced miscellaneous object output for the debug object. Any 2479126372Snjlobject can now be written to the debug object (for example, a 2480126372Snjldevice object can be written, and the type of the object will be 2481126372Snjldisplayed.) 2482126372Snjl 2483126372SnjlThe "static" qualifier has been added to all local functions 2484126372Snjlacross both the core subsystem and the iASL compiler. 2485126372Snjl 2486126372SnjlThe number of "long" lines (> 80 chars) within the source has 2487126372Snjlbeen significantly reduced, by about 1/3. 2488126372Snjl 2489126372SnjlCleaned up all header files to ensure that all CA/iASL functions 2490126372Snjlare prototyped (even static functions) and the formatting is 2491126372Snjlconsistent. 2492126372Snjl 2493126372SnjlTwo new header files have been added, acopcode.h and acnames.h. 2494126372Snjl 2495126372SnjlRemoved several obsolete functions that were no longer used. 2496126372Snjl 2497126372SnjlCode and Data Size: Current and previous core subsystem library 2498126372Snjlsizes are shown below. These are the code and data sizes for the 2499126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2500126372Snjlthese values do not include any ACPI driver or OSPM code. The 2501126372Snjldebug version of the code includes the debug output trace 2502126372Snjlmechanism and has a much larger code and data size. Note that 2503126372Snjlthese values will vary depending on the efficiency of the 2504126372Snjlcompiler and the compiler options used during generation. 2505126372Snjl 2506126372Snjl Previous Release: 2507126372Snjl Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 2508126372Snjl Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 2509126372Snjl Current Release: 2510126372Snjl Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 2511126372Snjl Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 2512126372Snjl 2513126372Snjl 2514126372Snjl 2515126372Snjl2) iASL Compiler/Disassembler: 2516126372Snjl 2517126372SnjlFixed a problem with the resource descriptor generation/support. 2518126372SnjlFor the ResourceSourceIndex and the ResourceSource fields, both 2519126372Snjlmust be present, or both must be not present - can't have one 2520126372Snjlwithout the other. 2521126372Snjl 2522126372SnjlThe compiler now returns non-zero from the main procedure if any 2523126372Snjlerrors have occurred during the compilation. 2524126372Snjl 2525126372Snjl 2526126372Snjl---------------------------------------- 2527126372Snjl09 March 2005. Summary of changes for version 20050309: 2528126372Snjl 2529126372Snjl1) ACPI CA Core Subsystem: 2530126372Snjl 2531126372SnjlThe string-to-buffer implicit conversion code has been modified 2532126372Snjlagain after a change to the ACPI specification. In order to 2533126372Snjlmatch the behavior of the other major ACPI implementation, the 2534126372Snjltarget buffer is no longer truncated if the source string is 2535126372Snjlsmaller than an existing target buffer. This change requires an 2536126372Snjlupdate to the ACPI spec, and should eliminate the recent 2537126372SnjlAE_AML_BUFFER_LIMIT issues. 2538126372Snjl 2539126372SnjlThe "implicit return" support was rewritten to a new algorithm 2540126372Snjlthat solves the general case. Rather than attempt to determine 2541126372Snjlwhen a method is about to exit, the result of every ASL operator 2542126372Snjlis saved momentarily until the very next ASL operator is 2543126372Snjlexecuted. Therefore, no matter how the method exits, there will 2544126372Snjlalways be a saved implicit return value. This feature is only 2545126372Snjlenabled with the AcpiGbl_EnableInterpreterSlack flag, and should 2546126372Snjleliminate AE_AML_NO_RETURN_VALUE errors when enabled. 2547126372Snjl 2548126372SnjlImplemented implicit conversion support for the predicate 2549126372Snjl(operand) of the If, Else, and While operators. String and Buffer 2550126372Snjlarguments are automatically converted to Integers. 2551126372Snjl 2552126372SnjlChanged the string-to-integer conversion behavior to match the 2553126372Snjlnew ACPI errata: "If no integer object exists, a new integer is 2554126372Snjlcreated. The ASCII string is interpreted as a hexadecimal 2555126372Snjlconstant. Each string character is interpreted as a hexadecimal 2556126372Snjlvalue (`0'-`9', `A'-`F', `a', `f'), starting with the first 2557126372Snjlcharacter as the most significant digit, and ending with the 2558126372Snjlfirst non-hexadecimal character or end-of-string." This means 2559126372Snjlthat the first non-hex character terminates the conversion and 2560126372Snjlthis is the code that was changed. 2561126372Snjl 2562126372SnjlFixed a problem where the ObjectType operator would fail (fault) 2563126372Snjlwhen used on an Index of a Package which pointed to a null 2564126372Snjlpackage element. The operator now properly returns zero 2565126372Snjl(Uninitialized) in this case. 2566126372Snjl 2567126372SnjlFixed a problem where the While operator used excessive memory by 2568126372Snjlnot properly popping the result stack during execution. There was 2569126372Snjlno memory leak after execution, however. (Code provided by Valery 2570126372SnjlPodrezov.) 2571126372Snjl 2572126372SnjlFixed a problem where references to control methods within 2573126372SnjlPackage objects caused the method to be invoked, instead of 2574126372Snjlproducing a reference object pointing to the method. 2575126372Snjl 2576126372SnjlRestructured and simplified the pswalk.c module 2577126372Snjl(AcpiPsDeleteParseTree) to improve performance and reduce code 2578126372Snjlsize. (Code provided by Alexey Starikovskiy.) 2579126372Snjl 2580126372SnjlCode and Data Size: Current and previous core subsystem library 2581126372Snjlsizes are shown below. These are the code and data sizes for the 2582126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2583126372Snjlthese values do not include any ACPI driver or OSPM code. The 2584126372Snjldebug version of the code includes the debug output trace 2585126372Snjlmechanism and has a much larger code and data size. Note that 2586126372Snjlthese values will vary depending on the efficiency of the 2587126372Snjlcompiler and the compiler options used during generation. 2588126372Snjl 2589126372Snjl Previous Release: 2590126372Snjl Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 2591126372Snjl Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 2592126372Snjl Current Release: 2593126372Snjl Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 2594126372Snjl Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 2595126372Snjl 2596126372Snjl 2597126372Snjl2) iASL Compiler/Disassembler: 2598126372Snjl 2599126372SnjlFixed a problem with the Return operator with no arguments. Since 2600126372Snjlthe AML grammar for the byte encoding requires an operand for the 2601126372SnjlReturn opcode, the compiler now emits a Return(Zero) for this 2602126372Snjlcase. An ACPI specification update has been written for this 2603126372Snjlcase. 2604126372Snjl 2605126372SnjlFor tables other than the DSDT, namepath optimization is 2606126372Snjlautomatically disabled. This is because SSDTs can be loaded 2607126372Snjlanywhere in the namespace, the compiler has no knowledge of 2608126372Snjlwhere, and thus cannot optimize namepaths. 2609126372Snjl 2610126372SnjlAdded "ProcessorObj" to the ObjectTypeKeyword list. This object 2611126372Snjltype was inadvertently omitted from the ACPI specification, and 2612126372Snjlwill require an update to the spec. 2613126372Snjl 2614126372SnjlThe source file scan for ASCII characters is now optional (-a). 2615126372SnjlThis change was made because some vendors place non-ascii 2616126372Snjlcharacters within comments. However, the scan is simply a brute- 2617126372Snjlforce byte compare to ensure all characters in the file are in 2618126372Snjlthe range 0x00 to 0x7F. 2619126372Snjl 2620126372SnjlFixed a problem with the CondRefOf operator where the compiler 2621126372Snjlwas inappropriately checking for the existence of the target. 2622126372SnjlSince the point of the operator is to check for the existence of 2623126372Snjlthe target at run-time, the compiler no longer checks for the 2624126372Snjltarget existence. 2625126372Snjl 2626126372SnjlFixed a problem where errors generated from the internal AML 2627126372Snjlinterpreter during constant folding were not handled properly, 2628126372Snjlcausing a fault. 2629126372Snjl 2630126372SnjlFixed a problem with overly aggressive range checking for the 2631126372SnjlStall operator. The valid range (max 255) is now only checked if 2632126372Snjlthe operand is of type Integer. All other operand types cannot be 2633126372Snjlstatically checked. 2634126372Snjl 2635126372SnjlFixed a problem where control method references within the RefOf, 2636126372SnjlDeRefOf, and ObjectType operators were not treated properly. They 2637126372Snjlare now treated as actual references, not method invocations. 2638126372Snjl 2639126372SnjlFixed and enhanced the "list namespace" option (-ln). This option 2640126372Snjlwas broken a number of releases ago. 2641126372Snjl 2642126372SnjlImproved error handling for the Field, IndexField, and BankField 2643126372Snjloperators. The compiler now cleanly reports and recovers from 2644126372Snjlerrors in the field component (FieldUnit) list. 2645126372Snjl 2646126372SnjlFixed a disassembler problem where the optional 2647126372SnjlResourceDescriptor fields TRS and TTP were not always handled 2648126372Snjlcorrectly. 2649126372Snjl 2650126372SnjlDisassembler - Comments in output now use "//" instead of "/*" 2651126372Snjl 2652126372Snjl---------------------------------------- 2653126372Snjl28 February 2005. Summary of changes for version 20050228: 2654126372Snjl 2655126372Snjl1) ACPI CA Core Subsystem: 2656126372Snjl 2657126372SnjlFixed a problem where the result of an Index() operator (an 2658126372Snjlobject reference) must increment the reference count on the 2659126372Snjltarget object for the life of the object reference. 2660126372Snjl 2661126372SnjlImplemented AML Interpreter and Debugger support for the new ACPI 2662126372Snjl3.0 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, 2663126372Snjland WordSpace resource descriptors. 2664126372Snjl 2665117521SnjlImplemented support in the _OSI method for the ACPI 3.0 "Extended 2666117521SnjlAddress Space Descriptor" string, indicating interpreter support 2667117521Snjlfor the descriptors above. 2668117521Snjl 2669117521SnjlImplemented header support for the new ACPI 3.0 FADT flag bits. 2670117521Snjl 2671117521SnjlImplemented header support for the new ACPI 3.0 PCI Express bits 2672117521Snjlfor the PM1 status/enable registers. 2673117521Snjl 2674117521SnjlUpdated header support for the MADT processor local Apic struct 2675117521Snjland MADT platform interrupt source struct for new ACPI 3.0 2676117521Snjlfields. 2677117521Snjl 2678117521SnjlImplemented header support for the SRAT and SLIT ACPI tables. 2679117521Snjl 2680117521SnjlImplemented the -s switch in AcpiExec to enable the 2681117521Snjl"InterpreterSlack" flag at runtime. 2682117521Snjl 2683117521SnjlCode and Data Size: Current and previous core subsystem library 2684117521Snjlsizes are shown below. These are the code and data sizes for the 2685117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2686117521Snjlthese values do not include any ACPI driver or OSPM code. The 2687117521Snjldebug version of the code includes the debug output trace 2688117521Snjlmechanism and has a much larger code and data size. Note that 2689117521Snjlthese values will vary depending on the efficiency of the 2690117521Snjlcompiler and the compiler options used during generation. 2691117521Snjl 2692117521Snjl Previous Release: 2693117521Snjl Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 2694117521Snjl Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 2695117521Snjl Current Release: 2696117521Snjl Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 2697117521Snjl Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 2698117521Snjl 2699117521Snjl 2700117521Snjl2) iASL Compiler/Disassembler: 2701117521Snjl 2702117521SnjlFixed a problem with the internal 64-bit String-to-integer 2703117521Snjlconversion with strings less than two characters long. 2704126372Snjl 2705126372SnjlFixed a problem with constant folding where the result of the 2706126372SnjlIndex() operator can not be considered a constant. This means 2707126372Snjlthat Index() cannot be a type3 opcode and this will require an 2708117521Snjlupdate to the ACPI specification. 2709117521Snjl 2710117521SnjlDisassembler: Implemented support for the TTP, MTP, and TRS 2711117521Snjlresource descriptor fields. These fields were inadvertently 2712117521Snjlignored and not output in the disassembly of the resource 2713126372Snjldescriptor. 2714126372Snjl 2715126372Snjl 2716117521Snjl ---------------------------------------- 2717117521Snjl11 February 2005. Summary of changes for version 20050211: 2718117521Snjl 2719117521Snjl1) ACPI CA Core Subsystem: 2720117521Snjl 2721126372SnjlImplemented ACPI 3.0 support for implicit conversion within the 2722126372SnjlMatch() operator. MatchObjects can now be of type integer, 2723126372Snjlbuffer, or string instead of just type integer. Package elements 2724117521Snjlare implicitly converted to the type of the MatchObject. This 2725117521Snjlchange aligns the behavior of Match() with the behavior of the 2726117521Snjlother logical operators (LLess(), etc.) It also requires an 2727117521Snjlerrata change to the ACPI specification as this support was 2728117521Snjlintended for ACPI 3.0, but was inadvertently omitted. 2729117521Snjl 2730117521SnjlFixed a problem with the internal implicit "to buffer" 2731117521Snjlconversion. Strings that are converted to buffers will cause 2732126372Snjlbuffer truncation if the string is smaller than the target 2733126372Snjlbuffer. Integers that are converted to buffers will not cause 2734126372Snjlbuffer truncation, only zero extension (both as per the ACPI 2735126372Snjlspec.) The problem was introduced when code was added to truncate 2736126372Snjlthe buffer, but this should not be performed in all cases, only 2737126372Snjlthe string case. 2738117521Snjl 2739117521SnjlFixed a problem with the Buffer and Package operators where the 2740117521Snjlinterpreter would get confused if two such operators were used as 2741117521Snjloperands to an ASL operator (such as 2742117521SnjlLLess(Buffer(1){0},Buffer(1){1}). The internal result stack was 2743117521Snjlnot being popped after the execution of these operators, 2744117521Snjlresulting in an AE_NO_RETURN_VALUE exception. 2745117521Snjl 2746117521SnjlFixed a problem with constructs of the form 2747117521SnjlStore(Index(...),...). The reference object returned from Index 2748117521Snjlwas inadvertently resolved to an actual value. This problem was 2749117521Snjlintroduced in version 20050114 when the behavior of Store() was 2750126372Snjlmodified to restrict the object types that can be used as the 2751126372Snjlsource operand (to match the ACPI specification.) 2752117521Snjl 2753117521SnjlReduced excessive stack use within the AcpiGetObjectInfo 2754117521Snjlprocedure. 2755117521Snjl 2756117521SnjlAdded a fix to aclinux.h to allow generation of AcpiExec on 2757117521SnjlLinux. 2758117521Snjl 2759117521SnjlUpdated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS 2760117521Snjlstruct. 2761117521Snjl 2762117521SnjlCode and Data Size: Current and previous core subsystem library 2763117521Snjlsizes are shown below. These are the code and data sizes for the 2764117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2765126372Snjlthese values do not include any ACPI driver or OSPM code. The 2766126372Snjldebug version of the code includes the debug output trace 2767117521Snjlmechanism and has a much larger code and data size. Note that 2768117521Snjlthese values will vary depending on the efficiency of the 2769117521Snjlcompiler and the compiler options used during generation. 2770117521Snjl 2771117521Snjl Previous Release: 2772117521Snjl Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 2773117521Snjl Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 2774117521Snjl Current Release: 2775117521Snjl Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 2776117521Snjl Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 2777117521Snjl 2778117521Snjl 2779117521Snjl2) iASL Compiler/Disassembler: 2780117521Snjl 2781117521SnjlFixed a code generation problem in the constant folding 2782117521Snjloptimization code where incorrect code was generated if a 2783117521Snjlconstant was reduced to a buffer object (i.e., a reduced type 5 2784117521Snjlopcode.) 2785117521Snjl 2786126372SnjlFixed a typechecking problem for the ToBuffer operator. Caused by 2787126372Snjlan incorrect return type in the internal opcode information 2788126372Snjltable. 2789117521Snjl 2790117521Snjl---------------------------------------- 2791117521Snjl25 January 2005. Summary of changes for version 20050125: 2792117521Snjl 2793117521Snjl1) ACPI CA Core Subsystem: 2794117521Snjl 2795117521SnjlFixed a recently introduced problem with the Global Lock where 2796117521Snjlthe underlying semaphore was not created. This problem was 2797117521Snjlintroduced in version 20050114, and caused an AE_AML_NO_OPERAND 2798126372Snjlexception during an Acquire() operation on _GL. 2799126372Snjl 2800126372SnjlThe local object cache is now optional, and is disabled by 2801126372Snjldefault. Both AcpiExec and the iASL compiler enable the cache 2802126372Snjlbecause they run in user mode and this enhances their 2803126372Snjlperformance. #define ACPI_ENABLE_OBJECT_CACHE to enable the local 2804126372Snjlcache. 2805117521Snjl 2806117521SnjlFixed an issue in the internal function AcpiUtEvaluateObject 2807126372Snjlconcerning the optional "implicit return" support where an error 2808126372Snjlwas returned if no return object was expected, but one was 2809126372Snjlimplicitly returned. AE_OK is now returned in this case and the 2810117521Snjlimplicitly returned object is deleted. AcpiUtEvaluateObject is 2811117521Snjlonly occasionally used, and only to execute reserved methods such 2812117521Snjlas _STA and _INI where the return type is known up front. 2813117521Snjl 2814117521SnjlFixed a few issues with the internal convert-to-integer code. It 2815117521Snjlnow returns an error if an attempt is made to convert a null 2816117521Snjlstring, a string of only blanks/tabs, or a zero-length buffer. 2817117521SnjlThis affects both implicit conversion and explicit conversion via 2818117521Snjlthe ToInteger() operator. 2819117521Snjl 2820117521SnjlThe internal debug code in AcpiUtAcquireMutex has been commented 2821117521Snjlout. It is not needed for normal operation and should increase 2822126372Snjlthe performance of the entire subsystem. The code remains in case 2823126372Snjlit is needed for debug purposes again. 2824126372Snjl 2825117521SnjlThe AcpiExec source and makefile are included in the Unix/Linux 2826117521Snjlpackage for the first time. 2827117521Snjl 2828117521SnjlCode and Data Size: Current and previous core subsystem library 2829117521Snjlsizes are shown below. These are the code and data sizes for the 2830117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2831117521Snjlthese values do not include any ACPI driver or OSPM code. The 2832117521Snjldebug version of the code includes the debug output trace 2833117521Snjlmechanism and has a much larger code and data size. Note that 2834117521Snjlthese values will vary depending on the efficiency of the 2835117521Snjlcompiler and the compiler options used during generation. 2836117521Snjl 2837117521Snjl Previous Release: 2838117521Snjl Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 2839117521Snjl Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 2840117521Snjl Current Release: 2841126372Snjl Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 2842126372Snjl Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 2843126372Snjl 2844126372Snjl2) iASL Compiler/Disassembler: 2845126372Snjl 2846126372SnjlSwitch/Case support: A warning is now issued if the type of the 2847126372SnjlSwitch value cannot be determined at compile time. For example, 2848126372SnjlSwitch(Arg0) will generate the warning, and the type is assumed 2849126372Snjlto be an integer. As per the ACPI spec, use a construct such as 2850117521SnjlSwitch(ToInteger(Arg0)) to eliminate the warning. 2851117521Snjl 2852117521SnjlSwitch/Case support: Implemented support for buffer and string 2853117521Snjlobjects as the switch value. This is an ACPI 3.0 feature, now 2854117521Snjlthat LEqual supports buffers and strings. 2855117521Snjl 2856117521SnjlSwitch/Case support: The emitted code for the LEqual() 2857117521Snjlcomparisons now uses the switch value as the first operand, not 2858117521Snjlthe second. The case value is now the second operand, and this 2859117521Snjlallows the case value to be implicitly converted to the type of 2860117521Snjlthe switch value, not the other way around. 2861117521Snjl 2862117521SnjlSwitch/Case support: Temporary variables are now emitted 2863117521Snjlimmediately within the control method, not at the global level. 2864117521SnjlThis means that there are now 36 temps available per-method, not 2865117521Snjl36 temps per-module as was the case with the earlier 2866117521Snjlimplementation (_T_0 through _T_9 and _T_A through _T_Z.) 2867117521Snjl 2868117521Snjl---------------------------------------- 2869117521Snjl14 January 2005. Summary of changes for version 20050114: 2870117521Snjl 2871126372SnjlAdded 2005 copyright to all module headers. This affects every 2872126372Snjlmodule in the core subsystem, iASL compiler, and the utilities. 2873126372Snjl 2874117521Snjl1) ACPI CA Core Subsystem: 2875117521Snjl 2876117521SnjlFixed an issue with the String-to-Buffer conversion code where 2877117521Snjlthe string null terminator was not included in the buffer after 2878117521Snjlconversion, but there is existing ASL that assumes the string 2879117521Snjlnull terminator is included. This is the root of the 2880117521SnjlACPI_AML_BUFFER_LIMIT regression. This problem was introduced in 2881117521Snjlthe previous version when the code was updated to correctly set 2882117521Snjlthe converted buffer size as per the ACPI specification. The ACPI 2883117521Snjlspec is ambiguous and will be updated to specify that the null 2884126372Snjlterminator must be included in the converted buffer. This also 2885126372Snjlaffects the ToBuffer() ASL operator. 2886117521Snjl 2887117521SnjlFixed a problem with the Mid() ASL/AML operator where it did not 2888117521Snjlwork correctly on Buffer objects. Newly created sub-buffers were 2889117521Snjlnot being marked as initialized. 2890117521Snjl 2891126372Snjl 2892126372SnjlFixed a problem in AcpiTbFindTable where incorrect string 2893117521Snjlcompares were performed on the OemId and OemTableId table header 2894117521Snjlfields. These fields are not null terminated, so strncmp is now 2895117521Snjlused instead of strcmp. 2896117521Snjl 2897117521SnjlImplemented a restriction on the Store() ASL/AML operator to 2898117521Snjlalign the behavior with the ACPI specification. Previously, any 2899117521Snjlobject could be used as the source operand. Now, the only 2900117521Snjlobjects that may be used are Integers, Buffers, Strings, 2901117521SnjlPackages, Object References, and DDB Handles. If necessary, the 2902117521Snjloriginal behavior can be restored by enabling the 2903117521SnjlEnableInterpreterSlack flag. 2904117521Snjl 2905126372SnjlEnhanced the optional "implicit return" support to allow an 2906126372Snjlimplicit return value from methods that are invoked externally 2907117521Snjlvia the AcpiEvaluateObject interface. This enables implicit 2908117521Snjlreturns from the _STA and _INI methods, for example. 2909117521Snjl 2910117521SnjlChanged the Revision() ASL/AML operator to return the current 2911117521Snjlversion of the AML interpreter, in the YYYYMMDD format. 2912117521SnjlPreviously, it incorrectly returned the supported ACPI version 2913117521Snjl(This is the function of the _REV method). 2914117521Snjl 2915117521SnjlUpdated the _REV predefined method to return the currently 2916117521Snjlsupported version of ACPI, now 3. 2917117521Snjl 2918117521SnjlImplemented batch mode option for the AcpiExec utility (-b). 2919117521Snjl 2920117521SnjlCode and Data Size: Current and previous core subsystem library 2921117521Snjlsizes are shown below. These are the code and data sizes for the 2922117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2923117521Snjlthese values do not include any ACPI driver or OSPM code. The 2924117521Snjldebug version of the code includes the debug output trace 2925117521Snjlmechanism and has a much larger code and data size. Note that 2926117521Snjlthese values will vary depending on the efficiency of the 2927117521Snjlcompiler and the compiler options used during generation. 2928117521Snjl 2929117521Snjl Previous Release: 2930126372Snjl Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 2931126372Snjl Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 2932126372Snjl Current Release: 2933126372Snjl Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 2934126372Snjl Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 2935126372Snjl 2936126372Snjl---------------------------------------- 2937126372Snjl10 December 2004. Summary of changes for version 20041210: 2938126372Snjl 2939117521SnjlACPI 3.0 support is nearing completion in both the iASL compiler 2940117521Snjland the ACPI CA core subsystem. 2941117521Snjl 2942117521Snjl1) ACPI CA Core Subsystem: 2943117521Snjl 2944117521SnjlFixed a problem in the ToDecimalString operator where the 2945117521Snjlresulting string length was incorrectly calculated. The length is 2946117521Snjlnow calculated exactly, eliminating incorrect AE_STRING_LIMIT 2947117521Snjlexceptions. 2948117521Snjl 2949114237SnjlFixed a problem in the ToHexString operator to allow a maximum 2950114237Snjl200 character string to be produced. 2951114237Snjl 2952114237SnjlFixed a problem in the internal string-to-buffer and buffer-to- 2953114237Snjlbuffer copy routine where the length of the resulting buffer was 2954114237Snjlnot truncated to the new size (if the target buffer already 2955114237Snjlexisted). 2956114237Snjl 2957114237SnjlCode and Data Size: Current and previous core subsystem library 2958114237Snjlsizes are shown below. These are the code and data sizes for the 2959114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2960114237Snjlthese values do not include any ACPI driver or OSPM code. The 2961114237Snjldebug version of the code includes the debug output trace 2962114237Snjlmechanism and has a much larger code and data size. Note that 2963114237Snjlthese values will vary depending on the efficiency of the 2964126372Snjlcompiler and the compiler options used during generation. 2965126372Snjl 2966126372Snjl Previous Release: 2967126372Snjl Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 2968114237Snjl Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 2969114237Snjl Current Release: 2970114237Snjl Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 2971114237Snjl Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 2972114237Snjl 2973114237Snjl 2974114237Snjl2) iASL Compiler/Disassembler: 2975114237Snjl 2976126372SnjlImplemented the new ACPI 3.0 resource template macros - 2977126372SnjlDWordSpace, ExtendedIO, ExtendedMemory, ExtendedSpace, 2978126372SnjlQWordSpace, and WordSpace. Includes support in the disassembler. 2979126372Snjl 2980114237SnjlImplemented support for the new (ACPI 3.0) parameter to the 2981114237SnjlRegister macro, AccessSize. 2982114237Snjl 2983114237SnjlFixed a problem where the _HE resource name for the Interrupt 2984114237Snjlmacro was referencing bit 0 instead of bit 1. 2985126372Snjl 2986126372SnjlImplemented check for maximum 255 interrupts in the Interrupt 2987126372Snjlmacro. 2988126372Snjl 2989126372SnjlFixed a problem with the predefined resource descriptor names 2990126372Snjlwhere incorrect AML code was generated if the offset within the 2991126372Snjlresource buffer was 0 or 1. The optimizer shortened the AML code 2992126372Snjlto a single byte opcode but did not update the surrounding 2993126372Snjlpackage lengths. 2994114237Snjl 2995114237SnjlChanges to the Dma macro: All channels within the channel list 2996114237Snjlmust be in the range 0-7. Maximum 8 channels can be specified. 2997114237SnjlBusMaster operand is optional (default is BusMaster). 2998114237Snjl 2999114237SnjlImplemented check for maximum 7 data bytes for the VendorShort 3000114237Snjlmacro. 3001114237Snjl 3002114237SnjlThe ReadWrite parameter is now optional for the Memory32 and 3003114237Snjlsimilar macros. 3004114237Snjl 3005114237Snjl---------------------------------------- 3006114237Snjl03 December 2004. Summary of changes for version 20041203: 3007114237Snjl 3008114237Snjl1) ACPI CA Core Subsystem: 3009114237Snjl 3010114237SnjlThe low-level field insertion/extraction code (exfldio) has been 3011114237Snjlcompletely rewritten to eliminate unnecessary complexity, bugs, 3012114237Snjland boundary conditions. 3013114237Snjl 3014114237SnjlFixed a problem in the ToInteger, ToBuffer, ToHexString, and 3015126372SnjlToDecimalString operators where the input operand could be 3016126372Snjlinadvertently deleted if no conversion was necessary (e.g., if 3017114237Snjlthe input to ToInteger was an Integer object.) 3018114237Snjl 3019114237SnjlFixed a problem with the ToDecimalString and ToHexString where an 3020114237Snjlincorrect exception code was returned if the resulting string 3021114237Snjlwould be > 200 chars. AE_STRING_LIMIT is now returned. 3022114237Snjl 3023114237SnjlFixed a problem with the Concatenate operator where AE_OK was 3024114237Snjlalways returned, even if the operation failed. 3025114237Snjl 3026114237SnjlFixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 3027114237Snjl128 semaphores to be allocated. 3028114237Snjl 3029114237SnjlCode and Data Size: Current and previous core subsystem library 3030114237Snjlsizes are shown below. These are the code and data sizes for the 3031114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3032114237Snjlthese values do not include any ACPI driver or OSPM code. The 3033114237Snjldebug version of the code includes the debug output trace 3034114237Snjlmechanism and has a much larger code and data size. Note that 3035114237Snjlthese values will vary depending on the efficiency of the 3036114237Snjlcompiler and the compiler options used during generation. 3037114237Snjl 3038117521Snjl Previous Release: 3039114237Snjl Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 3040114237Snjl Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 3041114237Snjl Current Release: 3042114237Snjl Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 3043114237Snjl Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 3044114237Snjl 3045114237Snjl 3046114237Snjl2) iASL Compiler/Disassembler: 3047126372Snjl 3048126372SnjlFixed typechecking for the ObjectType and SizeOf operators. 3049126372SnjlProblem was recently introduced in 20041119. 3050126372Snjl 3051114237SnjlFixed a problem with the ToUUID macro where the upper nybble of 3052114237Snjleach buffer byte was inadvertently set to zero. 3053114237Snjl 3054114237Snjl---------------------------------------- 3055114237Snjl19 November 2004. Summary of changes for version 20041119: 3056114237Snjl 3057114237Snjl1) ACPI CA Core Subsystem: 3058114237Snjl 3059114237SnjlFixed a problem in the internal ConvertToInteger routine where 3060114237Snjlnew integers were not truncated to 32 bits for 32-bit ACPI 3061114237Snjltables. This routine converts buffers and strings to integers. 3062114237Snjl 3063114237SnjlImplemented support to store a value to an Index() on a String 3064114237Snjlobject. This is an ACPI 2.0 feature that had not yet been 3065114237Snjlimplemented. 3066114237Snjl 3067114237SnjlImplemented new behavior for storing objects to individual 3068114237Snjlpackage elements (via the Index() operator). The previous 3069114237Snjlbehavior was to invoke the implicit conversion rules if an object 3070114237Snjlwas already present at the index. The new behavior is to simply 3071114237Snjldelete any existing object and directly store the new object. 3072114237SnjlAlthough the ACPI specification seems unclear on this subject, 3073114237Snjlother ACPI implementations behave in this manner. (This is the 3074126372Snjlroot of the AE_BAD_HEX_CONSTANT issue.) 3075126372Snjl 3076114237SnjlModified the RSDP memory scan mechanism to support the extended 3077114237Snjlchecksum for ACPI 2.0 (and above) RSDPs. Note that the search 3078114237Snjlcontinues until a valid RSDP signature is found with a valid 3079114237Snjlchecksum. 3080114237Snjl 3081114237SnjlCode and Data Size: Current and previous core subsystem library 3082114237Snjlsizes are shown below. These are the code and data sizes for the 3083114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3084114237Snjlthese values do not include any ACPI driver or OSPM code. The 3085114237Snjldebug version of the code includes the debug output trace 3086114237Snjlmechanism and has a much larger code and data size. Note that 3087114237Snjlthese values will vary depending on the efficiency of the 3088114237Snjlcompiler and the compiler options used during generation. 3089114237Snjl 3090114237Snjl Previous Release: 3091114237Snjl Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 3092114237Snjl Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 3093114237Snjl Current Release: 3094114237Snjl Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 3095114237Snjl Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 3096114237Snjl 3097114237Snjl 3098114237Snjl2) iASL Compiler/Disassembler: 3099114237Snjl 3100114237SnjlFixed a missing semicolon in the aslcompiler.y file. 3101114237Snjl 3102102550Siwasaki---------------------------------------- 3103114237Snjl05 November 2004. Summary of changes for version 20041105: 3104114237Snjl 3105114237Snjl1) ACPI CA Core Subsystem: 3106114237Snjl 3107114237SnjlImplemented support for FADT revision 2. This was an interim 3108114237Snjltable (between ACPI 1.0 and ACPI 2.0) that adds support for the 3109126372SnjlFADT reset register. 3110126372Snjl 3111126372SnjlImplemented optional support to allow uninitialized LocalX and 3112126372SnjlArgX variables in a control method. The variables are 3113126372Snjlinitialized to an Integer object with a value of zero. This 3114126372Snjlsupport is enabled by setting the AcpiGbl_EnableInterpreterSlack 3115126372Snjlflag to TRUE. 3116126372Snjl 3117126372SnjlImplemented support for Integer objects for the SizeOf operator. 3118126372SnjlEither 4 or 8 is returned, depending on the current integer size 3119126372Snjl(32-bit or 64-bit, depending on the parent table revision). 3120126372Snjl 3121126372SnjlFixed a problem in the implementation of the SizeOf and 3122126372SnjlObjectType operators where the operand was resolved to a value 3123126372Snjltoo early, causing incorrect return values for some objects. 3124114237Snjl 3125114237SnjlFixed some possible memory leaks during exceptional conditions. 3126114237Snjl 3127114237SnjlCode and Data Size: Current and previous core subsystem library 3128114237Snjlsizes are shown below. These are the code and data sizes for the 3129114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3130114237Snjlthese values do not include any ACPI driver or OSPM code. The 3131114237Snjldebug version of the code includes the debug output trace 3132126372Snjlmechanism and has a much larger code and data size. Note that 3133126372Snjlthese values will vary depending on the efficiency of the 3134126372Snjlcompiler and the compiler options used during generation. 3135126372Snjl 3136126372Snjl Previous Release: 3137126372Snjl Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 3138126372Snjl Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 3139126372Snjl Current Release: 3140126372Snjl Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 3141114237Snjl Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 3142114237Snjl 3143114237Snjl 3144114237Snjl2) iASL Compiler/Disassembler: 3145114237Snjl 3146114237SnjlImplemented support for all ACPI 3.0 reserved names and methods. 3147114237Snjl 3148114237SnjlImplemented all ACPI 3.0 grammar elements in the front-end, 3149114237Snjlincluding support for semicolons. 3150114237Snjl 3151114237SnjlImplemented the ACPI 3.0 Function() and ToUUID() macros 3152114237Snjl 3153114237SnjlFixed a problem in the disassembler where a Scope() operator 3154114237Snjlwould not be emitted properly if the target of the scope was in 3155114237Snjlanother table. 3156114237Snjl 3157114237Snjl---------------------------------------- 3158114237Snjl15 October 2004. Summary of changes for version 20041015: 3159114237Snjl 3160114237SnjlNote: ACPI CA is currently undergoing an in-depth and complete 3161114237Snjlformal evaluation to test/verify the following areas. Other 3162114237Snjlsuggestions are welcome. This will result in an increase in the 3163114237Snjlfrequency of releases and the number of bug fixes in the next few 3164114237Snjlmonths. 3165114237Snjl - Functional tests for all ASL/AML operators 3166114237Snjl - All implicit/explicit type conversions 3167114237Snjl - Bit fields and operation regions 3168114237Snjl - 64-bit math support and 32-bit-only "truncated" math support 3169114237Snjl - Exceptional conditions, both compiler and interpreter 3170114237Snjl - Dynamic object deletion and memory leaks 3171114237Snjl - ACPI 3.0 support when implemented 3172114237Snjl - External interfaces to the ACPI subsystem 3173114237Snjl 3174114237Snjl 3175114237Snjl1) ACPI CA Core Subsystem: 3176114237Snjl 3177114237SnjlFixed two alignment issues on 64-bit platforms - within debug 3178114237Snjlstatements in AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed 3179114237Snjlreferences to the Address field within the non-aligned ACPI 3180114237Snjlgeneric address structure. 3181114237Snjl 3182114237SnjlFixed a problem in the Increment and Decrement operators where 3183114237Snjlincorrect operand resolution could result in the inadvertent 3184114237Snjlmodification of the original integer when the integer is passed 3185114237Snjlinto another method as an argument and the arg is then 3186114237Snjlincremented/decremented. 3187114237Snjl 3188114237SnjlFixed a problem in the FromBCD operator where the upper 32-bits 3189114237Snjlof a 64-bit BCD number were truncated during conversion. 3190114237Snjl 3191114237SnjlFixed a problem in the ToDecimal operator where the length of the 3192114237Snjlresulting string could be set incorrectly too long if the input 3193114237Snjloperand was a Buffer object. 3194114237Snjl 3195114237SnjlFixed a problem in the Logical operators (LLess, etc.) where a 3196114237SnjlNULL byte (0) within a buffer would prematurely terminate a 3197114237Snjlcompare between buffer objects. 3198114237Snjl 3199114237SnjlAdded a check for string overflow (>200 characters as per the 3200114237SnjlACPI specification) during the Concatenate operator with two 3201126372Snjlstring operands. 3202126372Snjl 3203126372SnjlCode and Data Size: Current and previous core subsystem library 3204114237Snjlsizes are shown below. These are the code and data sizes for the 3205114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3206114237Snjlthese values do not include any ACPI driver or OSPM code. The 3207114237Snjldebug version of the code includes the debug output trace 3208114237Snjlmechanism and has a much larger code and data size. Note that 3209114237Snjlthese values will vary depending on the efficiency of the 3210114237Snjlcompiler and the compiler options used during generation. 3211114237Snjl 3212114237Snjl Previous Release: 3213114237Snjl Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 3214114237Snjl Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 3215114237Snjl Current Release: 3216114237Snjl Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 3217126372Snjl Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 3218126372Snjl 3219126372Snjl 3220126372Snjl 3221126372Snjl2) iASL Compiler/Disassembler: 3222126372Snjl 3223126372SnjlAllow the use of the ObjectType operator on uninitialized Locals 3224126372Snjland Args (returns 0 as per the ACPI specification). 3225126372Snjl 3226114237SnjlFixed a problem where the compiler would fault if there was a 3227114237Snjlsyntax error in the FieldName of all of the various 3228114237SnjlCreateXXXField operators. 3229114237Snjl 3230114237SnjlDisallow the use of lower case letters within the EISAID macro, 3231114237Snjlas per the ACPI specification. All EISAID strings must be of the 3232114237Snjlform "UUUNNNN" Where U is an uppercase letter and N is a hex 3233114237Snjldigit. 3234114237Snjl 3235114237Snjl 3236114237Snjl---------------------------------------- 3237114237Snjl06 October 2004. Summary of changes for version 20041006: 3238114237Snjl 3239114237Snjl1) ACPI CA Core Subsystem: 3240114237Snjl 3241114237SnjlImplemented support for the ACPI 3.0 Timer operator. This ASL 3242114237Snjlfunction implements a 64-bit timer with 100 nanosecond 3243114237Snjlgranularity. 3244114237Snjl 3245114237SnjlDefined a new OSL interface, AcpiOsGetTimer. This interface is 3246114237Snjlused to implement the ACPI 3.0 Timer operator. This allows the 3247114237Snjlhost OS to implement the timer with the best clock available. 3248126372SnjlAlso, it keeps the core subsystem out of the clock handling 3249126372Snjlbusiness, since the host OS (usually) performs this function. 3250126372Snjl 3251126372SnjlFixed an alignment issue on 64-bit platforms. The 3252126372SnjlHwLowLevelRead(Write) functions use a 64-bit address which is 3253126372Snjlpart of the packed ACPI Generic Address Structure. Since the 3254126372Snjlstructure is non-aligned, the alignment macros are now used to 3255126372Snjlextract the address to a local variable before use. 3256126372Snjl 3257126372SnjlFixed a problem where the ToInteger operator assumed all input 3258114237Snjlstrings were hexadecimal. The operator now handles both decimal 3259114237Snjlstrings and hex strings (prefixed with "0x"). 3260114237Snjl 3261126372SnjlFixed a problem where the string length in the string object 3262126372Snjlcreated as a result of the internal ConvertToString procedure 3263126372Snjlcould be incorrect. This potentially affected all implicit 3264126372Snjlconversions and also the ToDecimalString and ToHexString 3265114237Snjloperators. 3266114237Snjl 3267126372SnjlFixed two problems in the ToString operator. If the length 3268126372Snjlparameter was zero, an incorrect string object was created and 3269126372Snjlthe value of the input length parameter was inadvertently changed 3270126372Snjlfrom zero to Ones. 3271114237Snjl 3272114237SnjlFixed a problem where the optional ResourceSource string in the 3273114237SnjlExtendedIRQ resource macro was ignored. 3274114237Snjl 3275114237SnjlSimplified the interfaces to the internal division functions, 3276114237Snjlreducing code size and complexity. 3277114237Snjl 3278114237SnjlCode and Data Size: Current and previous core subsystem library 3279114237Snjlsizes are shown below. These are the code and data sizes for the 3280114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3281114237Snjlthese values do not include any ACPI driver or OSPM code. The 3282114237Snjldebug version of the code includes the debug output trace 3283126372Snjlmechanism and has a much larger code and data size. Note that 3284126372Snjlthese values will vary depending on the efficiency of the 3285126372Snjlcompiler and the compiler options used during generation. 3286114237Snjl 3287114237Snjl Previous Release: 3288126372Snjl Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 3289126372Snjl Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 3290126372Snjl Current Release: 3291126372Snjl Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 3292126372Snjl Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 3293126372Snjl 3294126372Snjl 3295126372Snjl2) iASL Compiler/Disassembler: 3296126372Snjl 3297114237SnjlImplemented support for the ACPI 3.0 Timer operator. 3298114237Snjl 3299114237SnjlFixed a problem where the Default() operator was inadvertently 3300114237Snjlignored in a Switch/Case block. This was a problem in the 3301114237Snjltranslation of the Switch statement to If...Else pairs. 3302114237Snjl 3303114237SnjlAdded support to allow a standalone Return operator, with no 3304114237Snjlparentheses (or operands). 3305114237Snjl 3306114237SnjlFixed a problem with code generation for the ElseIf operator 3307114237Snjlwhere the translated Else...If parse tree was improperly 3308114237Snjlconstructed leading to the loss of some code. 3309114237Snjl 3310114237Snjl---------------------------------------- 3311114237Snjl22 September 2004. Summary of changes for version 20040922: 3312114237Snjl 3313114237Snjl1) ACPI CA Core Subsystem: 3314114237Snjl 3315126372SnjlFixed a problem with the implementation of the LNot() operator 3316126372Snjlwhere "Ones" was not returned for the TRUE case. Changed the code 3317126372Snjlto return Ones instead of (!Arg) which was usually 1. This change 3318114237Snjlaffects iASL constant folding for this operator also. 3319114237Snjl 3320114237SnjlFixed a problem in AcpiUtInitializeBuffer where an existing 3321114237Snjlbuffer was not initialized properly -- Now zero the entire buffer 3322114237Snjlin this case where the buffer already exists. 3323114237Snjl 3324114237SnjlChanged the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 3325114237SnjlMilliseconds) to simply (ACPI_INTEGER Milliseconds). This 3326114237Snjlsimplifies all related code considerably. This will require 3327114237Snjlchanges/updates to all OS interface layers (OSLs.) 3328114237Snjl 3329114237SnjlImplemented a new external interface, 3330114237SnjlAcpiInstallExceptionHandler, to allow a system exception handler 3331114237Snjlto be installed. This handler is invoked upon any run-time 3332114237Snjlexception that occurs during control method execution. 3333114237Snjl 3334114237SnjlAdded support for the DSDT in AcpiTbFindTable. This allows the 3335114237SnjlDataTableRegion() operator to access the local copy of the DSDT. 3336114237Snjl 3337114237SnjlCode and Data Size: Current and previous core subsystem library 3338114237Snjlsizes are shown below. These are the code and data sizes for the 3339126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3340126372Snjlthese values do not include any ACPI driver or OSPM code. The 3341126372Snjldebug version of the code includes the debug output trace 3342114237Snjlmechanism and has a much larger code and data size. Note that 3343114237Snjlthese values will vary depending on the efficiency of the 3344114237Snjlcompiler and the compiler options used during generation. 3345114237Snjl 3346114237Snjl Previous Release: 3347114237Snjl Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 3348126372Snjl Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 3349126372Snjl Current Release: 3350126372Snjl Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 3351126372Snjl Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 3352126372Snjl 3353126372Snjl 3354126372Snjl2) iASL Compiler/Disassembler: 3355114237Snjl 3356114237SnjlFixed a problem with constant folding and the LNot operator. LNot 3357126372Snjlwas returning 1 in the TRUE case, not Ones as per the ACPI 3358126372Snjlspecification. This could result in the generation of an 3359126372Snjlincorrect folded/reduced constant. 3360126372Snjl 3361126372SnjlEnd-Of-File is now allowed within a "//"-style comment. A parse 3362126372Snjlerror no longer occurs if such a comment is at the very end of 3363126372Snjlthe input ASL source file. 3364126372Snjl 3365126372SnjlImplemented the "-r" option to override the Revision in the table 3366114237Snjlheader. The initial use of this option will be to simplify the 3367114237Snjlevaluation of the AML interpreter by allowing a single ASL source 3368114237Snjlmodule to be compiled for either 32-bit or 64-bit integers. 3369114237Snjl 3370114237Snjl 3371114237Snjl---------------------------------------- 3372114237Snjl27 August 2004. Summary of changes for version 20040827: 3373114237Snjl 3374114237Snjl1) ACPI CA Core Subsystem: 3375114237Snjl 3376114237Snjl- Implemented support for implicit object conversion in the non- 3377114237Snjlnumeric logical operators (LEqual, LGreater, LGreaterEqual, 3378114237SnjlLLess, LLessEqual, and LNotEqual.) Any combination of 3379114237SnjlIntegers/Strings/Buffers may now be used; the second operand is 3380114237Snjlimplicitly converted on the fly to match the type of the first 3381114237Snjloperand. For example: 3382114237Snjl 3383114237Snjl LEqual (Source1, Source2) 3384114237Snjl 3385114237SnjlSource1 and Source2 must each evaluate to an integer, a string, 3386114237Snjlor a buffer. The data type of Source1 dictates the required type 3387114237Snjlof Source2. Source2 is implicitly converted if necessary to match 3388114237Snjlthe type of Source1. 3389114237Snjl 3390114237Snjl- Updated and corrected the behavior of the string conversion 3391114237Snjlsupport. The rules concerning conversion of buffers to strings 3392107325Siwasaki(according to the ACPI specification) are as follows: 3393104470Siwasaki 3394107325SiwasakiToDecimalString - explicit byte-wise conversion of buffer to 3395107325Siwasakistring of decimal values (0-255) separated by commas. ToHexString 3396114237Snjl- explicit byte-wise conversion of buffer to string of hex values 3397114237Snjl(0-FF) separated by commas. ToString - explicit byte-wise 3398114237Snjlconversion of buffer to string. Byte-by-byte copy with no 3399114237Snjltransform except NULL terminated. Any other implicit buffer-to- 3400107325Siwasakistring conversion - byte-wise conversion of buffer to string of 3401114237Snjlhex values (0-FF) separated by spaces. 3402114237Snjl 3403114237Snjl- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 3404114237Snjl 3405107325Siwasaki- Fixed a problem in AcpiNsGetPathnameLength where the returned 3406107325Siwasakilength was one byte too short in the case of a node in the root 3407107325Siwasakiscope. This could cause a fault during debug output. 3408107325Siwasaki 3409107325Siwasaki- Code and Data Size: Current and previous core subsystem library 3410114237Snjlsizes are shown below. These are the code and data sizes for the 3411114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3412107325Siwasakithese values do not include any ACPI driver or OSPM code. The 3413114237Snjldebug version of the code includes the debug output trace 3414114237Snjlmechanism and has a much larger code and data size. Note that 3415126372Snjlthese values will vary depending on the efficiency of the 3416126372Snjlcompiler and the compiler options used during generation. 3417126372Snjl 3418107325Siwasaki Previous Release: 3419114237Snjl Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 3420114237Snjl Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 3421114237Snjl Current Release: 3422126372Snjl Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 3423126372Snjl Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 3424107325Siwasaki 3425107325Siwasaki 3426114237Snjl2) iASL Compiler/Disassembler: 3427114237Snjl 3428114237Snjl- Fixed a Linux generation error. 3429126372Snjl 3430126372Snjl 3431114237Snjl---------------------------------------- 3432107325Siwasaki16 August 2004. Summary of changes for version 20040816: 3433107325Siwasaki 3434126372Snjl1) ACPI CA Core Subsystem: 3435126372Snjl 3436126372SnjlDesigned and implemented support within the AML interpreter for 3437126372Snjlthe so-called "implicit return". This support returns the result 3438126372Snjlof the last ASL operation within a control method, in the absence 3439126372Snjlof an explicit Return() operator. A few machines depend on this 3440126372Snjlbehavior, even though it is not explicitly supported by the ASL 3441126372Snjllanguage. It is optional support that can be enabled at runtime 3442126372Snjlvia the AcpiGbl_EnableInterpreterSlack flag. 3443107325Siwasaki 3444107325SiwasakiRemoved support for the PCI_Config address space from the 3445107325Siwasakiinternal low level hardware interfaces (AcpiHwLowLevelRead and 3446107325SiwasakiAcpiHwLowLevelWrite). This support was not used internally, and 3447107325Siwasakiwould not work correctly anyway because the PCI bus number and 3448107325Siwasakisegment number were not supported. There are separate interfaces 3449107325Siwasakifor PCI configuration space access because of the unique 3450107325Siwasakiinterface. 3451107325Siwasaki 3452107325SiwasakiCode and Data Size: Current and previous core subsystem library 3453107325Siwasakisizes are shown below. These are the code and data sizes for the 3454114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3455114237Snjlthese values do not include any ACPI driver or OSPM code. The 3456114237Snjldebug version of the code includes the debug output trace 3457114237Snjlmechanism and has a much larger code and data size. Note that 3458114237Snjlthese values will vary depending on the efficiency of the 3459107325Siwasakicompiler and the compiler options used during generation. 3460107325Siwasaki 3461126372Snjl Previous Release: 3462126372Snjl Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 3463107325Siwasaki Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 3464107325Siwasaki Current Release: 3465107325Siwasaki Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 3466107325Siwasaki Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 3467107325Siwasaki 3468114237Snjl 3469114237Snjl2) iASL Compiler/Disassembler: 3470114237Snjl 3471114237SnjlFixed a problem where constants in ASL expressions at the root 3472114237Snjllevel (not within a control method) could be inadvertently 3473114237Snjltruncated during code generation. This problem was introduced in 3474107325Siwasakithe 20040715 release. 3475114237Snjl 3476107325Siwasaki 3477107325Siwasaki---------------------------------------- 3478107325Siwasaki15 July 2004. Summary of changes for version 20040715: 3479107325Siwasaki 3480114237Snjl1) ACPI CA Core Subsystem: 3481114237Snjl 3482107325SiwasakiRestructured the internal HW GPE interfaces to pass/track the 3483107325Siwasakicurrent state of interrupts (enabled/disabled) in order to avoid 3484107325Siwasakipossible deadlock and increase flexibility of the interfaces. 3485107325Siwasaki 3486107325SiwasakiImplemented a "lexicographical compare" for String and Buffer 3487114237Snjlobjects within the logical operators -- LGreater, LLess, 3488114237SnjlLGreaterEqual, and LLessEqual -- as per further clarification to 3489107325Siwasakithe ACPI specification. Behavior is similar to C library 3490107325Siwasaki"strcmp". 3491107325Siwasaki 3492107325SiwasakiCompleted a major reduction in CPU stack use for the 3493107325SiwasakiAcpiGetFirmwareTable external function. In the 32-bit non-debug 3494107325Siwasakicase, the stack use has been reduced from 168 bytes to 32 bytes. 3495107325Siwasaki 3496107325SiwasakiDeployed a new run-time configuration flag, 3497107325SiwasakiAcpiGbl_EnableInterpreterSlack, whose purpose is to allow the AML 3498107325Siwasakiinterpreter to forgive certain bad AML constructs. Default 3499126372Snjlsetting is FALSE. 3500126372Snjl 3501107325SiwasakiImplemented the first use of AcpiGbl_EnableInterpreterSlack in 3502107325Siwasakithe Field IO support code. If enabled, it allows field access to 3503126372Snjlgo beyond the end of a region definition if the field is within 3504126372Snjlthe region length rounded up to the next access width boundary (a 3505126372Snjlcommon coding error.) 3506126372Snjl 3507126372SnjlRenamed OSD_HANDLER to ACPI_OSD_HANDLER, and 3508126372SnjlOSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency 3509126372Snjlwith other ACPI symbols. Also, these symbols are lowercased by 3510126372Snjlthe latest version of the AcpiSrc tool. 3511126372Snjl 3512107325SiwasakiThe prototypes for the PCI interfaces in acpiosxf.h have been 3513107325Siwasakiupdated to rename "Register" to simply "Reg" to prevent certain 3514107325Siwasakicompilers from complaining. 3515107325Siwasaki 3516107325SiwasakiCode and Data Size: Current and previous core subsystem library 3517107325Siwasakisizes are shown below. These are the code and data sizes for the 3518107325Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3519107325Siwasakithese values do not include any ACPI driver or OSPM code. The 3520107325Siwasakidebug version of the code includes the debug output trace 3521107325Siwasakimechanism and has a much larger code and data size. Note that 3522107325Siwasakithese values will vary depending on the efficiency of the 3523107325Siwasakicompiler and the compiler options used during generation. 3524107325Siwasaki 3525107325Siwasaki Previous Release: 3526107325Siwasaki Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 3527107325Siwasaki Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 3528107325Siwasaki Current Release: 3529107325Siwasaki Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 3530107325Siwasaki Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 3531107325Siwasaki 3532107325Siwasaki 3533107325Siwasaki2) iASL Compiler/Disassembler: 3534107325Siwasaki 3535107325SiwasakiImplemented full support for Package objects within the Case() 3536107325Siwasakioperator. Note: The Break() operator is currently not supported 3537107325Siwasakiwithin Case blocks (TermLists) as there is some question about 3538107325Siwasakibackward compatibility with ACPI 1.0 interpreters. 3539107325Siwasaki 3540126372Snjl 3541126372SnjlFixed a problem where complex terms were not supported properly 3542114237Snjlwithin the Switch() operator. 3543107325Siwasaki 3544107325SiwasakiEliminated extraneous warning for compiler-emitted reserved names 3545114237Snjlof the form "_T_x". (Used in Switch/Case operators.) 3546114237Snjl 3547114237SnjlEliminated optimization messages for "_T_x" objects and small 3548114237Snjlconstants within the DefinitionBlock operator. 3549107325Siwasaki 3550107325Siwasaki 3551114237Snjl---------------------------------------- 3552114237Snjl15 June 2004. Summary of changes for version 20040615: 3553114237Snjl 3554114237Snjl1) ACPI CA Core Subsystem: 3555107325Siwasaki 3556114237SnjlImplemented support for Buffer and String objects (as per ACPI 3557126372Snjl2.0) for the following ASL operators: LEqual, LGreater, LLess, 3558126372SnjlLGreaterEqual, and LLessEqual. 3559114237Snjl 3560114237SnjlAll directory names in the entire source package are lower case, 3561114237Snjlas they were in earlier releases. 3562114237Snjl 3563114237SnjlImplemented "Disassemble" command in the AML debugger that will 3564107325Siwasakidisassemble a single control method. 3565126372Snjl 3566126372SnjlCode and Data Size: Current and previous core subsystem library 3567126372Snjlsizes are shown below. These are the code and data sizes for the 3568126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3569126372Snjlthese values do not include any ACPI driver or OSPM code. The 3570126372Snjldebug version of the code includes the debug output trace 3571126372Snjlmechanism and has a much larger code and data size. Note that 3572126372Snjlthese values will vary depending on the efficiency of the 3573126372Snjlcompiler and the compiler options used during generation. 3574107325Siwasaki 3575107325Siwasaki Previous Release: 3576107325Siwasaki Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 3577107325Siwasaki Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 3578107325Siwasaki 3579107325Siwasaki Current Release: 3580107325Siwasaki Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 3581107325Siwasaki Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 3582107325Siwasaki 3583107325Siwasaki 3584107325Siwasaki2) iASL Compiler/Disassembler: 3585107325Siwasaki 3586114237SnjlImplemented support for Buffer and String objects (as per ACPI 3587126372Snjl2.0) for the following ASL operators: LEqual, LGreater, LLess, 3588126372SnjlLGreaterEqual, and LLessEqual. 3589114237Snjl 3590107325SiwasakiAll directory names in the entire source package are lower case, 3591107325Siwasakias they were in earlier releases. 3592107325Siwasaki 3593107325SiwasakiFixed a fault when using the -g or -d<nofilename> options if the 3594114237SnjlFADT was not found. 3595114237Snjl 3596114237SnjlFixed an issue with the Windows version of the compiler where 3597114237Snjllater versions of Windows place the FADT in the registry under 3598107325Siwasakithe name "FADT" and not "FACP" as earlier versions did. This 3599114237Snjlapplies when using the -g or -d<nofilename> options. The 3600114237Snjlcompiler now looks for both strings as necessary. 3601107325Siwasaki 3602107325SiwasakiFixed a problem with compiler namepath optimization where a 3603107325Siwasakinamepath within the Scope() operator could not be optimized if 3604107325Siwasakithe namepath was a subpath of the current scope path. 3605107325Siwasaki 3606107325Siwasaki---------------------------------------- 3607107325Siwasaki27 May 2004. Summary of changes for version 20040527: 3608114237Snjl 3609114237Snjl1) ACPI CA Core Subsystem: 3610114237Snjl 3611114237SnjlCompleted a new design and implementation for EBDA (Extended BIOS 3612114237SnjlData Area) support in the RSDP scan code. The original code 3613114237Snjlimproperly scanned for the EBDA by simply scanning from memory 3614126372Snjllocation 0 to 0x400. The correct method is to first obtain the 3615126372SnjlEBDA pointer from within the BIOS data area, then scan 1K of 3616126372Snjlmemory starting at the EBDA pointer. There appear to be few if 3617126372Snjlany machines that place the RSDP in the EBDA, however. 3618126372Snjl 3619114237SnjlIntegrated a fix for a possible fault during evaluation of 3620107325SiwasakiBufferField arguments. Obsolete code that was causing the 3621114237Snjlproblem was removed. 3622114237Snjl 3623114237SnjlFound and fixed a problem in the Field Support Code where data 3624114237Snjlcould be corrupted on a bit field read that starts on an aligned 3625114237Snjlboundary but does not end on an aligned boundary. Merged the 3626114237Snjlread/write "datum length" calculation code into a common 3627107325Siwasakiprocedure. 3628114237Snjl 3629114237SnjlRolled in a couple of changes to the FreeBSD-specific header. 3630114237Snjl 3631114237Snjl 3632114237SnjlCode and Data Size: Current and previous core subsystem library 3633107325Siwasakisizes are shown below. These are the code and data sizes for the 3634107325Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3635107325Siwasakithese values do not include any ACPI driver or OSPM code. The 3636114237Snjldebug version of the code includes the debug output trace 3637114237Snjlmechanism and has a much larger code and data size. Note that 3638126372Snjlthese values will vary depending on the efficiency of the 3639126372Snjlcompiler and the compiler options used during generation. 3640107325Siwasaki 3641107325Siwasaki Previous Release: 3642107325Siwasaki Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 3643107325Siwasaki Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 3644107325Siwasaki Current Release: 3645107325Siwasaki Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 3646107325Siwasaki Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 3647107325Siwasaki 3648107325Siwasaki 3649107325Siwasaki2) iASL Compiler/Disassembler: 3650107325Siwasaki 3651107325SiwasakiFixed a generation warning produced by some overly-verbose 3652107325Siwasakicompilers for a 64-bit constant. 3653107325Siwasaki 3654126372Snjl---------------------------------------- 3655126372Snjl14 May 2004. Summary of changes for version 20040514: 3656114237Snjl 3657114237Snjl1) ACPI CA Core Subsystem: 3658126372Snjl 3659126372SnjlFixed a problem where hardware GPE enable bits sometimes not set 3660107325Siwasakiproperly during and after GPE method execution. Result of 04/27 3661107325Siwasakichanges. 3662107325Siwasaki 3663114237SnjlRemoved extra "clear all GPEs" when sleeping/waking. 3664114237Snjl 3665126372SnjlRemoved AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the 3666126372Snjlsingle AcpiHwWriteGpeEnableReg. Changed a couple of calls to the 3667126372Snjlfunctions above to the new AcpiEv* calls as appropriate. 3668126372Snjl 3669126372SnjlACPI_OS_NAME was removed from the OS-specific headers. The 3670107325Siwasakidefault name is now "Microsoft Windows NT" for maximum 3671107325Siwasakicompatibility. However this can be changed by modifying the 3672126372Snjlacconfig.h file. 3673126372Snjl 3674126372SnjlAllow a single invocation of AcpiInstallNotifyHandler for a 3675126372Snjlhandler that traps both types of notifies (System, Device). Use 3676107325SiwasakiACPI_ALL_NOTIFY flag. 3677114237Snjl 3678114237SnjlRun _INI methods on ThermalZone objects. This is against the 3679114237SnjlACPI specification, but there is apparently ASL code in the field 3680107325Siwasakithat has these _INI methods, and apparently "other" AML 3681107325Siwasakiinterpreters execute them. 3682114237Snjl 3683114237SnjlPerformed a full 16/32/64 bit lint that resulted in some small 3684107325Siwasakichanges. 3685107325Siwasaki 3686107325SiwasakiAdded a sleep simulation command to the AML debugger to test 3687107325Siwasakisleep code. 3688104470Siwasaki 3689104470SiwasakiCode and Data Size: Current and previous core subsystem library 3690104470Siwasakisizes are shown below. These are the code and data sizes for the 3691104470Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3692104470Siwasakithese values do not include any ACPI driver or OSPM code. The 3693104470Siwasakidebug version of the code includes the debug output trace 3694104470Siwasakimechanism and has a much larger code and data size. Note that 3695126372Snjlthese values will vary depending on the efficiency of the 3696126372Snjlcompiler and the compiler options used during generation. 3697104470Siwasaki 3698104470Siwasaki Previous Release: 3699104470Siwasaki Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 3700126372Snjl Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 3701126372Snjl Current Release: 3702104470Siwasaki Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 3703104470Siwasaki Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 3704104470Siwasaki 3705126372Snjl---------------------------------------- 3706126372Snjl27 April 2004. Summary of changes for version 20040427: 3707104470Siwasaki 3708104470Siwasaki1) ACPI CA Core Subsystem: 3709114237Snjl 3710126372SnjlCompleted a major overhaul of the GPE handling within ACPI CA. 3711126372SnjlThere are now three types of GPEs: wake-only, runtime-only, and 3712104470Siwasakicombination wake/run. The only GPEs allowed to be combination 3713104470Siwasakiwake/run are for button-style devices such as a control-method 3714126372Snjlpower button, control-method sleep button, or a notebook lid 3715126372Snjlswitch. GPEs that have an _Lxx or _Exx method and are not 3716126372Snjlreferenced by any _PRW methods are marked for "runtime" and 3717126372Snjlhardware enabled. Any GPE that is referenced by a _PRW method is 3718104470Siwasakimarked for "wake" (and disabled at runtime). However, at sleep 3719104470Siwasakitime, only those GPEs that have been specifically enabled for 3720104470Siwasakiwake via the AcpiEnableGpe interface will actually be hardware 3721126372Snjlenabled. 3722126372Snjl 3723126372SnjlA new external interface has been added, AcpiSetGpeType(), that 3724126372Snjlis meant to be used by device drivers to force a GPE to a 3725126372Snjlparticular type. It will be especially useful for the drivers 3726126372Snjlfor the button devices mentioned above. 3727126372Snjl 3728126372SnjlCompleted restructuring of the ACPI CA initialization sequence so 3729126372Snjlthat default operation region handlers are installed before GPEs 3730126372Snjlare initialized and the _PRW methods are executed. This will 3731104470Siwasakiprevent errors when the _PRW methods attempt to access system 3732104470Siwasakimemory or I/O space. 3733126372Snjl 3734126372SnjlGPE enable/disable no longer reads the GPE enable register. We 3735126372Snjlnow keep the enable info for runtime and wake separate and in the 3736126372SnjlGPE_EVENT_INFO. We thus no longer depend on the hardware to 3737126372Snjlmaintain these bits. 3738126372Snjl 3739126372SnjlAlways clear the wake status and fixed/GPE status bits before 3740126372Snjlsleep, even for state S5. 3741126372Snjl 3742104470SiwasakiImproved the AML debugger output for displaying the GPE blocks 3743104470Siwasakiand their current status. 3744104470Siwasaki 3745104470SiwasakiAdded new strings for the _OSI method, of the form "Windows 2001 3746104470SiwasakiSPx" where x = 0,1,2,3,4. 3747104470Siwasaki 3748104470SiwasakiFixed a problem where the physical address was incorrectly 3749104470Siwasakicalculated when the Load() operator was used to directly load 3750104470Siwasakifrom an Operation Region (vs. loading from a Field object.) Also 3751104470Siwasakiadded check for minimum table length for this case. 3752104470Siwasaki 3753104470SiwasakiFix for multiple mutex acquisition. Restore original thread 3754104470SiwasakiSyncLevel on mutex release. 3755104470Siwasaki 3756104470SiwasakiAdded ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 3757104470Siwasakiconsistency with the other fields returned. 3758114237Snjl 3759104470SiwasakiShrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one 3760104470Siwasakisuch structure for each GPE in the system, so the size of this 3761104470Siwasakistructure is important. 3762104470Siwasaki 3763104470SiwasakiCPU stack requirement reduction: Cleaned up the method execution 3764104470Siwasakiand object evaluation paths so that now a parameter structure is 3765104470Siwasakipassed, instead of copying the various method parameters over and 3766104470Siwasakiover again. 3767104470Siwasaki 3768104470SiwasakiIn evregion.c: Correctly exit and reenter the interpreter region 3769104470Siwasakiif and only if dispatching an operation region request to a user- 3770104470Siwasakiinstalled handler. Do not exit/reenter when dispatching to a 3771104470Siwasakidefault handler (e.g., default system memory or I/O handlers) 3772104470Siwasaki 3773104470Siwasaki 3774104470SiwasakiNotes for updating drivers for the new GPE support. The 3775104470Siwasakifollowing changes must be made to ACPI-related device drivers 3776104470Siwasakithat are attached to one or more GPEs: (This information will be 3777104470Siwasakiadded to the ACPI CA Programmer Reference.) 3778104470Siwasaki 3779104470Siwasaki1) AcpiInstallGpeHandler no longer automatically enables the GPE, 3780104470Siwasakiyou must explicitly call AcpiEnableGpe. 3781114237Snjl2) There is a new interface called AcpiSetGpeType. This should be 3782114237Snjlcalled before enabling the GPE. Also, this interface will 3783126372Snjlautomatically disable the GPE if it is currently enabled. 3784126372Snjl3) AcpiEnableGpe no longer supports a GPE type flag. 3785126372Snjl 3786104470SiwasakiSpecific drivers that must be changed: 3787104470Siwasaki1) EC driver: 3788104470Siwasaki AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 3789114237SnjlAeGpeHandler, NULL); 3790114237Snjl AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 3791114237Snjl AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 3792104470Siwasaki 3793104470Siwasaki2) Button Drivers (Power, Lid, Sleep): 3794104470SiwasakiRun _PRW method under parent device 3795104470SiwasakiIf _PRW exists: /* This is a control-method button */ 3796104470Siwasaki Extract GPE number and possibly GpeDevice 3797114237Snjl AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 3798114237Snjl AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 3799126372Snjl 3800126372SnjlFor all other devices that have _PRWs, we automatically set the 3801126372SnjlGPE type to ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically 3802104470Siwasaki(wake) enabled. This must be done on a selective basis, usually 3803104470Siwasakirequiring some kind of user app to allow the user to pick the 3804104470Siwasakiwake devices. 3805104470Siwasaki 3806104470Siwasaki 3807114237SnjlCode and Data Size: Current and previous core subsystem library 3808114237Snjlsizes are shown below. These are the code and data sizes for the 3809104470Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3810104470Siwasakithese values do not include any ACPI driver or OSPM code. The 3811104470Siwasakidebug version of the code includes the debug output trace 3812104470Siwasakimechanism and has a much larger code and data size. Note that 3813104470Siwasakithese values will vary depending on the efficiency of the 3814104470Siwasakicompiler and the compiler options used during generation. 3815104470Siwasaki 3816114237Snjl Previous Release: 3817114237Snjl Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 3818104470Siwasaki Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 3819104470Siwasaki Current Release: 3820104470Siwasaki 3821104470Siwasaki Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 3822104470Siwasaki Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 3823104470Siwasaki 3824104470Siwasaki 3825114237Snjl 3826114237Snjl---------------------------------------- 3827114237Snjl02 April 2004. Summary of changes for version 20040402: 3828114237Snjl 3829114237Snjl1) ACPI CA Core Subsystem: 3830104470Siwasaki 3831104470SiwasakiFixed an interpreter problem where an indirect store through an 3832104470SiwasakiArgX parameter was incorrectly applying the "implicit conversion 3833104470Siwasakirules" during the store. From the ACPI specification: "If the 3834114237Snjltarget is a method local or argument (LocalX or ArgX), no 3835114237Snjlconversion is performed and the result is stored directly to the 3836114237Snjltarget". The new behavior is to disable implicit conversion 3837104470Siwasakiduring ALL stores to an ArgX. 3838104470Siwasaki 3839104470SiwasakiChanged the behavior of the _PRW method scan to ignore any and 3840104470Siwasakiall errors returned by a given _PRW. This prevents the scan from 3841104470Siwasakiaborting from the failure of any single _PRW. 3842104470Siwasaki 3843104470SiwasakiMoved the runtime configuration parameters from the global init 3844114237Snjlprocedure to static variables in acglobal.h. This will allow the 3845114237Snjlhost to override the default values easily. 3846114237Snjl 3847126372SnjlCode and Data Size: Current and previous core subsystem library 3848126372Snjlsizes are shown below. These are the code and data sizes for the 3849104470Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3850114237Snjlthese values do not include any ACPI driver or OSPM code. The 3851114237Snjldebug version of the code includes the debug output trace 3852114237Snjlmechanism and has a much larger code and data size. Note that 3853114237Snjlthese values will vary depending on the efficiency of the 3854104470Siwasakicompiler and the compiler options used during generation. 3855104470Siwasaki 3856104470Siwasaki Previous Release: 3857104470Siwasaki Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 3858104470Siwasaki Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 3859104470Siwasaki Current Release: 3860104470Siwasaki Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 3861104470Siwasaki Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 3862104470Siwasaki 3863104470Siwasaki 3864104470Siwasaki2) iASL Compiler/Disassembler: 3865104470Siwasaki 3866104470SiwasakiiASL now fully disassembles SSDTs. However, External() 3867126372Snjlstatements are not generated automatically for unresolved symbols 3868126372Snjlat this time. This is a planned feature for future 3869104470Siwasakiimplementation. 3870104470Siwasaki 3871104470SiwasakiFixed a scoping problem in the disassembler that occurs when the 3872104470Siwasakitype of the target of a Scope() operator is overridden. This 3873104470Siwasakiproblem caused an incorrectly nested internal namespace to be 3874104470Siwasakiconstructed. 3875104470Siwasaki 3876104470SiwasakiAny warnings or errors that are emitted during disassembly are 3877104470Siwasakinow commented out automatically so that the resulting file can be 3878114237Snjlrecompiled without any hand editing. 3879114237Snjl 3880104470Siwasaki---------------------------------------- 3881114237Snjl26 March 2004. Summary of changes for version 20040326: 3882114237Snjl 3883114237Snjl1) ACPI CA Core Subsystem: 3884104470Siwasaki 3885114237SnjlImplemented support for "wake" GPEs via interaction between GPEs 3886114237Snjland the _PRW methods. Every GPE that is pointed to by one or 3887104470Siwasakimore _PRWs is identified as a WAKE GPE and by default will no 3888114237Snjllonger be enabled at runtime. Previously, we were blindly 3889114237Snjlenabling all GPEs with a corresponding _Lxx or _Exx method - but 3890104470Siwasakimost of these turn out to be WAKE GPEs anyway. We believe this 3891104470Siwasakihas been the cause of thousands of "spurious" GPEs on some 3892126372Snjlsystems. 3893126372Snjl 3894114237SnjlThis new GPE behavior is can be reverted to the original behavior 3895104470Siwasaki(enable ALL GPEs at runtime) via a runtime flag. 3896104470Siwasaki 3897104470SiwasakiFixed a problem where aliased control methods could not access 3898104470Siwasakiobjects properly. The proper scope within the namespace was not 3899104470Siwasakiinitialized (transferred to the target of the aliased method) 3900104470Siwasakibefore executing the target method. 3901102550Siwasaki 3902102550SiwasakiFixed a potential race condition on internal object deletion on 3903102550Siwasakithe return object in AcpiEvaluateObject. 3904102550Siwasaki 3905114237SnjlIntegrated a fix for resource descriptors where both _MEM and 3906114237Snjl_MTP were being extracted instead of just _MEM. (i.e. bitmask 3907126372Snjlwas incorrectly too wide, 0x0F instead of 0x03.) 3908126372Snjl 3909126372SnjlAdded a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 3910126372Snjlpreventing a fault in some cases. 3911102550Siwasaki 3912114237SnjlUpdated Notify() values for debug statements in evmisc.c 3913114237Snjl 3914102550SiwasakiReturn proper status from AcpiUtMutexInitialize, not just simply 3915102550SiwasakiAE_OK. 3916102550Siwasaki 3917114237SnjlCode and Data Size: Current and previous core subsystem library 3918114237Snjlsizes are shown below. These are the code and data sizes for the 3919126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3920126372Snjlthese values do not include any ACPI driver or OSPM code. The 3921126372Snjldebug version of the code includes the debug output trace 3922126372Snjlmechanism and has a much larger code and data size. Note that 3923114237Snjlthese values will vary depending on the efficiency of the 3924114237Snjlcompiler and the compiler options used during generation. 3925114237Snjl 3926102550Siwasaki Previous Release: 3927114237Snjl 3928114237Snjl Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 3929126372Snjl Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 3930126372Snjl Current Release: 3931114237Snjl Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 3932126372Snjl Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 3933126372Snjl 3934126372Snjl---------------------------------------- 3935102550Siwasaki11 March 2004. Summary of changes for version 20040311: 3936102550Siwasaki 3937126372Snjl1) ACPI CA Core Subsystem: 3938126372Snjl 3939126372SnjlFixed a problem where errors occurring during the parse phase of 3940126372Snjlcontrol method execution did not abort cleanly. For example, 3941126372Snjlobjects created and installed in the namespace were not deleted. 3942126372SnjlThis caused all subsequent invocations of the method to return 3943126372Snjlthe AE_ALREADY_EXISTS exception. 3944126372Snjl 3945126372SnjlImplemented a mechanism to force a control method to "Serialized" 3946102550Siwasakiexecution if the method attempts to create namespace objects. 3947102550Siwasaki(The root of the AE_ALREADY_EXISTS problem.) 3948104470Siwasaki 3949104470SiwasakiImplemented support for the predefined _OSI "internal" control 3950102550Siwasakimethod. Initial supported strings are "Linux", "Windows 2000", 3951104470Siwasaki"Windows 2001", and "Windows 2001.1", and can be easily upgraded 3952104470Siwasakifor new strings as necessary. This feature will allow "other" 3953102550Siwasakioperating systems to execute the fully tested, "Windows" code 3954102550Siwasakipath through the ASL code 3955102550Siwasaki 3956102550SiwasakiGlobal Lock Support: Now allows multiple acquires and releases 3957102550Siwasakiwith any internal thread. Removed concept of "owning thread" for 3958102550Siwasakithis special mutex. 3959102550Siwasaki 3960102550SiwasakiFixed two functions that were inappropriately declaring large 3961102550Siwasakiobjects on the CPU stack: PsParseLoop, NsEvaluateRelative. 3962102550SiwasakiReduces the stack usage during method execution considerably. 3963104470Siwasaki 3964104470SiwasakiFixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where 3965102550Siwasakithe S4Bios_f field was incorrectly defined as UINT32 instead of 3966102550SiwasakiUINT32_BIT. 3967102550Siwasaki 3968102550SiwasakiFixed a problem where AcpiEvGpeDetect would fault if there were 3969102550Siwasakino GPEs defined on the machine. 3970102550Siwasaki 3971102550SiwasakiImplemented two runtime options: One to force all control method 3972102550Siwasakiexecution to "Serialized" to mimic Windows behavior, another to 3973102550Siwasakidisable _OSI support if it causes problems on a given machine. 3974102550Siwasaki 3975114237SnjlCode and Data Size: Current and previous core subsystem library 3976114237Snjlsizes are shown below. These are the code and data sizes for the 3977114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 3978114237Snjlthese values do not include any ACPI driver or OSPM code. The 3979102550Siwasakidebug version of the code includes the debug output trace 3980102550Siwasakimechanism and has a much larger code and data size. Note that 3981114237Snjlthese values will vary depending on the efficiency of the 3982114237Snjlcompiler and the compiler options used during generation. 3983114237Snjl 3984126372Snjl Previous Release: 3985126372Snjl Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 3986126372Snjl Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 3987126372Snjl Current Release: 3988126372Snjl Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 3989126372Snjl Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 3990102550Siwasaki 3991114237Snjl2) iASL Compiler/Disassembler: 3992114237Snjl 3993114237SnjlFixed an array size problem for FreeBSD that would cause the 3994114237Snjlcompiler to fault. 3995114237Snjl 3996114237Snjl---------------------------------------- 3997114237Snjl20 February 2004. Summary of changes for version 20040220: 3998102550Siwasaki 3999114237Snjl 4000114237Snjl1) ACPI CA Core Subsystem: 4001114237Snjl 4002126372SnjlImplemented execution of _SxD methods for Device objects in the 4003126372SnjlGetObjectInfo interface. 4004102550Siwasaki 4005114237SnjlFixed calls to _SST method to pass the correct arguments. 4006114237Snjl 4007114237SnjlAdded a call to _SST on wake to restore to "working" state. 4008114237Snjl 4009126372SnjlCheck for End-Of-Buffer failure case in the WalkResources 4010126372Snjlinterface. 4011102550Siwasaki 4012104470SiwasakiIntegrated fix for 64-bit alignment issue in acglobal.h by moving 4013114237Snjltwo structures to the beginning of the file. 4014114237Snjl 4015114237SnjlAfter wake, clear GPE status register(s) before enabling GPEs. 4016102550Siwasaki 4017114237SnjlAfter wake, clear/enable power button. (Perhaps we should 4018114237Snjlclear/enable all fixed events upon wake.) 4019114237Snjl 4020114237SnjlFixed a couple of possible memory leaks in the Namespace manager. 4021114237Snjl 4022102550SiwasakiIntegrated latest acnetbsd.h file. 4023114237Snjl 4024114237Snjl---------------------------------------- 4025114237Snjl11 February 2004. Summary of changes for version 20040211: 4026102550Siwasaki 4027104470Siwasaki 4028114237Snjl1) ACPI CA Core Subsystem: 4029114237Snjl 4030104470SiwasakiCompleted investigation and implementation of the call-by- 4031102550Siwasakireference mechanism for control method arguments. 4032102550Siwasaki 4033102550SiwasakiFixed a problem where a store of an object into an indexed 4034102550Siwasakipackage could fail if the store occurs within a different method 4035102550Siwasakithan the method that created the package. 4036102550Siwasaki 4037102550SiwasakiFixed a problem where the ToDecimal operator could return 4038114237Snjlincorrect results. 4039114237Snjl 4040126372SnjlFixed a problem where the CopyObject operator could fail on some 4041126372Snjlof the more obscure objects (e.g., Reference objects.) 4042126372Snjl 4043126372SnjlImproved the output of the Debug object to display buffer, 4044114237Snjlpackage, and index objects. 4045114237Snjl 4046114237SnjlFixed a problem where constructs of the form "RefOf (ArgX)" did 4047102550Siwasakinot return the expected result. 4048114237Snjl 4049114237SnjlAdded permanent ACPI_REPORT_ERROR macros for all instances of the 4050114237SnjlACPI_AML_INTERNAL exception. 4051102550Siwasaki 4052114237SnjlIntegrated latest version of acfreebsd.h 4053114237Snjl 4054114237Snjl---------------------------------------- 4055102550Siwasaki16 January 2004. Summary of changes for version 20040116: 4056102550Siwasaki 4057126372SnjlThe purpose of this release is primarily to update the copyright 4058126372Snjlyears in each module, thus causing a huge number of diffs. There 4059126372Snjlare a few small functional changes, however. 4060126372Snjl 4061126372Snjl1) ACPI CA Core Subsystem: 4062126372Snjl 4063126372SnjlImproved error messages when there is a problem finding one or 4064126372Snjlmore of the required base ACPI tables 4065126372Snjl 4066102550SiwasakiReintroduced the definition of APIC_HEADER in actbl.h 4067102550Siwasaki 4068104470SiwasakiChanged definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 4069104470Siwasaki 4070102550SiwasakiRemoved extraneous reference to NewObj in dsmthdat.c 4071104470Siwasaki 4072104470Siwasaki2) iASL compiler 4073102550Siwasaki 4074102550SiwasakiFixed a problem introduced in December that disabled the correct 4075102550Siwasakidisassembly of Resource Templates 4076102550Siwasaki 4077102550Siwasaki 4078102550Siwasaki---------------------------------------- 4079114237Snjl03 December 2003. Summary of changes for version 20031203: 4080114237Snjl 4081102550Siwasaki1) ACPI CA Core Subsystem: 4082102550Siwasaki 4083102550SiwasakiChanged the initialization of Operation Regions during subsystem 4084102550Siwasakiinit to perform two entire walks of the ACPI namespace; The first 4085114237Snjlto initialize the regions themselves, the second to execute the 4086114237Snjl_REG methods. This fixed some interdependencies across _REG 4087114237Snjlmethods found on some machines. 4088114237Snjl 4089114237SnjlFixed a problem where a Store(Local0, Local1) could simply update 4090114237Snjlthe object reference count, and not create a new copy of the 4091102550Siwasakiobject if the Local1 is uninitialized. 4092102550Siwasaki 4093102550SiwasakiImplemented support for the _SST reserved method during sleep 4094102550Siwasakitransitions. 4095114237Snjl 4096114237SnjlImplemented support to clear the SLP_TYP and SLP_EN bits when 4097114237Snjlwaking up, this is apparently required by some machines. 4098102550Siwasaki 4099104470SiwasakiWhen sleeping, clear the wake status only if SleepState is not 4100104470SiwasakiS5. 4101126372Snjl 4102126372SnjlFixed a problem in AcpiRsExtendedIrqResource() where an incorrect 4103126372Snjlpointer arithmetic advanced a string pointer too far. 4104102550Siwasaki 4105102550SiwasakiFixed a problem in AcpiTbGetTablePtr() where a garbage pointer 4106102550Siwasakicould be returned if the requested table has not been loaded. 4107102550Siwasaki 4108102550SiwasakiWithin the support for IRQ resources, restructured the handling 4109102550Siwasakiof 4110102550Siwasakithe active and edge/level bits. 4111102550Siwasaki 4112114237SnjlFixed a few problems in AcpiPsxExecute() where memory could be 4113114237Snjlleaked under certain error conditions. 4114114237Snjl 4115114237SnjlImproved error messages for the cases where the ACPI mode could 4116126372Snjlnot be entered. 4117126372Snjl 4118126372SnjlCode and Data Size: Current and previous core subsystem library 4119126372Snjlsizes are shown below. These are the code and data sizes for the 4120126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4121114237Snjlthese values do not include any ACPI driver or OSPM code. The 4122102550Siwasakidebug version of the code includes the debug output trace 4123114237Snjlmechanism and has a much larger code and data size. Note that 4124126372Snjlthese values will vary depending on the efficiency of the 4125126372Snjlcompiler 4126114237Snjland the compiler options used during generation. 4127114237Snjl 4128102550Siwasaki Previous Release (20031029): 4129104470Siwasaki Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 4130114237Snjl Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 4131114237Snjl Current Release: 4132114237Snjl Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 4133102550Siwasaki Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 4134102550Siwasaki 4135126372Snjl2) iASL Compiler/Disassembler: 4136126372Snjl 4137102550SiwasakiImplemented a fix for the iASL disassembler where a bad index was 4138104470Siwasakigenerated. This was most noticeable on 64-bit platforms 4139104470Siwasaki 4140126372Snjl 4141126372Snjl---------------------------------------- 4142114237Snjl29 October 2003. Summary of changes for version 20031029: 4143114237Snjl 4144102550Siwasaki1) ACPI CA Core Subsystem: 4145102550Siwasaki 4146102550Siwasaki 4147102550SiwasakiFixed a problem where a level-triggered GPE with an associated 4148114237Snjl_Lxx control method was incorrectly cleared twice. 4149114237Snjl 4150126372SnjlFixed a problem with the Field support code where an access can 4151126372Snjloccur beyond the end-of-region if the field is non-aligned but 4152102550Siwasakiextends to the very end of the parent region (resulted in an 4153102550SiwasakiAE_AML_REGION_LIMIT exception.) 4154102550Siwasaki 4155102550SiwasakiFixed a problem with ACPI Fixed Events where an RT Clock handler 4156102550Siwasakiwould not get invoked on an RTC event. The RTC event bitmasks 4157102550Siwasakifor 4158102550Siwasakithe PM1 registers were not being initialized properly. 4159102550Siwasaki 4160102550SiwasakiImplemented support for executing _STA and _INI methods for 4161114237SnjlProcessor objects. Although this is currently not part of the 4162114237SnjlACPI specification, there is existing ASL code that depends on 4163114237Snjlthe 4164114237Snjlinit-time execution of these methods. 4165102550Siwasaki 4166102550SiwasakiImplemented and deployed a GetDescriptorName function to decode 4167102550Siwasakithe various types of internal descriptors. Guards against null 4168102550Siwasakidescriptors during debug output also. 4169102550Siwasaki 4170114237SnjlImplemented and deployed a GetNodeName function to extract the 4- 4171114237Snjlcharacter namespace node name. This function simplifies the 4172104470Siwasakidebug 4173102550Siwasakiand error output, as well as guarding against null pointers 4174114237Snjlduring 4175126372Snjloutput. 4176126372Snjl 4177102550SiwasakiImplemented and deployed the ACPI_FORMAT_UINT64 helper macro to 4178102550Siwasakisimplify the debug and error output of 64-bit integers. This 4179102550Siwasakimacro replaces the HIDWORD and LODWORD macros for dumping these 4180114237Snjlintegers. 4181114237Snjl 4182102550SiwasakiUpdated the implementation of the Stall() operator to only call 4183102550SiwasakiAcpiOsStall(), and also return an error if the operand is larger 4184102550Siwasakithan 255. This preserves the required behavior of not 4185102550Siwasakirelinquishing the processor, as would happen if AcpiOsSleep() was 4186102550Siwasakicalled for "long stalls". 4187102550Siwasaki 4188102550SiwasakiConstructs of the form "Store(LocalX,LocalX)" where LocalX is not 4189104470Siwasakiinitialized are now treated as NOOPs. 4190114237Snjl 4191114237SnjlCleaned up a handful of warnings during 64-bit generation. 4192114237Snjl 4193114237SnjlFixed a reported error where and incorrect GPE number was passed 4194126372Snjlto the GPE dispatch handler. This value is only used for error 4195126372Snjloutput, however. Used this opportunity to clean up and 4196126372Snjlstreamline 4197102550Siwasakithe GPE dispatch code. 4198102550Siwasaki 4199114237SnjlCode and Data Size: Current and previous core subsystem library 4200126372Snjlsizes are shown below. These are the code and data sizes for the 4201126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4202102550Siwasakithese values do not include any ACPI driver or OSPM code. The 4203104470Siwasaki 4204114237Snjldebug version of the code includes the debug output trace 4205114237Snjlmechanism and has a much larger code and data size. Note that 4206114237Snjlthese values will vary depending on the efficiency of the 4207102550Siwasakicompiler 4208102550Siwasakiand the compiler options used during generation. 4209104470Siwasaki 4210104470Siwasaki Previous Release (20031002): 4211104470Siwasaki Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 4212104470Siwasaki Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 4213104470Siwasaki Current Release: 4214126372Snjl Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 4215126372Snjl Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 4216114237Snjl 4217126372Snjl 4218126372Snjl2) iASL Compiler/Disassembler: 4219102550Siwasaki 4220102550SiwasakiUpdated the iASL compiler to return an error if the operand to 4221126372Snjlthe 4222126372SnjlStall() operator is larger than 255. 4223114237Snjl 4224114237Snjl 4225114237Snjl---------------------------------------- 4226114237Snjl02 October 2003. Summary of changes for version 20031002: 4227126372Snjl 4228126372Snjl 4229114237Snjl1) ACPI CA Core Subsystem: 4230102550Siwasaki 4231102550SiwasakiFixed a problem with Index Fields where the index was not 4232104470Siwasakiincremented for fields that require multiple writes to the 4233104470Siwasakiindex/data registers (Fields that are wider than the data 4234102550Siwasakiregister.) 4235104470Siwasaki 4236104470SiwasakiFixed a problem with all Field objects where a write could go 4237102550Siwasakibeyond the end-of-field if the field was larger than the access 4238102550Siwasakigranularity and therefore required multiple writes to complete 4239102550Siwasakithe 4240102550Siwasakirequest. An extra write beyond the end of the field could happen 4241104470Siwasakiinadvertently. 4242104470Siwasaki 4243102550SiwasakiFixed a problem with Index Fields where a BUFFER_OVERFLOW error 4244102550Siwasakiwould incorrectly be returned if the width of the Data Register 4245102550Siwasakiwas larger than the specified field access width. 4246102550Siwasaki 4247114237SnjlCompleted fixes for LoadTable() and Unload() and verified their 4248126372Snjloperation. Implemented full support for the "DdbHandle" object 4249126372Snjlthroughout the ACPI CA subsystem. 4250114237Snjl 4251102550SiwasakiImplemented full support for the MADT and ECDT tables in the ACPI 4252114237SnjlCA header files. Even though these tables are not directly 4253114237Snjlconsumed by ACPI CA, the header definitions are useful for ACPI 4254114237Snjldevice drivers. 4255114237Snjl 4256114237SnjlIntegrated resource descriptor fixes posted to the Linux ACPI 4257102550Siwasakilist. This included checks for minimum descriptor length, and 4258114237Snjlsupport for trailing NULL strings within descriptors that have 4259114237Snjloptional string elements. 4260114237Snjl 4261114237SnjlCode and Data Size: Current and previous core subsystem library 4262102550Siwasakisizes are shown below. These are the code and data sizes for the 4263102550Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4264126372Snjlthese values do not include any ACPI driver or OSPM code. The 4265126372Snjldebug version of the code includes the debug output trace 4266102550Siwasakimechanism and has a much larger code and data size. Note that 4267102550Siwasakithese values will vary depending on the efficiency of the 4268102550Siwasakicompiler 4269102550Siwasakiand the compiler options used during generation. 4270102550Siwasaki 4271102550Siwasaki Previous Release (20030918): 4272102550Siwasaki Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 4273102550Siwasaki Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 4274102550Siwasaki Current Release: 4275104470Siwasaki Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 4276104470Siwasaki Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 4277126372Snjl 4278126372Snjl 4279126372Snjl2) iASL Compiler: 4280126372Snjl 4281126372SnjlImplemented detection of non-ASCII characters within the input 4282126372Snjlsource ASL file. This catches attempts to compile binary (AML) 4283126372Snjlfiles early in the compile, with an informative error message. 4284102550Siwasaki 4285114237SnjlFixed a problem where the disassembler would fault if the output 4286126372Snjlfilename could not be generated or if the output file could not 4287126372Snjlbe 4288114237Snjlopened. 4289102550Siwasaki 4290114237Snjl---------------------------------------- 4291114237Snjl18 September 2003. Summary of changes for version 20030918: 4292114237Snjl 4293102550Siwasaki 4294114237Snjl1) ACPI CA Core Subsystem: 4295114237Snjl 4296102550SiwasakiFound and fixed a longstanding problem with the late execution of 4297104470Siwasakithe various deferred AML opcodes (such as Operation Regions, 4298126372SnjlBuffer Fields, Buffers, and Packages). If the name string 4299126372Snjlspecified for the name of the new object placed the object in a 4300114237Snjlscope other than the current scope, the initialization/execution 4301102550Siwasakiof the opcode failed. The solution to this problem was to 4302102550Siwasakiimplement a mechanism where the late execution of such opcodes 4303126372Snjldoes not attempt to lookup/create the name a second time in an 4304126372Snjlincorrect scope. This fixes the "region size computed 4305126372Snjlincorrectly" problem. 4306126372Snjl 4307126372SnjlFixed a call to AcpiHwRegisterWrite in hwregs.c that was causing 4308126372Snjla 4309126372SnjlGlobal Lock AE_BAD_PARAMETER error. 4310126372Snjl 4311126372SnjlFixed several 64-bit issues with prototypes, casting and data 4312102550Siwasakitypes. 4313102550Siwasaki 4314104470SiwasakiRemoved duplicate prototype from acdisasm.h 4315104470Siwasaki 4316102550SiwasakiFixed an issue involving EC Operation Region Detach (Shaohua Li) 4317104470Siwasaki 4318104470SiwasakiCode and Data Size: Current and previous core subsystem library 4319102550Siwasakisizes are shown below. These are the code and data sizes for the 4320102550Siwasakiacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4321102550Siwasakithese values do not include any ACPI driver or OSPM code. The 4322102550Siwasakidebug version of the code includes the debug output trace 4323102550Siwasakimechanism and has a much larger code and data size. Note that 4324114237Snjlthese values will vary depending on the efficiency of the 4325114237Snjlcompiler 4326102550Siwasakiand the compiler options used during generation. 4327102550Siwasaki 4328102550Siwasaki Previous Release: 4329102550Siwasaki 4330102550Siwasaki Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 4331102550Siwasaki Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 4332102550Siwasaki Current Release: 4333102550Siwasaki Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 4334102550Siwasaki Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 4335102550Siwasaki 4336102550Siwasaki 4337102550Siwasaki2) Linux: 4338102550Siwasaki 4339102550SiwasakiFixed the AcpiOsSleep implementation in osunixxf.c to pass the 4340102550Siwasakicorrect sleep time in seconds. 4341102550Siwasaki 4342126372Snjl---------------------------------------- 4343126372Snjl14 July 2003. Summary of changes for version 20030619: 4344126372Snjl 4345126372Snjl1) ACPI CA Core Subsystem: 4346126372Snjl 4347102550SiwasakiParse SSDTs in order discovered, as opposed to reverse order 4348102550Siwasaki(Hrvoje Habjanic) 4349102550Siwasaki 4350114237SnjlFixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 4351114237SnjlKlausner, 4352102550Siwasaki Nate Lawson) 4353114237Snjl 4354114237Snjl 4355114237Snjl2) Linux: 4356114237Snjl 4357102550SiwasakiDynamically allocate SDT list (suggested by Andi Kleen) 4358114237Snjl 4359114237Snjlproc function return value cleanups (Andi Kleen) 4360114237Snjl 4361114237SnjlCorrectly handle NMI watchdog during long stalls (Andrew Morton) 4362102550Siwasaki 4363102550SiwasakiMake it so acpismp=force works (reported by Andrew Morton) 4364126372Snjl 4365126372Snjl 4366126372Snjl---------------------------------------- 4367126372Snjl19 June 2003. Summary of changes for version 20030619: 4368126372Snjl 4369102550Siwasaki1) ACPI CA Core Subsystem: 4370102550Siwasaki 4371102550SiwasakiFix To/FromBCD, eliminating the need for an arch-specific 4372102550Siwasaki#define. 4373114237Snjl 4374114237SnjlDo not acquire a semaphore in the S5 shutdown path. 4375102550Siwasaki 4376102550SiwasakiFix ex_digits_needed for 0. (Takayoshi Kochi) 4377126372Snjl 4378126372SnjlFix sleep/stall code reversal. (Andi Kleen) 4379114237Snjl 4380102550SiwasakiRevert a change having to do with control method calling 4381102550Siwasakisemantics. 4382102550Siwasaki 4383102550Siwasaki2) Linux: 4384102550Siwasaki 4385102550Siwasakiacpiphp update (Takayoshi Kochi) 4386102550Siwasaki 4387102550SiwasakiExport acpi_disabled for sonypi (Stelian Pop) 4388114237Snjl 4389114237SnjlMention acpismp=force in config help 4390114237Snjl 4391126372SnjlRe-add acpitable.c and acpismp=force. This improves backwards 4392126372Snjl 4393126372Snjlcompatibility and also cleans up the code to a significant 4394102550Siwasakidegree. 4395114237Snjl 4396114237SnjlAdd ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 4397114237Snjl 4398114237Snjl---------------------------------------- 4399102550Siwasaki22 May 2003. Summary of changes for version 20030522: 4400104470Siwasaki 4401104470Siwasaki1) ACPI CA Core Subsystem: 4402102550Siwasaki 4403102550SiwasakiFound and fixed a reported problem where an AE_NOT_FOUND error 4404114237Snjloccurred occasionally during _BST evaluation. This turned out to 4405114237Snjlbe an Owner ID allocation issue where a called method did not get 4406102550Siwasakia new ID assigned to it. Eventually, (after 64k calls), the 4407102550SiwasakiOwner 4408126372SnjlID UINT16 would wraparound so that the ID would be the same as 4409126372Snjlthe 4410126372Snjlcaller's and the called method would delete the caller's 4411126372Snjlnamespace. 4412126372Snjl 4413126372SnjlImplemented extended error reporting for control methods that are 4414126372Snjlaborted due to a run-time exception. Output includes the exact 4415126372SnjlAML instruction that caused the method abort, a dump of the 4416126372Snjlmethod 4417102550Siwasakilocals and arguments at the time of the abort, and a trace of all 4418102550Siwasakinested control method calls. 4419104470Siwasaki 4420104470SiwasakiModified the interpreter to allow the creation of buffers of zero 4421102550Siwasakilength from the AML code. Implemented new code to ensure that no 4422104470Siwasakiattempt is made to actually allocate a memory buffer (of length 4423104470Siwasakizero) - instead, a simple buffer object with a NULL buffer 4424102550Siwasakipointer 4425102550Siwasakiand length zero is created. A warning is no longer issued when 4426102550Siwasakithe AML attempts to create a zero-length buffer. 4427102550Siwasaki 4428104470SiwasakiImplemented a workaround for the "leading asterisk issue" in 4429104470Siwasaki_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 4430126372Snjlasterisk is automatically removed if present in any HID, UID, or 4431126372SnjlCID strings. The iASL compiler will still flag this asterisk as 4432102550Siwasakian error, however. 4433114237Snjl 4434114237SnjlImplemented full support for _CID methods that return a package 4435102550Siwasakiof 4436102550Siwasakimultiple CIDs (Compatible IDs). The AcpiGetObjectInfo() 4437102550Siwasakiinterface 4438102550Siwasakinow additionally returns a device _CID list if present. This 4439102550Siwasakirequired a change to the external interface in order to pass an 4440102550SiwasakiACPI_BUFFER object as a parameter since the _CID list is of 4441102550Siwasakivariable length. 4442102550Siwasaki 4443102550SiwasakiFixed a problem with the new AE_SAME_HANDLER exception where 4444102550Siwasakihandler initialization code did not know about this exception. 4445102550Siwasaki 4446102550SiwasakiCode and Data Size: Current and previous core subsystem library 4447114237Snjlsizes are shown below. These are the code and data sizes for the 4448114237Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 4449114237Snjlthese values do not include any ACPI driver or OSPM code. The 4450102550Siwasakidebug version of the code includes the debug output trace 4451104470Siwasakimechanism and has a much larger code and data size. Note that 4452104470Siwasakithese values will vary depending on the efficiency of the 4453104470Siwasakicompiler 4454104470Siwasakiand the compiler options used during generation. 4455114237Snjl 4456114237Snjl Previous Release (20030509): 4457104470Siwasaki Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 4458104470Siwasaki Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 4459104470Siwasaki Current Release: 4460104470Siwasaki Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 4461102550Siwasaki Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 4462114237Snjl 4463102550Siwasaki 4464114237Snjl2) Linux: 4465114237Snjl 4466102550SiwasakiFixed a bug in which we would reinitialize the ACPI interrupt 4467114237Snjlafter it was already working, thus disabling all ACPI and the 4468114237SnjlIRQs 4469114237Snjlfor any other device sharing the interrupt. (Thanks to Stian 4470114237SnjlJordet) 4471102550Siwasaki 4472102550SiwasakiToshiba driver update (John Belmonte) 4473126372Snjl 4474126372SnjlReturn only 0 or 1 for our interrupt handler status (Andrew 4475102550SiwasakiMorton) 4476104470Siwasaki 4477104470Siwasaki 4478102550Siwasaki3) iASL Compiler: 4479104470Siwasaki 4480104470SiwasakiFixed a reported problem where multiple (nested) ElseIf() 4481104470Siwasakistatements were not handled correctly by the compiler, resulting 4482104470Siwasakiin incorrect warnings and incorrect AML code. This was a problem 4483102550Siwasakiin both the ASL parser and the code generator. 4484102550Siwasaki 4485102550Siwasaki 4486102550Siwasaki4) Documentation: 4487102550Siwasaki 4488126372SnjlAdded changes to existing interfaces, new exception codes, and 4489126372Snjlnew 4490102550Siwasakitext concerning reference count object management versus garbage 4491114237Snjlcollection. 4492114237Snjl 4493102550Siwasaki---------------------------------------- 4494102550Siwasaki09 May 2003. Summary of changes for version 20030509. 4495102550Siwasaki 4496102550Siwasaki 4497102550Siwasaki1) ACPI CA Core Subsystem: 4498102550Siwasaki 4499114237SnjlChanged the subsystem initialization sequence to hold off 4500114237Snjlinstallation of address space handlers until the hardware has 4501114237Snjlbeen 4502114237Snjlinitialized and the system has entered ACPI mode. This is 4503102550Siwasakibecause 4504102550Siwasakithe installation of space handlers can cause _REG methods to be 4505114237Snjlrun. Previously, the _REG methods could potentially be run 4506114237Snjlbefore 4507114237SnjlACPI mode was enabled. 4508102550Siwasaki 4509114237SnjlFixed some memory leak issues related to address space handler 4510114237Snjland 4511114237Snjlnotify handler installation. There were some problems with the 4512114237Snjlreference count mechanism caused by the fact that the handler 4513114237Snjlobjects are shared across several namespace objects. 4514114237Snjl 4515114237SnjlFixed a reported problem where reference counts within the 4516102550Siwasakinamespace were not properly updated when named objects created by 4517114237Snjlmethod execution were deleted. 4518114237Snjl 4519114237SnjlFixed a reported problem where multiple SSDTs caused a deletion 4520114237Snjlissue during subsystem termination. Restructured the table data 4521114237Snjlstructures to simplify the linked lists and the related code. 4522126372Snjl 4523126372SnjlFixed a problem where the table ID associated with secondary 4524126372Snjltables (SSDTs) was not being propagated into the namespace 4525126372Snjlobjects 4526102550Siwasakicreated by those tables. This would only present a problem for 4527104470Siwasakitables that are unloaded at run-time, however. 4528104470Siwasaki 4529104470SiwasakiUpdated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 4530104470Siwasakitype as the length parameter (instead of UINT32). 4531104470Siwasaki 4532126372SnjlSolved a long-standing problem where an ALREADY_EXISTS error 4533126372Snjlappears on various systems. This problem could happen when there 4534126372Snjlare multiple PCI_Config operation regions under a single PCI root 4535126372Snjlbus. This doesn't happen very frequently, but there are some 4536126372Snjlsystems that do this in the ASL. 4537102550Siwasaki 4538102550SiwasakiFixed a reported problem where the internal DeleteNode function 4539114237Snjlwas incorrectly handling the case where a namespace node was the 4540114237Snjlfirst in the parent's child list, and had additional peers (not 4541102550Siwasakithe only child, but first in the list of children.) 4542114237Snjl 4543114237SnjlCode and Data Size: Current core subsystem library sizes are 4544114237Snjlshown 4545102550Siwasakibelow. These are the code and data sizes for the acpica.lib 4546126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 4547126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 4548126372Snjlversion of the code includes the debug output trace mechanism and 4549126372Snjlhas a much larger code and data size. Note that these values 4550126372Snjlwill 4551126372Snjlvary depending on the efficiency of the compiler and the compiler 4552126372Snjloptions used during generation. 4553126372Snjl 4554126372Snjl Previous Release 4555102550Siwasaki Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 4556102550Siwasaki Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 4557104470Siwasaki Current Release: 4558104470Siwasaki Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 4559102550Siwasaki Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 4560104470Siwasaki 4561104470Siwasaki 4562102550Siwasaki2) Linux: 4563102550Siwasaki 4564102550SiwasakiAllow ":" in OS override string (Ducrot Bruno) 4565102550Siwasaki 4566102550SiwasakiKobject fix (Greg KH) 4567102550Siwasaki 4568102550Siwasaki 4569102550Siwasaki3 iASL Compiler/Disassembler: 4570102550Siwasaki 4571104470SiwasakiFixed a problem in the generation of the C source code files (AML 4572104470Siwasakiis emitted in C source statements for BIOS inclusion) where the 4573114237SnjlAscii dump that appears within a C comment at the end of each 4574114237Snjlline 4575102550Siwasakicould cause a compile time error if the AML sequence happens to 4576104470Siwasakihave an open comment or close comment sequence embedded. 4577104470Siwasaki 4578104470Siwasaki 4579102550Siwasaki---------------------------------------- 4580102550Siwasaki24 April 2003. Summary of changes for version 20030424. 4581102550Siwasaki 4582102550Siwasaki 4583102550Siwasaki1) ACPI CA Core Subsystem: 4584102550Siwasaki 4585102550SiwasakiSupport for big-endian systems has been implemented. Most of the 4586104470Siwasakisupport has been invisibly added behind big-endian versions of 4587114237Snjlthe 4588126372SnjlACPI_MOVE_* macros. 4589126372Snjl 4590102550SiwasakiFixed a problem in AcpiHwDisableGpeBlock() and 4591104470SiwasakiAcpiHwClearGpeBlock() where an incorrect offset was passed to the 4592126372Snjllow level hardware write routine. The offset parameter was 4593126372Snjlactually eliminated from the low level read/write routines 4594126372Snjlbecause 4595126372Snjlthey had become obsolete. 4596126372Snjl 4597126372SnjlFixed a problem where a handler object was deleted twice during 4598126372Snjlthe removal of a fixed event handler. 4599102550Siwasaki 4600104470Siwasaki 4601114237Snjl2) Linux: 4602114237Snjl 4603114237SnjlA fix for SMP systems with link devices was contributed by 4604114237Snjl 4605114237SnjlCompaq's Dan Zink. 4606114237Snjl 4607102550Siwasaki(2.5) Return whether we handled the interrupt in our IRQ handler. 4608104470Siwasaki(Linux ISRs no longer return void, so we can propagate the 4609126372Snjlhandler 4610126372Snjlreturn value from the ACPI CA core back to the OS.) 4611126372Snjl 4612126372Snjl 4613102550Siwasaki 4614102550Siwasaki3) Documentation: 4615114237Snjl 4616114237SnjlThe ACPI CA Programmer Reference has been updated to reflect new 4617102550Siwasakiinterfaces and changes to existing interfaces. 4618102550Siwasaki 4619102550Siwasaki---------------------------------------- 4620102550Siwasaki28 March 2003. Summary of changes for version 20030328. 4621102550Siwasaki 4622102550Siwasaki1) ACPI CA Core Subsystem: 4623114237Snjl 4624114237SnjlThe GPE Block Device support has been completed. New interfaces 4625104470Siwasakiare AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 4626102550Siwasakiinterfaces (enable, disable, clear, getstatus) have been split 4627102550Siwasakiinto separate interfaces for Fixed Events and General Purpose 4628126372SnjlEvents (GPEs) in order to support GPE Block Devices properly. 4629126372Snjl 4630126372SnjlFixed a problem where the error message "Failed to acquire 4631126372Snjlsemaphore" would appear during operations on the embedded 4632126372Snjlcontroller (EC). 4633126372Snjl 4634126372SnjlCode and Data Size: Current core subsystem library sizes are 4635126372Snjlshown 4636126372Snjlbelow. These are the code and data sizes for the acpica.lib 4637102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 4638102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 4639104470Siwasakiversion of the code includes the debug output trace mechanism and 4640104470Siwasakihas a much larger code and data size. Note that these values 4641102550Siwasakiwill 4642104470Siwasakivary depending on the efficiency of the compiler and the compiler 4643104470Siwasakioptions used during generation. 4644102550Siwasaki 4645102550Siwasaki Previous Release 4646102550Siwasaki Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 4647102550Siwasaki Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 4648114237Snjl Current Release: 4649114237Snjl Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 4650114237Snjl Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 4651114237Snjl 4652114237Snjl 4653114237Snjl---------------------------------------- 4654114237Snjl28 February 2003. Summary of changes for version 20030228. 4655114237Snjl 4656114237Snjl 4657114237Snjl1) ACPI CA Core Subsystem: 4658102550Siwasaki 4659114237SnjlThe GPE handling and dispatch code has been completely overhauled 4660114237Snjlin preparation for support of GPE Block Devices (ID ACPI0006). 4661114237SnjlThis affects internal data structures and code only; there should 4662114237Snjlbe no differences visible externally. One new file has been 4663114237Snjladded, evgpeblk.c 4664102550Siwasaki 4665104470SiwasakiThe FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 4666104470Siwasakifields that are used to determine the GPE block lengths. The 4667102550SiwasakiREGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 4668104470Siwasakistructures are ignored. This is per the ACPI specification but 4669104470Siwasakiit 4670102550Siwasakiisn't very clear. The full 256 Block 0/1 GPEs are now supported 4671114237Snjl(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 4672114237Snjl128). 4673102550Siwasaki 4674102550SiwasakiIn the SCI interrupt handler, removed the read of the PM1_CONTROL 4675114237Snjlregister to look at the SCI_EN bit. On some machines, this read 4676114237Snjlcauses an SMI event and greatly slows down SCI events. (This may 4677102550Siwasakiin fact be the cause of slow battery status response on some 4678114237Snjlsystems.) 4679114237Snjl 4680102550SiwasakiFixed a problem where a store of a NULL string to a package 4681102550Siwasakiobject 4682102550Siwasakicould cause the premature deletion of the object. This was seen 4683102550Siwasakiduring execution of the battery _BIF method on some systems, 4684102550Siwasakiresulting in no battery data being returned. 4685102550Siwasaki 4686104470SiwasakiAdded AcpiWalkResources interface to simplify parsing of resource 4687104470Siwasakilists. 4688102550Siwasaki 4689102550SiwasakiCode and Data Size: Current core subsystem library sizes are 4690126372Snjlshown 4691126372Snjlbelow. These are the code and data sizes for the acpica.lib 4692102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 4693102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 4694126372Snjlversion of the code includes the debug output trace mechanism and 4695126372Snjlhas a much larger code and data size. Note that these values 4696102550Siwasakiwill 4697114237Snjlvary depending on the efficiency of the compiler and the compiler 4698114237Snjloptions used during generation. 4699102550Siwasaki 4700102550Siwasaki Previous Release 4701102550Siwasaki Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 4702102550Siwasaki Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 4703102550Siwasaki Current Release: 4704102550Siwasaki Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 4705102550Siwasaki Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 4706102550Siwasaki 4707102550Siwasaki 4708102550Siwasaki2) Linux 4709114237Snjl 4710114237SnjlS3 fixes (Ole Rohne) 4711126372Snjl 4712126372SnjlUpdate ACPI PHP driver with to use new acpi_walk_resource API 4713102550Siwasaki(Bjorn Helgaas) 4714102550Siwasaki 4715126372SnjlAdd S4BIOS support (Pavel Machek) 4716126372Snjl 4717126372SnjlMap in entire table before performing checksum (John Stultz) 4718126372Snjl 4719102550SiwasakiExpand the mem= cmdline to allow the specification of reserved 4720114237Snjland 4721114237SnjlACPI DATA blocks (Pavel Machek) 4722114237Snjl 4723114237SnjlNever use ACPI on VISWS 4724102550Siwasaki 4725102550SiwasakiFix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 4726102550Siwasaki 4727102550SiwasakiRevert a change that allowed P_BLK lengths to be 4 or 5. This is 4728104470Siwasakicausing us to think that some systems support C2 when they really 4729104470Siwasakidon't. 4730102550Siwasaki 4731114237SnjlDo not count processor objects for non-present CPUs (Thanks to 4732126372SnjlDominik Brodowski) 4733126372Snjl 4734126372Snjl 4735102550Siwasaki3) iASL Compiler: 4736102550Siwasaki 4737102550SiwasakiFixed a problem where ASL include files could not be found and 4738102550Siwasakiopened. 4739102550Siwasaki 4740102550SiwasakiAdded support for the _PDC reserved name. 4741102550Siwasaki 4742102550Siwasaki 4743102550Siwasaki---------------------------------------- 4744102550Siwasaki22 January 2003. Summary of changes for version 20030122. 4745102550Siwasaki 4746102550Siwasaki 4747102550Siwasaki1) ACPI CA Core Subsystem: 4748102550Siwasaki 4749102550SiwasakiAdded a check for constructs of the form: Store (Local0, Local0) 4750102550Siwasakiwhere Local0 is not initialized. Apparently, some BIOS 4751104470Siwasakiprogrammers believe that this is a NOOP. Since this store 4752126372Snjldoesn't 4753126372Snjldo anything anyway, the new prototype behavior will ignore this 4754114237Snjlerror. This is a case where we can relax the strict checking in 4755114237Snjlthe interpreter in the name of compatibility. 4756114237Snjl 4757102550Siwasaki 4758102550Siwasaki2) Linux 4759102550Siwasaki 4760102550SiwasakiThe AcpiSrc Source Conversion Utility has been released with the 4761114237SnjlLinux package for the first time. This is the utility that is 4762114237Snjlused to convert the ACPI CA base source code to the Linux 4763102550Siwasakiversion. 4764102550Siwasaki 4765126372Snjl(Both) Handle P_BLK lengths shorter than 6 more gracefully 4766126372Snjl 4767102550Siwasaki(Both) Move more headers to include/acpi, and delete an unused 4768102550Siwasakiheader. 4769102550Siwasaki 4770102550Siwasaki(Both) Move drivers/acpi/include directory to include/acpi 4771114237Snjl 4772102550Siwasaki(Both) Boot functions don't use cmdline, so don't pass it around 4773114237Snjl 4774102550Siwasaki(Both) Remove include of unused header (Adrian Bunk) 4775104470Siwasaki 4776104470Siwasaki(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 4777102550Siwasakithe 4778102550Siwasakiformer now also includes the latter, acpiphp.h only needs the 4779102550Siwasakione, 4780102550Siwasakinow. 4781102550Siwasaki 4782102550Siwasaki(2.5) Make it possible to select method of bios restoring after 4783102550SiwasakiS3 4784102550Siwasakiresume. [=> no more ugly ifdefs] (Pavel Machek) 4785102550Siwasaki 4786102550Siwasaki(2.5) Make proc write interfaces work (Pavel Machek) 4787114237Snjl 4788114237Snjl(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 4789102550Siwasaki 4790114237Snjl(2.5) Break out ACPI Perf code into its own module, under cpufreq 4791114237Snjl(Dominik Brodowski) 4792126372Snjl 4793126372Snjl(2.4) S4BIOS support (Ducrot Bruno) 4794126372Snjl 4795126372Snjl(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 4796102550SiwasakiVisinoni) 4797114237Snjl 4798114237Snjl 4799102550Siwasaki3) iASL Compiler: 4800102550Siwasaki 4801126372SnjlAdded support to disassemble SSDT and PSDTs. 4802126372Snjl 4803126372SnjlImplemented support to obtain SSDTs from the Windows registry if 4804102550Siwasakiavailable. 4805104470Siwasaki 4806104470Siwasaki 4807104470Siwasaki---------------------------------------- 4808114237Snjl09 January 2003. Summary of changes for version 20030109. 4809102550Siwasaki 4810114237Snjl1) ACPI CA Core Subsystem: 4811114237Snjl 4812126372SnjlChanged the behavior of the internal Buffer-to-String conversion 4813126372Snjlfunction. The current ACPI specification states that the 4814102550Siwasakicontents 4815102550Siwasakiof the buffer are "converted to a string of two-character 4816126372Snjlhexadecimal numbers, each separated by a space". Unfortunately, 4817126372Snjlthis definition is not backwards compatible with existing ACPI 4818126372Snjl1.0 4819126372Snjlimplementations (although the behavior was not defined in the 4820126372SnjlACPI 4821126372Snjl1.0 specification). The new behavior simply copies data from the 4822126372Snjlbuffer to the string until a null character is found or the end 4823126372Snjlof 4824126372Snjlthe buffer is reached. The new String object is always null 4825102550Siwasakiterminated. This problem was seen during the generation of _BIF 4826102550Siwasakibattery data where incorrect strings were returned for battery 4827126372Snjltype, etc. This will also require an errata to the ACPI 4828126372Snjlspecification. 4829126372Snjl 4830126372SnjlRenamed all instances of NATIVE_UINT and NATIVE_INT to 4831126372SnjlACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 4832126372Snjl 4833126372SnjlCopyright in all module headers (both Linux and non-Linux) has be 4834126372Snjlupdated to 2003. 4835126372Snjl 4836102550SiwasakiCode and Data Size: Current core subsystem library sizes are 4837102550Siwasakishown 4838104470Siwasakibelow. These are the code and data sizes for the acpica.lib 4839104470Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 4840102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 4841104470Siwasakiversion of the code includes the debug output trace mechanism and 4842104470Siwasakihas a much larger code and data size. Note that these values 4843102550Siwasakiwill 4844102550Siwasakivary depending on the efficiency of the compiler and the compiler 4845102550Siwasakioptions used during generation. 4846102550Siwasaki 4847102550Siwasaki Previous Release 4848102550Siwasaki Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 4849102550Siwasaki Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 4850114237Snjl Current Release: 4851114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 4852102550Siwasaki Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 4853102550Siwasaki 4854102550Siwasaki 4855102550Siwasaki2) Linux 4856102550Siwasaki 4857102550SiwasakiFixed an oops on module insertion/removal (Matthew Tippett) 4858104470Siwasaki 4859102550Siwasaki(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 4860102550Siwasaki 4861102550Siwasaki(2.5) Replace pr_debug (Randy Dunlap) 4862102550Siwasaki 4863102550Siwasaki(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 4864102550Siwasaki 4865114237Snjl(Both) Eliminate spawning of thread from timer callback, in favor 4866114237Snjlof schedule_work() 4867114237Snjl 4868126372Snjl(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 4869126372Snjl 4870126372Snjl(Both) Added define for Fixed Function HW region (Matthew Wilcox) 4871102550Siwasaki 4872102550Siwasaki(Both) Add missing statics to button.c (Pavel Machek) 4873126372Snjl 4874126372SnjlSeveral changes have been made to the source code translation 4875126372Snjlutility that generates the Linux Code in order to make the code 4876102550Siwasakimore "Linux-like": 4877102550Siwasaki 4878102550SiwasakiAll typedefs on structs and unions have been removed in keeping 4879102550Siwasakiwith the Linux coding style. 4880102550Siwasaki 4881102550SiwasakiRemoved the non-Linux SourceSafe module revision number from each 4882102550Siwasakimodule header. 4883114237Snjl 4884114237SnjlCompleted major overhaul of symbols to be lowercased for linux. 4885114237SnjlDoubled the number of symbols that are lowercased. 4886104470Siwasaki 4887126372SnjlFixed a problem where identifiers within procedure headers and 4888126372Snjlwithin quotes were not fully lower cased (they were left with a 4889126372Snjlstarting capital.) 4890102550Siwasaki 4891114237SnjlSome C macros whose only purpose is to allow the generation of 16- 4892114237Snjlbit code are now completely removed in the Linux code, increasing 4893114237Snjlreadability and maintainability. 4894114237Snjl 4895114237Snjl---------------------------------------- 4896126372Snjl 4897126372Snjl12 December 2002. Summary of changes for version 20021212. 4898126372Snjl 4899126372Snjl 4900126372Snjl1) ACPI CA Core Subsystem: 4901102550Siwasaki 4902102550SiwasakiFixed a problem where the creation of a zero-length AML Buffer 4903102550Siwasakiwould cause a fault. 4904102550Siwasaki 4905114237SnjlFixed a problem where a Buffer object that pointed to a static 4906114237SnjlAML 4907114237Snjlbuffer (in an ACPI table) could inadvertently be deleted, causing 4908102550Siwasakimemory corruption. 4909102550Siwasaki 4910104470SiwasakiFixed a problem where a user buffer (passed in to the external 4911104470SiwasakiACPI CA interfaces) could be overwritten if the buffer was too 4912102550Siwasakismall to complete the operation, causing memory corruption. 4913114237Snjl 4914114237SnjlFixed a problem in the Buffer-to-String conversion code where a 4915114237Snjlstring of length one was always returned, regardless of the size 4916126372Snjlof the input Buffer object. 4917126372Snjl 4918102550SiwasakiRemoved the NATIVE_CHAR data type across the entire source due to 4919104470Siwasakilack of need and lack of consistent use. 4920104470Siwasaki 4921114237SnjlCode and Data Size: Current core subsystem library sizes are 4922114237Snjlshown 4923114237Snjlbelow. These are the code and data sizes for the acpica.lib 4924114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 4925102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 4926114237Snjlversion of the code includes the debug output trace mechanism and 4927114237Snjlhas a much larger code and data size. Note that these values 4928102550Siwasakiwill 4929102550Siwasakivary depending on the efficiency of the compiler and the compiler 4930102550Siwasakioptions used during generation. 4931102550Siwasaki 4932102550Siwasaki Previous Release 4933104470Siwasaki Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 4934102550Siwasaki Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 4935114237Snjl Current Release: 4936114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 4937102550Siwasaki Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 4938102550Siwasaki 4939102550Siwasaki 4940102550Siwasaki---------------------------------------- 4941102550Siwasaki05 December 2002. Summary of changes for version 20021205. 4942102550Siwasaki 4943102550Siwasaki1) ACPI CA Core Subsystem: 4944114237Snjl 4945126372SnjlFixed a problem where a store to a String or Buffer object could 4946126372Snjlcause corruption of the DSDT if the object type being stored was 4947114237Snjlthe same as the target object type and the length of the object 4948102550Siwasakibeing stored was equal to or smaller than the original (existing) 4949104470Siwasakitarget object. This was seen to cause corruption of battery _BIF 4950126372Snjlbuffers if the _BIF method modified the buffer on the fly. 4951126372Snjl 4952102550SiwasakiFixed a problem where an internal error was generated if a 4953114237Snjlcontrol 4954114237Snjlmethod invocation was used in an OperationRegion, Buffer, or 4955102550SiwasakiPackage declaration. This was caused by the deferred parsing of 4956102550Siwasakithe control method and thus the deferred creation of the internal 4957102550Siwasakimethod object. The solution to this problem was to create the 4958102550Siwasakiinternal method object at the moment the method is encountered in 4959102550Siwasakithe first pass - so that subsequent references to the method will 4960126372Snjlable to obtain the required parameter count and thus properly 4961126372Snjlparse the method invocation. This problem presented itself as an 4962102550SiwasakiAE_AML_INTERNAL during the pass 1 parse phase during table load. 4963102550Siwasaki 4964126372SnjlFixed a problem where the internal String object copy routine did 4965126372Snjlnot always allocate sufficient memory for the target String 4966114237Snjlobject 4967114237Snjland caused memory corruption. This problem was seen to cause 4968114237Snjl"Allocation already present in list!" errors as memory allocation 4969114237Snjlbecame corrupted. 4970126372Snjl 4971126372SnjlImplemented a new function for the evaluation of namespace 4972114237Snjlobjects 4973102550Siwasakithat allows the specification of the allowable return object 4974102550Siwasakitypes. This simplifies a lot of code that checks for a return 4975114237Snjlobject of one or more specific objects returned from the 4976114237Snjlevaluation (such as _STA, etc.) This may become and external 4977102550Siwasakifunction if it would be useful to ACPI-related drivers. 4978114237Snjl 4979114237SnjlCompleted another round of prefixing #defines with "ACPI_" for 4980102550Siwasakiclarity. 4981102550Siwasaki 4982102550SiwasakiCompleted additional code restructuring to allow more modular 4983104470Siwasakilinking for iASL compiler and AcpiExec. Several files were split 4984104470Siwasakicreating new files. New files: nsparse.c dsinit.c evgpe.c 4985102550Siwasaki 4986102550SiwasakiImplemented an abort mechanism to terminate an executing control 4987102550Siwasakimethod via the AML debugger. This feature is useful for 4988102550Siwasakidebugging 4989102550Siwasakicontrol methods that depend (wait) for specific hardware 4990102550Siwasakiresponses. 4991102550Siwasaki 4992102550SiwasakiCode and Data Size: Current core subsystem library sizes are 4993102550Siwasakishown 4994104470Siwasakibelow. These are the code and data sizes for the acpica.lib 4995102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 4996104470Siwasakivalues do not include any ACPI driver or OSPM code. The debug 4997102550Siwasakiversion of the code includes the debug output trace mechanism and 4998102550Siwasakihas a much larger code and data size. Note that these values 4999102550Siwasakiwill 5000102550Siwasakivary depending on the efficiency of the compiler and the compiler 5001102550Siwasakioptions used during generation. 5002114237Snjl 5003126372Snjl Previous Release 5004126372Snjl Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 5005126372Snjl Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 5006126372Snjl Current Release: 5007126372Snjl Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 5008126372Snjl Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 5009126372Snjl 5010126372Snjl 5011102550Siwasaki2) iASL Compiler/Disassembler 5012102550Siwasaki 5013102550SiwasakiFixed a compiler code generation problem for "Interrupt" Resource 5014102550SiwasakiDescriptors. If specified in the ASL, the optional "Resource 5015104470SiwasakiSource Index" and "Resource Source" fields were not inserted into 5016114237Snjlthe correct location within the AML resource descriptor, creating 5017114237Snjlan invalid descriptor. 5018114237Snjl 5019114237SnjlFixed a disassembler problem for "Interrupt" resource 5020102550Siwasakidescriptors. 5021104470SiwasakiThe optional "Resource Source Index" and "Resource Source" fields 5022104470Siwasakiwere ignored. 5023102550Siwasaki 5024102550Siwasaki 5025102550Siwasaki---------------------------------------- 5026102550Siwasaki22 November 2002. Summary of changes for version 20021122. 5027102550Siwasaki 5028102550Siwasaki 5029102550Siwasaki1) ACPI CA Core Subsystem: 5030102550Siwasaki 5031102550SiwasakiFixed a reported problem where an object stored to a Method Local 5032102550Siwasakior Arg was not copied to a new object during the store - the 5033102550Siwasakiobject pointer was simply copied to the Local/Arg. This caused 5034102550Siwasakiall subsequent operations on the Local/Arg to also affect the 5035102550Siwasakioriginal source of the store operation. 5036102550Siwasaki 5037114237SnjlFixed a problem where a store operation to a Method Local or Arg 5038114237Snjlwas not completed properly if the Local/Arg contained a reference 5039102550Siwasaki(from RefOf) to a named field. The general-purpose store-to- 5040114237Snjlnamespace-node code is now used so that this case is handled 5041114237Snjlautomatically. 5042102550Siwasaki 5043102550SiwasakiFixed a problem where the internal object copy routine would 5044102550Siwasakicause 5045102550Siwasakia protection fault if the object being copied was a Package and 5046102550Siwasakicontained either 1) a NULL package element or 2) a nested sub- 5047104470Siwasakipackage. 5048126372Snjl 5049126372SnjlFixed a problem with the GPE initialization that resulted from an 5050102550Siwasakiambiguity in the ACPI specification. One section of the 5051102550Siwasakispecification states that both the address and length of the GPE 5052102550Siwasakiblock must be zero if the block is not supported. Another 5053104470Siwasakisection 5054126372Snjlimplies that only the address need be zero if the block is not 5055126372Snjlsupported. The code has been changed so that both the address 5056126372Snjland 5057126372Snjlthe length must be non-zero to indicate a valid GPE block (i.e., 5058126372Snjlif either the address or the length is zero, the GPE block is 5059126372Snjlinvalid.) 5060126372Snjl 5061102550SiwasakiCode and Data Size: Current core subsystem library sizes are 5062104470Siwasakishown 5063102550Siwasakibelow. These are the code and data sizes for the acpica.lib 5064114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 5065126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 5066126372Snjlversion of the code includes the debug output trace mechanism and 5067126372Snjlhas a much larger code and data size. Note that these values 5068102550Siwasakiwill 5069102550Siwasakivary depending on the efficiency of the compiler and the compiler 5070114237Snjloptions used during generation. 5071114237Snjl 5072114237Snjl Previous Release 5073102550Siwasaki Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 5074114237Snjl Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 5075114237Snjl Current Release: 5076104470Siwasaki Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 5077126372Snjl Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 5078126372Snjl 5079126372Snjl 5080102550Siwasaki2) Linux 5081102550Siwasaki 5082102550SiwasakiCleaned up EC driver. Exported an external EC read/write 5083102550Siwasakiinterface. By going through this, other drivers (most notably 5084126372Snjlsonypi) will be able to serialize access to the EC. 5085126372Snjl 5086114237Snjl 5087114237Snjl3) iASL Compiler/Disassembler 5088114237Snjl 5089114237SnjlImplemented support to optionally generate include files for both 5090114237SnjlASM and C (the -i switch). This simplifies BIOS development by 5091114237Snjlautomatically creating include files that contain external 5092102550Siwasakideclarations for the symbols that are created within the 5093102550Siwasaki 5094114237Snjl(optionally generated) ASM and C AML source files. 5095114237Snjl 5096102550Siwasaki 5097114237Snjl---------------------------------------- 5098114237Snjl15 November 2002. Summary of changes for version 20021115. 5099102550Siwasaki 5100102550Siwasaki1) ACPI CA Core Subsystem: 5101102550Siwasaki 5102114237SnjlFixed a memory leak problem where an error during resolution of 5103114237Snjl 5104102550Siwasakimethod arguments during a method invocation from another method 5105102550Siwasakifailed to cleanup properly by deleting all successfully resolved 5106102550Siwasakiargument objects. 5107102550Siwasaki 5108102550SiwasakiFixed a problem where the target of the Index() operator was not 5109102550Siwasakicorrectly constructed if the source object was a package. This 5110102550Siwasakiproblem has not been detected because the use of a target operand 5111102550Siwasakiwith Index() is very rare. 5112102550Siwasaki 5113102550SiwasakiFixed a problem with the Index() operator where an attempt was 5114104470Siwasakimade to delete the operand objects twice. 5115104470Siwasaki 5116102550SiwasakiFixed a problem where an attempt was made to delete an operand 5117102550Siwasakitwice during execution of the CondRefOf() operator if the target 5118102550Siwasakidid not exist. 5119102550Siwasaki 5120114237SnjlImplemented the first of perhaps several internal create object 5121114237Snjlfunctions that create and initialize a specific object type. 5122114237SnjlThis 5123102550Siwasakiconsolidates duplicated code wherever the object is created, thus 5124114237Snjlshrinking the size of the subsystem. 5125114237Snjl 5126114237SnjlImplemented improved debug/error messages for errors that occur 5127102550Siwasakiduring nested method invocations. All executing method pathnames 5128114237Snjlare displayed (with the error) as the call stack is unwound - 5129114237Snjlthus 5130114237Snjlsimplifying debug. 5131114237Snjl 5132102550SiwasakiFixed a problem introduced in the 10/02 release that caused 5133114237Snjlpremature deletion of a buffer object if a buffer was used as an 5134114237SnjlASL operand where an integer operand is required (Thus causing an 5135114237Snjlimplicit object conversion from Buffer to Integer.) The change 5136126372Snjlin 5137126372Snjlthe 10/02 release was attempting to fix a memory leak (albeit 5138126372Snjlincorrectly.) 5139126372Snjl 5140102550SiwasakiCode and Data Size: Current core subsystem library sizes are 5141114237Snjlshown 5142114237Snjlbelow. These are the code and data sizes for the acpica.lib 5143102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 5144114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 5145114237Snjlversion of the code includes the debug output trace mechanism and 5146114237Snjlhas a much larger code and data size. Note that these values 5147102550Siwasakiwill 5148102550Siwasakivary depending on the efficiency of the compiler and the compiler 5149126372Snjloptions used during generation. 5150126372Snjl 5151114237Snjl Previous Release 5152114237Snjl Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 5153114237Snjl Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 5154114237Snjl Current Release: 5155126372Snjl Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 5156126372Snjl Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 5157114237Snjl 5158102550Siwasaki 5159102550Siwasaki2) Linux 5160114237Snjl 5161114237SnjlChanged the implementation of the ACPI semaphores to use down() 5162102550Siwasakiinstead of down_interruptable(). It is important that the 5163102550Siwasakiexecution of ACPI control methods not be interrupted by signals. 5164114237SnjlMethods must run to completion, or the system may be left in an 5165114237Snjlunknown/unstable state. 5166102550Siwasaki 5167102550SiwasakiFixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not 5168102550Siwasakiset. 5169102550Siwasaki(Shawn Starr) 5170102550Siwasaki 5171104470Siwasaki 5172114237Snjl3) iASL Compiler/Disassembler 5173114237Snjl 5174114237Snjl 5175114237SnjlChanged the default location of output files. All output files 5176114237Snjlare now placed in the current directory by default instead of in 5177102550Siwasakithe directory of the source file. This change may affect some 5178114237Snjlexisting makefiles, but it brings the behavior of the compiler in 5179114237Snjlline with other similar tools. The location of the output files 5180114237Snjlcan be overridden with the -p command line switch. 5181114237Snjl 5182114237Snjl 5183126372Snjl---------------------------------------- 5184126372Snjl11 November 2002. Summary of changes for version 20021111. 5185102550Siwasaki 5186104470Siwasaki 5187104470Siwasaki0) ACPI Specification 2.0B is released and is now available at: 5188104470Siwasakihttp://www.acpi.info/index.html 5189102550Siwasaki 5190102550Siwasaki 5191102550Siwasaki1) ACPI CA Core Subsystem: 5192102550Siwasaki 5193102550SiwasakiImplemented support for the ACPI 2.0 SMBus Operation Regions. 5194102550SiwasakiThis includes the early detection and handoff of the request to 5195102550Siwasakithe SMBus region handler (avoiding all of the complex field 5196102550Siwasakisupport code), and support for the bidirectional return packet 5197102550Siwasakifrom an SMBus write operation. This paves the way for the 5198102550Siwasakidevelopment of SMBus drivers in each host operating system. 5199102550Siwasaki 5200102550SiwasakiFixed a problem where the semaphore WAIT_FOREVER constant was 5201102550Siwasakidefined as 32 bits, but must be 16 bits according to the ACPI 5202104470Siwasakispecification. This had the side effect of causing ASL 5203104470SiwasakiMutex/Event timeouts even though the ASL code requested a wait 5204126372Snjlforever. Changed all internal references to the ACPI timeout 5205126372Snjlparameter to 16 bits to prevent future problems. Changed the 5206126372Snjlname 5207102550Siwasakiof WAIT_FOREVER to ACPI_WAIT_FOREVER. 5208104470Siwasaki 5209104470SiwasakiCode and Data Size: Current core subsystem library sizes are 5210102550Siwasakishown 5211102550Siwasakibelow. These are the code and data sizes for the acpica.lib 5212114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 5213102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 5214114237Snjlversion of the code includes the debug output trace mechanism and 5215114237Snjlhas a much larger code and data size. Note that these values 5216114237Snjlwill 5217114237Snjlvary depending on the efficiency of the compiler and the compiler 5218126372Snjloptions used during generation. 5219126372Snjl 5220102550Siwasaki Previous Release 5221102550Siwasaki Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 5222102550Siwasaki Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 5223104470Siwasaki Current Release: 5224126372Snjl Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 5225126372Snjl Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 5226126372Snjl 5227126372Snjl 5228126372Snjl2) Linux 5229126372Snjl 5230126372SnjlModule loading/unloading fixes (John Cagle) 5231126372Snjl 5232126372Snjl 5233126372Snjl3) iASL Compiler/Disassembler 5234126372Snjl 5235102550SiwasakiAdded support for the SMBBlockProcessCall keyword (ACPI 2.0) 5236102550Siwasaki 5237114237SnjlImplemented support for the disassembly of all SMBus protocol 5238114237Snjlkeywords (SMBQuick, SMBWord, etc.) 5239102550Siwasaki 5240102550Siwasaki---------------------------------------- 5241114237Snjl01 November 2002. Summary of changes for version 20021101. 5242114237Snjl 5243102550Siwasaki 5244102550Siwasaki1) ACPI CA Core Subsystem: 5245102550Siwasaki 5246114237SnjlFixed a problem where platforms that have a GPE1 block but no 5247114237SnjlGPE0 5248114237Snjlblock were not handled correctly. This resulted in a "GPE 5249114237Snjloverlap" error message. GPE0 is no longer required. 5250114237Snjl 5251114237SnjlRemoved code added in the previous release that inserted nodes 5252114237Snjlinto the namespace in alphabetical order. This caused some side- 5253114237Snjleffects on various machines. The root cause of the problem is 5254126372Snjlstill under investigation since in theory, the internal ordering 5255126372Snjlof the namespace nodes should not matter. 5256102550Siwasaki 5257114237Snjl 5258114237SnjlEnhanced error reporting for the case where a named object is not 5259114237Snjlfound during control method execution. The full ACPI namepath 5260102550Siwasaki(name reference) of the object that was not found is displayed in 5261102550Siwasakithis case. 5262126372Snjl 5263126372SnjlNote: as a result of the overhaul of the namespace object types 5264102550Siwasakiin 5265102550Siwasakithe previous release, the namespace nodes for the predefined 5266102550Siwasakiscopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 5267114237Snjlinstead of ACPI_TYPE_ANY. This simplifies the namespace 5268114237Snjlmanagement code but may affect code that walks the namespace tree 5269114237Snjllooking for specific object types. 5270114237Snjl 5271102550SiwasakiCode and Data Size: Current core subsystem library sizes are 5272114237Snjlshown 5273114237Snjlbelow. These are the code and data sizes for the acpica.lib 5274114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 5275102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 5276102550Siwasakiversion of the code includes the debug output trace mechanism and 5277102550Siwasakihas a much larger code and data size. Note that these values 5278102550Siwasakiwill 5279102550Siwasakivary depending on the efficiency of the compiler and the compiler 5280102550Siwasakioptions used during generation. 5281102550Siwasaki 5282102550Siwasaki Previous Release 5283114237Snjl Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 5284114237Snjl Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 5285126372Snjl Current Release: 5286126372Snjl Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 5287126372Snjl Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 5288102550Siwasaki 5289104470Siwasaki 5290104470Siwasaki2) Linux 5291104470Siwasaki 5292114237SnjlFixed a problem introduced in the previous release where the 5293114237SnjlProcessor and Thermal objects were not recognized and installed 5294102550Siwasakiin 5295114237Snjl/proc. This was related to the scope type change described 5296114237Snjlabove. 5297102550Siwasaki 5298102550Siwasaki 5299102550Siwasaki3) iASL Compiler/Disassembler 5300102550Siwasaki 5301114237SnjlImplemented the -g option to get all of the required ACPI tables 5302114237Snjlfrom the registry and save them to files (Windows version of the 5303114237Snjlcompiler only.) The required tables are the FADT, FACS, and 5304114237SnjlDSDT. 5305126372Snjl 5306126372SnjlAdded ACPI table checksum validation during table disassembly in 5307126372Snjlorder to catch corrupted tables. 5308126372Snjl 5309102550Siwasaki 5310114237Snjl---------------------------------------- 5311114237Snjl22 October 2002. Summary of changes for version 20021022. 5312114237Snjl 5313114237Snjl1) ACPI CA Core Subsystem: 5314114237Snjl 5315102550SiwasakiImplemented a restriction on the Scope operator that the target 5316114237Snjlmust already exist in the namespace at the time the operator is 5317114237Snjlencountered (during table load or method execution). In other 5318126372Snjlwords, forward references are not allowed and Scope() cannot 5319126372Snjlcreate a new object. This changes the previous behavior where the 5320102550Siwasakiinterpreter would create the name if not found. This new 5321114237Snjlbehavior 5322114237Snjlcorrectly enables the search-to-root algorithm during namespace 5323114237Snjllookup of the target name. Because of this upsearch, this fixes 5324102550Siwasakithe known Compaq _SB_.OKEC problem and makes both the AML 5325102550Siwasakiinterpreter and iASL compiler compatible with other ACPI 5326102550Siwasakiimplementations. 5327102550Siwasaki 5328102550SiwasakiCompleted a major overhaul of the internal ACPI object types for 5329102550Siwasakithe ACPI Namespace and the associated operand objects. Many of 5330102550Siwasakithese types had become obsolete with the introduction of the two- 5331102550Siwasakipass namespace load. This cleanup simplifies the code and makes 5332102550Siwasakithe entire namespace load mechanism much clearer and easier to 5333102550Siwasakiunderstand. 5334114237Snjl 5335114237SnjlImproved debug output for tracking scope opening/closing to help 5336114237Snjldiagnose scoping issues. The old scope name as well as the new 5337126372Snjlscope name are displayed. Also improved error messages for 5338126372Snjlproblems with ASL Mutex objects and error messages for GPE 5339126372Snjlproblems. 5340126372Snjl 5341126372SnjlCleaned up the namespace dump code, removed obsolete code. 5342126372Snjl 5343126372SnjlAll string output (for all namespace/object dumps) now uses the 5344102550Siwasakicommon ACPI string output procedure which handles escapes 5345104470Siwasakiproperly 5346104470Siwasakiand does not emit non-printable characters. 5347102550Siwasaki 5348102550SiwasakiFixed some issues with constants in the 64-bit version of the 5349104470Siwasakilocal C library (utclib.c) 5350114237Snjl 5351114237Snjl 5352114237Snjl2) Linux 5353114237Snjl 5354114237SnjlEC Driver: No longer attempts to acquire the Global Lock at 5355102550Siwasakiinterrupt level. 5356114237Snjl 5357114237Snjl 5358114237Snjl3) iASL Compiler/Disassembler 5359114237Snjl 5360114237SnjlImplemented ACPI 2.0B grammar change that disallows all Type 1 5361102550Siwasakiand 5362102550Siwasaki2 opcodes outside of a control method. This means that the 5363114237Snjl"executable" operators (versus the "namespace" operators) cannot 5364114237Snjlbe used at the table level; they can only be used within a 5365114237Snjlcontrol 5366102550Siwasakimethod. 5367104470Siwasaki 5368104470SiwasakiImplemented the restriction on the Scope() operator where the 5369126372Snjltarget must already exist in the namespace at the time the 5370126372Snjloperator is encountered (during ASL compilation). In other words, 5371102550Siwasakiforward references are not allowed and Scope() cannot create a 5372104470Siwasakinew 5373104470Siwasakiobject. This makes the iASL compiler compatible with other ACPI 5374104470Siwasakiimplementations and makes the Scope() implementation adhere to 5375104470Siwasakithe 5376114237SnjlACPI specification. 5377114237Snjl 5378102550SiwasakiFixed a problem where namepath optimization for the Alias 5379102550Siwasakioperator 5380126372Snjlwas optimizing the wrong path (of the two namepaths.) This 5381126372Snjlcaused 5382102550Siwasakia "Missing alias link" error message. 5383104470Siwasaki 5384126372SnjlFixed a problem where an "unknown reserved name" warning could be 5385126372Snjlincorrectly generated for names like "_SB" when the trailing 5386126372Snjlunderscore is not used in the original ASL. 5387126372Snjl 5388126372SnjlFixed a problem where the reserved name check did not handle 5389126372SnjlNamePaths with multiple NameSegs correctly. The first nameseg of 5390126372Snjlthe NamePath was examined instead of the last NameSeg. 5391126372Snjl 5392126372Snjl 5393126372Snjl---------------------------------------- 5394126372Snjl 5395102550Siwasaki02 October 2002. Summary of changes for this release. 5396102550Siwasaki 5397114237Snjl 5398114237Snjl1) ACPI CA Core Subsystem version 20021002: 5399102550Siwasaki 5400102550SiwasakiFixed a problem where a store/copy of a string to an existing 5401114237Snjlstring did not always set the string length properly in the 5402114237SnjlString 5403102550Siwasakiobject. 5404102550Siwasaki 5405102550SiwasakiFixed a reported problem with the ToString operator where the 5406102550Siwasakibehavior was identical to the ToHexString operator instead of 5407102550Siwasakijust 5408102550Siwasakisimply converting a raw buffer to a string data type. 5409102550Siwasaki 5410102550SiwasakiFixed a problem where CopyObject and the other "explicit" 5411104470Siwasakiconversion operators were not updating the internal namespace 5412104470Siwasakinode 5413102550Siwasakitype as part of the store operation. 5414102550Siwasaki 5415102550SiwasakiFixed a memory leak during implicit source operand conversion 5416104470Siwasakiwhere the original object was not deleted if it was converted to 5417104470Siwasakia 5418102550Siwasakinew object of a different type. 5419102550Siwasaki 5420102550SiwasakiEnhanced error messages for all problems associated with 5421102550Siwasakinamespace 5422102550Siwasakilookups. Common procedure generates and prints the lookup name 5423102550Siwasakias 5424102550Siwasakiwell as the formatted status. 5425126372Snjl 5426126372SnjlCompleted implementation of a new design for the Alias support 5427126372Snjlwithin the namespace. The existing design did not handle the 5428126372Snjlcase 5429126372Snjlwhere a new object was assigned to one of the two names due to 5430126372Snjlthe 5431126372Snjluse of an explicit conversion operator, resulting in the two 5432126372Snjlnames 5433102550Siwasakipointing to two different objects. The new design simply points 5434102550Siwasakithe Alias name to the original name node - not to the object. 5435114237SnjlThis results in a level of indirection that must be handled in 5436114237Snjlthe 5437126372Snjlname resolution mechanism. 5438126372Snjl 5439102550SiwasakiCode and Data Size: Current core subsystem library sizes are 5440102550Siwasakishown 5441102550Siwasakibelow. These are the code and data sizes for the acpica.lib 5442102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 5443102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 5444102550Siwasakiversion of the code includes the debug output trace mechanism and 5445102550Siwasakihas a larger code and data size. Note that these values will 5446114237Snjlvary 5447102550Siwasakidepending on the efficiency of the compiler and the compiler 5448114237Snjloptions used during generation. 5449114237Snjl 5450102550Siwasaki Previous Release 5451104470Siwasaki Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 5452104470Siwasaki Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 5453104470Siwasaki Current Release: 5454102550Siwasaki Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 5455102550Siwasaki Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 5456114237Snjl 5457114237Snjl 5458102550Siwasaki2) Linux 5459104470Siwasaki 5460104470SiwasakiInitialize thermal driver's timer before it is used. (Knut 5461104470SiwasakiNeumann) 5462104470Siwasaki 5463102550SiwasakiAllow handling negative celsius values. (Kochi Takayoshi) 5464104470Siwasaki 5465104470SiwasakiFix thermal management and make trip points. R/W (Pavel Machek) 5466126372Snjl 5467126372SnjlFix /proc/acpi/sleep. (P. Christeas) 5468102550Siwasaki 5469114237SnjlIA64 fixes. (David Mosberger) 5470114237Snjl 5471102550SiwasakiFix reversed logic in blacklist code. (Sergio Monteiro Basto) 5472114237Snjl 5473114237SnjlReplace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 5474114237SnjlBrodowski) 5475126372Snjl 5476126372Snjl 5477126372Snjl3) iASL Compiler/Disassembler 5478114237Snjl 5479114237SnjlClarified some warning/error messages. 5480114237Snjl 5481102550Siwasaki 5482102550Siwasaki---------------------------------------- 5483114237Snjl18 September 2002. Summary of changes for this release. 5484114237Snjl 5485102550Siwasaki 5486102550Siwasaki1) ACPI CA Core Subsystem version 20020918: 5487102550Siwasaki 5488114237SnjlFixed a reported problem with reference chaining (via the Index() 5489114237Snjland RefOf() operators) in the ObjectType() and SizeOf() 5490114237Snjloperators. 5491102550SiwasakiThe definition of these operators includes the dereferencing of 5492102550Siwasakiall chained references to return information on the base object. 5493104470Siwasaki 5494104470SiwasakiFixed a problem with stores to indexed package elements - the 5495102550Siwasakiexisting code would not complete the store if an "implicit 5496102550Siwasakiconversion" was not performed. In other words, if the existing 5497126372Snjlobject (package element) was to be replaced completely, the code 5498126372Snjldidn't handle this case. 5499126372Snjl 5500126372SnjlRelaxed typechecking on the ASL "Scope" operator to allow the 5501126372Snjltarget name to refer to an object of type Integer, String, or 5502126372SnjlBuffer, in addition to the scoping object types (Device, 5503126372Snjlpredefined Scopes, Processor, PowerResource, and ThermalZone.) 5504126372SnjlThis allows existing AML code that has workarounds for a bug in 5505126372SnjlWindows to function properly. A warning is issued, however. 5506102550SiwasakiThis 5507104470Siwasakiaffects both the AML interpreter and the iASL compiler. Below is 5508104470Siwasakian example of this type of ASL code: 5509102550Siwasaki 5510102550Siwasaki Name(DEB,0x00) 5511102550Siwasaki Scope(DEB) 5512102550Siwasaki { 5513102550Siwasaki 5514102550SiwasakiFixed some reported problems with 64-bit integer support in the 5515104470Siwasakilocal implementation of C library functions (clib.c) 5516104470Siwasaki 5517114237Snjl 5518114237Snjl2) Linux 5519102550Siwasaki 5520104470SiwasakiUse ACPI fix map region instead of IOAPIC region, since it is 5521104470Siwasakiundefined in non-SMP. 5522104470Siwasaki 5523104470SiwasakiEnsure that the SCI has the proper polarity and trigger, even on 5524102550Siwasakisystems that do not have an interrupt override entry in the MADT. 5525114237Snjl 5526114237Snjl2.5 big driver reorganization (Pat Mochel) 5527114237Snjl 5528102550SiwasakiUse early table mapping code from acpitable.c (Andi Kleen) 5529104470Siwasaki 5530114237SnjlNew blacklist entries (Andi Kleen) 5531114237Snjl 5532102550SiwasakiBlacklist improvements. Split blacklist code out into a separate 5533114237Snjlfile. Move checking the blacklist to very early. Previously, we 5534114237Snjlwould use ACPI tables, and then halfway through init, check the 5535104470Siwasakiblacklist -- too late. Now, it's early enough to completely fall- 5536102550Siwasakiback to non-ACPI. 5537104470Siwasaki 5538126372Snjl 5539126372Snjl3) iASL Compiler/Disassembler version 20020918: 5540102550Siwasaki 5541102550SiwasakiFixed a problem where the typechecking code didn't know that an 5542114237Snjlalias could point to a method. In other words, aliases were not 5543114237Snjlbeing dereferenced during typechecking. 5544102550Siwasaki 5545114237Snjl 5546114237Snjl---------------------------------------- 5547114237Snjl29 August 2002. Summary of changes for this release. 5548114237Snjl 5549114237Snjl1) ACPI CA Core Subsystem Version 20020829: 5550102550Siwasaki 5551114237SnjlIf the target of a Scope() operator already exists, it must be an 5552114237Snjlobject type that actually opens a scope -- such as a Device, 5553114237SnjlMethod, Scope, etc. This is a fatal runtime error. Similar 5554114237Snjlerror 5555114237Snjlcheck has been added to the iASL compiler also. 5556102550Siwasaki 5557114237SnjlTightened up the namespace load to disallow multiple names in the 5558114237Snjlsame scope. This previously was allowed if both objects were of 5559114237Snjlthe same type. (i.e., a lookup was the same as entering a new 5560114237Snjlname). 5561102550Siwasaki 5562102550Siwasaki 5563126372Snjl2) Linux 5564126372Snjl 5565102550SiwasakiEnsure that the ACPI interrupt has the proper trigger and 5566114237Snjlpolarity. 5567114237Snjl 5568114237Snjllocal_irq_disable is extraneous. (Matthew Wilcox) 5569126372Snjl 5570126372SnjlMake "acpi=off" actually do what it says, and not use the ACPI 5571126372Snjlinterpreter *or* the tables. 5572114237Snjl 5573114237SnjlAdded arch-neutral support for parsing SLIT and SRAT tables 5574114237Snjl(Kochi 5575102550SiwasakiTakayoshi) 5576102550Siwasaki 5577114237Snjl 5578114237Snjl3) iASL Compiler/Disassembler Version 20020829: 5579102550Siwasaki 5580102550SiwasakiImplemented namepath optimization for name declarations. For 5581102550Siwasakiexample, a declaration like "Method (\_SB_.ABCD)" would get 5582114237Snjloptimized to "Method (ABCD)" if the declaration is within the 5583114237Snjl\_SB_ scope. This optimization is in addition to the named 5584102550Siwasakireference path optimization first released in the previous 5585114237Snjlversion. This would seem to complete all possible optimizations 5586114237Snjlfor namepaths within the ASL/AML. 5587102550Siwasaki 5588102550SiwasakiIf the target of a Scope() operator already exists, it must be an 5589102550Siwasakiobject type that actually opens a scope -- such as a Device, 5590102550SiwasakiMethod, Scope, etc. 5591102550Siwasaki 5592102550SiwasakiImplemented a check and warning for unreachable code in the same 5593102550Siwasakiblock below a Return() statement. 5594102550Siwasaki 5595102550SiwasakiFixed a problem where the listing file was not generated if the 5596102550Siwasakicompiler aborted if the maximum error count was exceeded (200). 5597114237Snjl 5598114237SnjlFixed a problem where the typechecking of method return values 5599114237Snjlwas 5600114237Snjlbroken. This includes the check for a return value when the 5601114237Snjlmethod is invoked as a TermArg (a return value is expected.) 5602102550Siwasaki 5603104470SiwasakiFixed a reported problem where EOF conditions during a quoted 5604104470Siwasakistring or comment caused a fault. 5605126372Snjl 5606126372Snjl 5607126372Snjl---------------------------------------- 5608102550Siwasaki15 August 2002. Summary of changes for this release. 5609114237Snjl 5610114237Snjl1) ACPI CA Core Subsystem Version 20020815: 5611126372Snjl 5612126372SnjlFixed a reported problem where a Store to a method argument that 5613102550Siwasakicontains a reference did not perform the indirect store 5614114237Snjlcorrectly. 5615114237SnjlThis problem was created during the conversion to the new 5616114237Snjlreference object model - the indirect store to a method argument 5617114237Snjlcode was not updated to reflect the new model. 5618102550Siwasaki 5619114237SnjlReworked the ACPI mode change code to better conform to ACPI 2.0, 5620114237Snjlhandle corner cases, and improve code legibility (Kochi 5621102550SiwasakiTakayoshi) 5622104470Siwasaki 5623104470SiwasakiFixed a problem with the pathname parsing for the carat (^) 5624102550Siwasakiprefix. The heavy use of the carat operator by the new namepath 5625114237Snjloptimization in the iASL compiler uncovered a problem with the 5626114237SnjlAML 5627114237Snjlinterpreter handling of this prefix. In the case where one or 5628126372Snjlmore carats precede a single nameseg, the nameseg was treated as 5629126372Snjlstandalone and the search rule (to root) was inadvertently 5630126372Snjlapplied. This could cause both the iASL compiler and the 5631126372Snjlinterpreter to find the wrong object or to miss the error that 5632126372Snjlshould occur if the object does not exist at that exact pathname. 5633126372Snjl 5634114237SnjlFound and fixed the problem where the HP Pavilion DSDT would not 5635114237Snjlload. This was a relatively minor tweak to the table loading 5636102550Siwasakicode 5637102550Siwasaki(a problem caused by the unexpected encounter with a method 5638102550Siwasakiinvocation not within a control method), but it does not solve 5639102550Siwasakithe 5640102550Siwasakioverall issue of the execution of AML code at the table level. 5641102550SiwasakiThis investigation is still ongoing. 5642104470Siwasaki 5643102550SiwasakiCode and Data Size: Current core subsystem library sizes are 5644102550Siwasakishown 5645102550Siwasakibelow. These are the code and data sizes for the acpica.lib 5646102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 5647102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 5648104470Siwasakiversion of the code includes the debug output trace mechanism and 5649104470Siwasakihas a larger code and data size. Note that these values will 5650104470Siwasakivary 5651102550Siwasakidepending on the efficiency of the compiler and the compiler 5652102550Siwasakioptions used during generation. 5653102550Siwasaki 5654102550Siwasaki Previous Release 5655102550Siwasaki Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 5656102550Siwasaki Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 5657114237Snjl Current Release: 5658114237Snjl Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 5659114237Snjl Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 5660126372Snjl 5661126372Snjl 5662126372Snjl2) Linux 5663102550Siwasaki 5664114237SnjlRemove redundant slab.h include (Brad Hards) 5665114237Snjl 5666114237SnjlFix several bugs in thermal.c (Herbert Nachtnebel) 5667114237Snjl 5668102550SiwasakiMake CONFIG_ACPI_BOOT work properly (Pavel Machek) 5669114237Snjl 5670114237SnjlChange acpi_system_suspend to use updated irq functions (Pavel 5671114237SnjlMachek) 5672114237Snjl 5673114237SnjlExport acpi_get_firmware_table (Matthew Wilcox) 5674102550Siwasaki 5675102550SiwasakiUse proper root proc entry for ACPI (Kochi Takayoshi) 5676126372Snjl 5677126372SnjlFix early-boot table parsing (Bjorn Helgaas) 5678126372Snjl 5679126372Snjl 5680126372Snjl3) iASL Compiler/Disassembler 5681126372Snjl 5682126372SnjlReworked the compiler options to make them more consistent and to 5683102550Siwasakiuse two-letter options where appropriate. We were running out of 5684102550Siwasakisensible letters. This may break some makefiles, so check the 5685102550Siwasakicurrent options list by invoking the compiler with no parameters. 5686114237Snjl 5687114237SnjlCompleted the design and implementation of the ASL namepath 5688102550Siwasakioptimization option for the compiler. This option optimizes all 5689102550Siwasakireferences to named objects to the shortest possible path. The 5690102550Siwasakifirst attempt tries to utilize a single nameseg (4 characters) 5691102550Siwasakiand 5692102550Siwasakithe "search-to-root" algorithm used by the interpreter. If that 5693102550Siwasakicannot be used (because either the name is not in the search path 5694102550Siwasakior there is a conflict with another object with the same name), 5695102550Siwasakithe pathname is optimized using the carat prefix (usually a 5696102550Siwasakishorter string than specifying the entire path from the root.) 5697114237Snjl 5698102550SiwasakiImplemented support to obtain the DSDT from the Windows registry 5699114237Snjl(when the disassembly option is specified with no input file). 5700114237SnjlAdded this code as the implementation for AcpiOsTableOverride in 5701102550Siwasakithe Windows OSL. Migrated the 16-bit code (used in the AcpiDump 5702114237Snjlutility) to scan memory for the DSDT to the AcpiOsTableOverride 5703114237Snjlfunction in the DOS OSL to make the disassembler truly OS 5704102550Siwasakiindependent. 5705102550Siwasaki 5706102550SiwasakiImplemented a new option to disassemble and compile in one step. 5707102550SiwasakiWhen used without an input filename, this option will grab the 5708102550SiwasakiDSDT from the local machine, disassemble it, and compile it in 5709102550Siwasakione 5710104470Siwasakistep. 5711114237Snjl 5712126372SnjlAdded a warning message for invalid escapes (a backslash followed 5713126372Snjlby any character other than the allowable escapes). This catches 5714114237Snjlthe quoted string error "\_SB_" (which should be "\\_SB_" ). 5715126372Snjl 5716126372SnjlAlso, there are numerous instances in the ACPI specification 5717126372Snjlwhere 5718102550Siwasakithis error occurs. 5719104470Siwasaki 5720104470SiwasakiAdded a compiler option to disable all optimizations. This is 5721114237Snjlbasically the "compatibility mode" because by using this option, 5722114237Snjlthe AML code will come out exactly the same as other ASL 5723102550Siwasakicompilers. 5724114237Snjl 5725114237SnjlAdded error messages for incorrectly ordered dependent resource 5726114237Snjlfunctions. This includes: missing EndDependentFn macro at end of 5727114237Snjldependent resource list, nested dependent function macros (both 5728102550Siwasakistart and end), and missing StartDependentFn macro. These are 5729104470Siwasakicommon errors that should be caught at compile time. 5730114237Snjl 5731114237SnjlImplemented _OSI support for the disassembler and compiler. _OSI 5732102550Siwasakimust be included in the namespace for proper disassembly (because 5733102550Siwasakithe disassembler must know the number of arguments.) 5734102550Siwasaki 5735126372SnjlAdded an "optimization" message type that is optional (off by 5736126372Snjldefault). This message is used for all optimizations - including 5737102550Siwasakiconstant folding, integer optimization, and namepath 5738102550Siwasakioptimization. 5739102550Siwasaki 5740102550Siwasaki---------------------------------------- 5741102550Siwasaki25 July 2002. Summary of changes for this release. 5742114237Snjl 5743114237Snjl 5744114237Snjl1) ACPI CA Core Subsystem Version 20020725: 5745102550Siwasaki 5746102550SiwasakiThe AML Disassembler has been enhanced to produce compilable ASL 5747102550Siwasakicode and has been integrated into the iASL compiler (see below) 5748114237Snjlas 5749126372Snjlwell as the single-step disassembly for the AML debugger and the 5750126372Snjldisassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 5751126372Snjlresource templates and macros are fully supported. The 5752126372Snjldisassembler has been tested on over 30 different AML files, 5753114237Snjlproducing identical AML when the resulting disassembled ASL file 5754114237Snjlis recompiled with the same ASL compiler. 5755114237Snjl 5756102550SiwasakiModified the Resource Manager to allow zero interrupts and zero 5757104470Siwasakidma channels during the GetCurrentResources call. This was 5758104470Siwasakicausing problems on some platforms. 5759114237Snjl 5760114237SnjlAdded the AcpiOsRedirectOutput interface to the OSL to simplify 5761114237Snjloutput redirection for the AcpiOsPrintf and AcpiOsVprintf 5762126372Snjlinterfaces. 5763126372Snjl 5764126372SnjlCode and Data Size: Current core subsystem library sizes are 5765126372Snjlshown 5766126372Snjlbelow. These are the code and data sizes for the acpica.lib 5767114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 5768114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 5769114237Snjlversion of the code includes the debug output trace mechanism and 5770102550Siwasakihas a larger code and data size. Note that these values will 5771102550Siwasakivary 5772102550Siwasakidepending on the efficiency of the compiler and the compiler 5773102550Siwasakioptions used during generation. 5774102550Siwasaki 5775102550Siwasaki Previous Release 5776102550Siwasaki Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 5777102550Siwasaki Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 5778114237Snjl Current Release: 5779114237Snjl Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 5780114237Snjl Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 5781114237Snjl 5782114237Snjl 5783114237Snjl2) Linux 5784114237Snjl 5785102550SiwasakiFixed a panic in the EC driver (Dominik Brodowski) 5786104470Siwasaki 5787114237SnjlImplemented checksum of the R/XSDT itself during Linux table scan 5788114237Snjl(Richard Schaal) 5789114237Snjl 5790114237Snjl 5791114237Snjl3) iASL compiler 5792102550Siwasaki 5793102550SiwasakiThe AML disassembler is integrated into the compiler. The "-d" 5794114237Snjloption invokes the disassembler to completely disassemble an 5795114237Snjlinput AML file, producing as output a text ASL file with the 5796114237Snjlextension ".dsl" (to avoid name collisions with existing .asl 5797114237Snjlsource files.) A future enhancement will allow the disassembler 5798114237Snjlto obtain the BIOS DSDT from the registry under Windows. 5799102550Siwasaki 5800114237SnjlFixed a problem with the VendorShort and VendorLong resource 5801102550Siwasakidescriptors where an invalid AML sequence was created. 5802102550Siwasaki 5803114237SnjlImplemented a fix for BufferData term in the ASL parser. It was 5804114237Snjlinadvertently defined twice, allowing invalid syntax to pass and 5805114237Snjlcausing reduction conflicts. 5806126372Snjl 5807126372SnjlFixed a problem where the Ones opcode could get converted to a 5808102550Siwasakivalue of zero if "Ones" was used where a byte, word or dword 5809104470Siwasakivalue 5810104470Siwasakiwas expected. The 64-bit value is now truncated to the correct 5811102550Siwasakisize with the correct value. 5812114237Snjl 5813114237Snjl 5814114237Snjl 5815102550Siwasaki---------------------------------------- 5816114237Snjl02 July 2002. Summary of changes for this release. 5817126372Snjl 5818126372Snjl 5819102550Siwasaki1) ACPI CA Core Subsystem Version 20020702: 5820102550Siwasaki 5821102550SiwasakiThe Table Manager code has been restructured to add several new 5822102550Siwasakifeatures. Tables that are not required by the core subsystem 5823102550Siwasaki(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 5824102550Siwasakivalidated in any way and are returned from AcpiGetFirmwareTable 5825102550Siwasakiif 5826114237Snjlrequested. The AcpiOsTableOverride interface is now called for 5827114237Snjleach table that is loaded by the subsystem in order to allow the 5828102550Siwasakihost to override any table it chooses. Previously, only the DSDT 5829102550Siwasakicould be overridden. Added one new files, tbrsdt.c and 5830102550Siwasakitbgetall.c. 5831114237Snjl 5832114237SnjlFixed a problem with the conversion of internal package objects 5833114237Snjlto 5834102550Siwasakiexternal objects (when a package is returned from a control 5835114237Snjlmethod.) The return buffer length was set to zero instead of the 5836114237Snjlproper length of the package object. 5837102550Siwasaki 5838114237SnjlFixed a reported problem with the use of the RefOf and DeRefOf 5839114237Snjloperators when passing reference arguments to control methods. A 5840114237Snjlnew type of Reference object is used internally for references 5841102550Siwasakiproduced by the RefOf operator. 5842102550Siwasaki 5843104470SiwasakiAdded additional error messages in the Resource Manager to 5844126372Snjlexplain 5845126372SnjlAE_BAD_DATA errors when they occur during resource parsing. 5846126372Snjl 5847114237SnjlSplit the AcpiEnableSubsystem into two primitives to enable a 5848102550Siwasakifiner granularity initialization sequence. These two calls 5849104470Siwasakishould 5850104470Siwasakibe called in this order: AcpiEnableSubsystem (flags), 5851102550SiwasakiAcpiInitializeObjects (flags). The flags parameter remains the 5852102550Siwasakisame. 5853102550Siwasaki 5854102550Siwasaki 5855102550Siwasaki2) Linux 5856102550Siwasaki 5857114237SnjlUpdated the ACPI utilities module to understand the new style of 5858114237Snjlfully resolved package objects that are now returned from the 5859126372Snjlcore 5860126372Snjlsubsystem. This eliminates errors of the form: 5861126372Snjl 5862102550Siwasaki ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 5863114237Snjl acpi_utils-0430 [145] acpi_evaluate_reference: 5864114237Snjl Invalid element in package (not a device reference) 5865114237Snjl 5866114237SnjlThe method evaluation utility uses the new buffer allocation 5867102550Siwasakischeme instead of calling AcpiEvaluate Object twice. 5868102550Siwasaki 5869102550SiwasakiAdded support for ECDT. This allows the use of the Embedded 5870104470Siwasaki 5871114237SnjlController before the namespace has been fully initialized, which 5872114237Snjlis necessary for ACPI 2.0 support, and for some laptops to 5873102550Siwasakiinitialize properly. (Laptops using ECDT are still rare, so only 5874102550Siwasakilimited testing was performed of the added functionality.) 5875102550Siwasaki 5876102550SiwasakiFixed memory leaks in the EC driver. 5877102550Siwasaki 5878102550SiwasakiEliminated a brittle code structure in acpi_bus_init(). 5879102550Siwasaki 5880102550SiwasakiEliminated the acpi_evaluate() helper function in utils.c. It is 5881102550Siwasakino longer needed since acpi_evaluate_object can optionally 5882102550Siwasakiallocate memory for the return object. 5883114237Snjl 5884114237SnjlImplemented fix for keyboard hang when getting battery readings 5885114237Snjlon 5886102550Siwasakisome systems (Stephen White) 5887102550Siwasaki 5888102550SiwasakiPCI IRQ routing update (Dominik Brodowski) 5889102550Siwasaki 5890104470SiwasakiFix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 5891126372Snjlsupport 5892126372Snjl 5893102550Siwasaki---------------------------------------- 5894102550Siwasaki11 June 2002. Summary of changes for this release. 5895102550Siwasaki 5896102550Siwasaki 5897102550Siwasaki1) ACPI CA Core Subsystem Version 20020611: 5898102550Siwasaki 5899102550SiwasakiFixed a reported problem where constants such as Zero and One 5900102550Siwasakiappearing within _PRT packages were not handled correctly within 5901102550Siwasakithe resource manager code. Originally reported against the ASL 5902102550Siwasakicompiler because the code generator now optimizes integers to 5903102550Siwasakitheir minimal AML representation (i.e. AML constants if 5904102550Siwasakipossible.) 5905102550SiwasakiThe _PRT code now handles all AML constant opcodes correctly 5906102550Siwasaki(Zero, One, Ones, Revision). 5907102550Siwasaki 5908102550SiwasakiFixed a problem with the Concatenate operator in the AML 5909102550Siwasakiinterpreter where a buffer result object was incorrectly marked 5910102550Siwasakias 5911102550Siwasakinot fully evaluated, causing a run-time error of AE_AML_INTERNAL. 5912102550Siwasaki 5913102550SiwasakiAll package sub-objects are now fully resolved before they are 5914104470Siwasakireturned from the external ACPI interfaces. This means that name 5915102550Siwasakistrings are resolved to object handles, and constant operators 5916114237Snjl(Zero, One, Ones, Revision) are resolved to Integers. 5917114237Snjl 5918102550SiwasakiImplemented immediate resolution of the AML Constant opcodes 5919102550Siwasaki(Zero, One, Ones, Revision) to Integer objects upon detection 5920102550Siwasakiwithin the AML stream. This has simplified and reduced the 5921102550Siwasakigenerated code size of the subsystem by eliminating about 10 5922102550Siwasakiswitch statements for these constants (which previously were 5923102550Siwasakicontained in Reference objects.) The complicating issues are 5924102550Siwasakithat 5925102550Siwasakithe Zero opcode is used as a "placeholder" for unspecified 5926102550Siwasakioptional target operands and stores to constants are defined to 5927102550Siwasakibe 5928102550Siwasakino-ops. 5929102550Siwasaki 5930102550SiwasakiCode and Data Size: Current core subsystem library sizes are 5931102550Siwasakishown 5932102550Siwasakibelow. These are the code and data sizes for the acpica.lib 5933102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 5934102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 5935104470Siwasakiversion of the code includes the debug output trace mechanism and 5936126372Snjlhas a larger code and data size. Note that these values will 5937126372Snjlvary 5938102550Siwasakidepending on the efficiency of the compiler and the compiler 5939102550Siwasakioptions used during generation. 5940126372Snjl 5941126372Snjl Previous Release 5942102550Siwasaki Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 5943102550Siwasaki Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 5944102550Siwasaki Current Release: 5945102550Siwasaki Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 5946126372Snjl Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 5947126372Snjl 5948126372Snjl 5949126372Snjl2) Linux 5950126372Snjl 5951126372Snjl 5952102550SiwasakiAdded preliminary support for obtaining _TRA data for PCI root 5953102550Siwasakibridges (Bjorn Helgaas). 5954102550Siwasaki 5955102550Siwasaki 5956102550Siwasaki3) iASL Compiler Version X2046: 5957102550Siwasaki 5958102550SiwasakiFixed a problem where the "_DDN" reserved name was defined to be 5959102550Siwasakia 5960104470Siwasakicontrol method with one argument. There are no arguments, and 5961126372Snjl_DDN does not have to be a control method. 5962126372Snjl 5963102550SiwasakiFixed a problem with the Linux version of the compiler where the 5964104470Siwasakisource lines printed with error messages were the wrong lines. 5965114237SnjlThis turned out to be the "LF versus CR/LF" difference between 5966114237SnjlWindows and Unix. This appears to be the longstanding issue 5967114237Snjlconcerning listing output and error messages. 5968102550Siwasaki 5969114237SnjlFixed a problem with the Linux version of compiler where opcode 5970114237Snjlnames within error messages were wrong. This was caused by a 5971114237Snjlslight difference in the output of the Flex tool on Linux versus 5972126372SnjlWindows. 5973126372Snjl 5974102550SiwasakiFixed a problem with the Linux compiler where the hex output 5975102550Siwasakifiles 5976102550Siwasakicontained some garbage data caused by an internal buffer overrun. 5977102550Siwasaki 5978102550Siwasaki 5979102550Siwasaki---------------------------------------- 5980102550Siwasaki17 May 2002. Summary of changes for this release. 5981114237Snjl 5982114237Snjl 5983102550Siwasaki1) ACPI CA Core Subsystem Version 20020517: 5984102550Siwasaki 5985102550SiwasakiImplemented a workaround to an BIOS bug discovered on the HP 5986102550SiwasakiOmniBook where the FADT revision number and the table size are 5987102550Siwasakiinconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The 5988102550Siwasakinew 5989102550Siwasakibehavior is to fallback to using only the ACPI 1.0 fields of the 5990102550SiwasakiFADT if the table is too small to be a ACPI 2.0 table as claimed 5991102550Siwasakiby the revision number. Although this is a BIOS bug, this is a 5992102550Siwasakicase where the workaround is simple enough and with no side 5993102550Siwasakieffects, so it seemed prudent to add it. A warning message is 5994102550Siwasakiissued, however. 5995102550Siwasaki 5996102550SiwasakiImplemented minimum size checks for the fixed-length ACPI tables 5997102550Siwasaki- 5998102550Siwasaki- the FADT and FACS, as well as consistency checks between the 5999102550Siwasakirevision number and the table size. 6000102550Siwasaki 6001102550SiwasakiFixed a reported problem in the table override support where the 6002102550Siwasakinew table pointer was incorrectly treated as a physical address 6003104470Siwasakiinstead of a logical address. 6004114237Snjl 6005114237SnjlEliminated the use of the AE_AML_ERROR exception and replaced it 6006114237Snjlwith more descriptive codes. 6007102550Siwasaki 6008114237SnjlFixed a problem where an exception would occur if an ASL Field 6009114237Snjlwas 6010114237Snjldefined with no named Field Units underneath it (used by some 6011102550Siwasakiindex fields). 6012114237Snjl 6013114237SnjlCode and Data Size: Current core subsystem library sizes are 6014126372Snjlshown 6015126372Snjlbelow. These are the code and data sizes for the acpica.lib 6016126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 6017102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 6018102550Siwasakiversion of the code includes the debug output trace mechanism and 6019102550Siwasakihas a larger code and data size. Note that these values will 6020102550Siwasakivary 6021102550Siwasakidepending on the efficiency of the compiler and the compiler 6022102550Siwasakioptions used during generation. 6023102550Siwasaki 6024102550Siwasaki Previous Release 6025102550Siwasaki Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 6026102550Siwasaki Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 6027102550Siwasaki Current Release: 6028114237Snjl Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 6029114237Snjl Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 6030102550Siwasaki 6031102550Siwasaki 6032102550Siwasaki 6033102550Siwasaki2) Linux 6034102550Siwasaki 6035102550SiwasakiMuch work done on ACPI init (MADT and PCI IRQ routing support). 6036104470Siwasaki(Paul D. and Dominik Brodowski) 6037104470Siwasaki 6038102550SiwasakiFix PCI IRQ-related panic on boot (Sam Revitch) 6039102550Siwasaki 6040126372SnjlSet BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 6041126372Snjl 6042126372SnjlFix "MHz" typo (Dominik Brodowski) 6043102550Siwasaki 6044104470SiwasakiFix RTC year 2000 issue (Dominik Brodowski) 6045114237Snjl 6046114237SnjlPreclude multiple button proc entries (Eric Brunet) 6047114237Snjl 6048114237SnjlMoved arch-specific code out of include/platform/aclinux.h 6049114237Snjl 6050102550Siwasaki3) iASL Compiler Version X2044: 6051104470Siwasaki 6052104470SiwasakiImplemented error checking for the string used in the EISAID 6053102550Siwasakimacro 6054102550Siwasaki(Usually used in the definition of the _HID object.) The code 6055102550Siwasakinow 6056102550Siwasakistrictly enforces the PnP format - exactly 7 characters, 3 6057102550Siwasakiuppercase letters and 4 hex digits. 6058102550Siwasaki 6059102550SiwasakiIf a raw string is used in the definition of the _HID object 6060102550Siwasaki(instead of the EISAID macro), the string must contain all 6061102550Siwasakialphanumeric characters (e.g., "*PNP0011" is not allowed because 6062104470Siwasakiof the asterisk.) 6063102550Siwasaki 6064102550SiwasakiImplemented checking for invalid use of ACPI reserved names for 6065102550Siwasakimost of the name creation operators (Name, Device, Event, Mutex, 6066102550SiwasakiOperationRegion, PowerResource, Processor, and ThermalZone.) 6067102550SiwasakiPreviously, this check was only performed for control methods. 6068102550Siwasaki 6069102550SiwasakiImplemented an additional check on the Name operator to emit an 6070102550Siwasakierror if a reserved name that must be implemented in ASL as a 6071102550Siwasakicontrol method is used. We know that a reserved name must be a 6072102550Siwasakimethod if it is defined with input arguments. 6073102550Siwasaki 6074102550SiwasakiThe warning emitted when a namespace object reference is not 6075102550Siwasakifound 6076102550Siwasakiduring the cross reference phase has been changed into an error. 6077102550SiwasakiThe "External" directive should be used for names defined in 6078102550Siwasakiother 6079102550Siwasakimodules. 6080102550Siwasaki 6081102550Siwasaki 6082102550Siwasaki4) Tools and Utilities 6083102550Siwasaki 6084102550SiwasakiThe 16-bit tools (adump16 and aexec16) have been regenerated and 6085102550Siwasakitested. 6086102550Siwasaki 6087102550SiwasakiFixed a problem with the output of both acpidump and adump16 6088102550Siwasakiwhere 6089102550Siwasakithe indentation of closing parentheses and brackets was not 6090114237Snjl 6091102550Siwasakialigned properly with the parent block. 6092102550Siwasaki 6093102550Siwasaki 6094102550Siwasaki---------------------------------------- 6095102550Siwasaki03 May 2002. Summary of changes for this release. 6096114237Snjl 6097114237Snjl 6098102550Siwasaki1) ACPI CA Core Subsystem Version 20020503: 6099114237Snjl 6100102550SiwasakiAdded support a new OSL interface that allows the host operating 6101102550Siwasaki 6102102550Siwasakisystem software to override the DSDT found in the firmware - 6103102550SiwasakiAcpiOsTableOverride. With this interface, the OSL can examine 6104102550Siwasakithe 6105102550Siwasakiversion of the firmware DSDT and replace it with a different one 6106102550Siwasakiif desired. 6107102550Siwasaki 6108104470SiwasakiAdded new external interfaces for accessing ACPI registers from 6109104470Siwasakidevice drivers and other system software - AcpiGetRegister and 6110102550SiwasakiAcpiSetRegister. This was simply an externalization of the 6111104470Siwasakiexisting AcpiHwBitRegister interfaces. 6112104470Siwasaki 6113102550SiwasakiFixed a regression introduced in the previous build where the 6114102550SiwasakiASL/AML CreateField operator always returned an error, 6115102550Siwasaki"destination must be a NS Node". 6116114237Snjl 6117114237SnjlExtended the maximum time (before failure) to successfully enable 6118126372SnjlACPI mode to 3 seconds. 6119126372Snjl 6120126372SnjlCode and Data Size: Current core subsystem library sizes are 6121102550Siwasakishown 6122104470Siwasakibelow. These are the code and data sizes for the acpica.lib 6123126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 6124126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 6125102550Siwasakiversion of the code includes the debug output trace mechanism and 6126104470Siwasakihas a larger code and data size. Note that these values will 6127114237Snjlvary 6128114237Snjldepending on the efficiency of the compiler and the compiler 6129102550Siwasakioptions used during generation. 6130102550Siwasaki 6131104470Siwasaki Previous Release 6132114237Snjl Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 6133114237Snjl Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 6134114237Snjl Current Release: 6135114237Snjl Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 6136114237Snjl Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 6137102550Siwasaki 6138104470Siwasaki 6139104470Siwasaki2) Linux 6140102550Siwasaki 6141104470SiwasakiEnhanced ACPI init code for SMP. We are now fully MPS and $PIR- 6142114237Snjlfree. While 3 out of 4 of our in-house systems work fine, the 6143114237Snjllast 6144114237Snjlone still hangs when testing the LAPIC timer. 6145104470Siwasaki 6146102550SiwasakiRenamed many files in 2.5 kernel release to omit "acpi_" from the 6147102550Siwasakiname. 6148102550Siwasaki 6149102550SiwasakiAdded warning on boot for Presario 711FR. 6150114237Snjl 6151114237SnjlSleep improvements (Pavel Machek) 6152102550Siwasaki 6153102550SiwasakiACPI can now be built without CONFIG_PCI enabled. 6154102550Siwasaki 6155102550SiwasakiIA64: Fixed memory map functions (JI Lee) 6156102550Siwasaki 6157114237Snjl 6158114237Snjl3) iASL Compiler Version X2043: 6159114237Snjl 6160102550SiwasakiAdded support to allow the compiler to be integrated into the MS 6161102550SiwasakiVC++ development environment for one-button compilation of single 6162102550Siwasakifiles or entire projects -- with error-to-source-line mapping. 6163114237Snjl 6164126372SnjlImplemented support for compile-time constant folding for the 6165126372SnjlType3, Type4, and Type5 opcodes first defined in the ACPI 2.0 6166114237Snjlspecification. This allows the ASL writer to use expressions 6167114237Snjlinstead of Integer/Buffer/String constants in terms that must 6168102550Siwasakievaluate to constants at compile time and will also simplify the 6169102550Siwasakiemitted AML in any such sub-expressions that can be folded 6170102550Siwasaki(evaluated at compile-time.) This increases the size of the 6171102550Siwasakicompiler significantly because a portion of the ACPI CA AML 6172102550Siwasakiinterpreter is included within the compiler in order to pre- 6173102550Siwasakievaluate constant expressions. 6174102550Siwasaki 6175102550Siwasaki 6176102550SiwasakiFixed a problem with the "Unicode" ASL macro that caused the 6177102550Siwasakicompiler to fault. (This macro is used in conjunction with the 6178102550Siwasaki_STR reserved name.) 6179102550Siwasaki 6180102550SiwasakiImplemented an AML opcode optimization to use the Zero, One, and 6181102550SiwasakiOnes opcodes where possible to further reduce the size of integer 6182102550Siwasakiconstants and thus reduce the overall size of the generated AML 6183102550Siwasakicode. 6184102550Siwasaki 6185102550SiwasakiImplemented error checking for new reserved terms for ACPI 6186102550Siwasakiversion 6187102550Siwasaki2.0A. 6188102550Siwasaki 6189114237SnjlImplemented the -qr option to display the current list of ACPI 6190114237Snjlreserved names known to the compiler. 6191102550Siwasaki 6192102550SiwasakiImplemented the -qc option to display the current list of ASL 6193102550Siwasakioperators that are allowed within constant expressions and can 6194102550Siwasakitherefore be folded at compile time if the operands are 6195102550Siwasakiconstants. 6196104470Siwasaki 6197126372Snjl 6198126372Snjl4) Documentation 6199102550Siwasaki 6200114237SnjlUpdated the Programmer's Reference for new interfaces, data 6201114237Snjltypes, 6202114237Snjland memory allocation model options. 6203114237Snjl 6204102550SiwasakiUpdated the iASL Compiler User Reference to apply new format and 6205102550Siwasakiadd information about new features and options. 6206102550Siwasaki 6207102550Siwasaki---------------------------------------- 6208102550Siwasaki19 April 2002. Summary of changes for this release. 6209102550Siwasaki 6210104470Siwasaki1) ACPI CA Core Subsystem Version 20020419: 6211102550Siwasaki 6212102550SiwasakiThe source code base for the Core Subsystem has been completely 6213102550Siwasakicleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 6214114237Snjlversions. The Lint option files used are included in the 6215114237Snjl/acpi/generate/lint directory. 6216114237Snjl 6217114237SnjlImplemented enhanced status/error checking across the entire 6218114237SnjlHardware manager subsystem. Any hardware errors (reported from 6219102550Siwasakithe OSL) are now bubbled up and will abort a running control 6220104470Siwasakimethod. 6221126372Snjl 6222126372Snjl 6223114237SnjlFixed a problem where the per-ACPI-table integer width (32 or 64) 6224114237Snjlwas stored only with control method nodes, causing a fault when 6225114237Snjlnon-control method code was executed during table loading. The 6226102550Siwasakisolution implemented uses a global variable to indicate table 6227102550Siwasakiwidth across the entire ACPI subsystem. Therefore, ACPI CA does 6228102550Siwasakinot support mixed integer widths across different ACPI tables 6229102550Siwasaki(DSDT, SSDT). 6230114237Snjl 6231114237SnjlFixed a problem where NULL extended fields (X fields) in an ACPI 6232114237Snjl2.0 ACPI FADT caused the table load to fail. Although the 6233114237Snjlexisting ACPI specification is a bit fuzzy on this topic, the new 6234102550Siwasakibehavior is to fall back on a ACPI 1.0 field if the corresponding 6235102550SiwasakiACPI 2.0 X field is zero (even though the table revision 6236114237Snjlindicates 6237114237Snjla full ACPI 2.0 table.) The ACPI specification will be updated 6238114237Snjlto 6239114237Snjlclarify this issue. 6240102550Siwasaki 6241114237SnjlFixed a problem with the SystemMemory operation region handler 6242114237Snjlwhere memory was always accessed byte-wise even if the AML- 6243102550Siwasakispecified access width was larger than a byte. This caused 6244102550Siwasakiproblems on systems with memory-mapped I/O. Memory is now 6245102550Siwasakiaccessed with the width specified. On systems that do not 6246114237Snjlsupport 6247114237Snjlnon-aligned transfers, a check is made to guarantee proper 6248102550Siwasakiaddress 6249102550Siwasakialignment before proceeding in order to avoid an AML-caused 6250102550Siwasakialignment fault within the kernel. 6251102550Siwasaki 6252114237Snjl 6253114237SnjlFixed a problem with the ExtendedIrq resource where only one byte 6254102550Siwasakiof the 4-byte Irq field was extracted. 6255102550Siwasaki 6256102550SiwasakiFixed the AcpiExDigitsNeeded() procedure to support _UID. This 6257102550Siwasakifunction was out of date and required a rewrite. 6258104470Siwasaki 6259104470SiwasakiCode and Data Size: Current core subsystem library sizes are 6260102550Siwasakishown 6261102550Siwasakibelow. These are the code and data sizes for the acpica.lib 6262102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 6263102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 6264102550Siwasakiversion of the code includes the debug output trace mechanism and 6265102550Siwasakihas a larger code and data size. Note that these values will 6266102550Siwasakivary 6267102550Siwasakidepending on the efficiency of the compiler and the compiler 6268102550Siwasakioptions used during generation. 6269102550Siwasaki 6270102550Siwasaki Previous Release 6271114237Snjl Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 6272114237Snjl Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 6273114237Snjl Current Release: 6274102550Siwasaki Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 6275102550Siwasaki Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 6276114237Snjl 6277114237Snjl 6278114237Snjl2) Linux 6279114237Snjl 6280114237SnjlPCI IRQ routing fixes (Dominik Brodowski) 6281102550Siwasaki 6282102550Siwasaki 6283102550Siwasaki3) iASL Compiler Version X2042: 6284114237Snjl 6285126372SnjlImplemented an additional compile-time error check for a field 6286126372Snjlunit whose size + minimum access width would cause a run-time 6287102550Siwasakiaccess beyond the end-of-region. Previously, only the field size 6288114237Snjlitself was checked. 6289114237Snjl 6290114237SnjlThe Core subsystem and iASL compiler now share a common parse 6291102550Siwasakiobject in preparation for compile-time evaluation of the type 6292102550Siwasaki3/4/5 ASL operators. 6293102550Siwasaki 6294102550Siwasaki 6295102550Siwasaki---------------------------------------- 6296102550SiwasakiSummary of changes for this release: 03_29_02 6297126372Snjl 6298126372Snjl1) ACPI CA Core Subsystem Version 20020329: 6299126372Snjl 6300114237SnjlImplemented support for late evaluation of TermArg operands to 6301102550SiwasakiBuffer and Package objects. This allows complex expressions to 6302102550Siwasakibe 6303102550Siwasakiused in the declarations of these object types. 6304102550Siwasaki 6305102550SiwasakiFixed an ACPI 1.0 compatibility issue when reading Fields. In 6306102550SiwasakiACPI 6307102550Siwasaki1.0, if the field was larger than 32 bits, it was returned as a 6308102550Siwasakibuffer - otherwise it was returned as an integer. In ACPI 2.0, 6309102550Siwasakithe field is returned as a buffer only if the field is larger 6310102550Siwasakithan 6311114237Snjl64 bits. The TableRevision is now considered when making this 6312114237Snjlconversion to avoid incompatibility with existing ASL code. 6313114237Snjl 6314114237SnjlImplemented logical addressing for AcpiOsGetRootPointer. This 6315102550Siwasakiallows an RSDP with either a logical or physical address. With 6316102550Siwasakithis support, the host OS can now override all ACPI tables with 6317102550Siwasakione logical RSDP. Includes implementation of "typed" pointer 6318102550Siwasakisupport to allow a common data type for both physical and logical 6319102550Siwasakipointers internally. This required a change to the 6320102550SiwasakiAcpiOsGetRootPointer interface. 6321102550Siwasaki 6322104470SiwasakiImplemented the use of ACPI 2.0 Generic Address Structures for 6323104470Siwasakiall 6324104470SiwasakiGPE, Fixed Event, and PM Timer I/O. This allows the use of 6325102550Siwasakimemory 6326102550Siwasakimapped I/O for these ACPI features. 6327102550Siwasaki 6328102550SiwasakiInitialization now ignores not only non-required tables (All 6329102550Siwasakitables other than the FADT, FACS, DSDT, and SSDTs), but also does 6330114237Snjlnot validate the table headers of unrecognized tables. 6331114237Snjl 6332114237SnjlFixed a problem where a notify handler could only be 6333114237Snjlinstalled/removed on an object of type Device. All "notify" 6334114237Snjl 6335114237Snjlobjects are now supported -- Devices, Processor, Power, and 6336114237SnjlThermal. 6337102550Siwasaki 6338102550SiwasakiRemoved most verbosity from the ACPI_DB_INFO debug level. Only 6339102550Siwasakicritical information is returned when this debug level is 6340102550Siwasakienabled. 6341102550Siwasaki 6342102550SiwasakiCode and Data Size: Current core subsystem library sizes are 6343102550Siwasakishown 6344102550Siwasakibelow. These are the code and data sizes for the acpica.lib 6345102550Siwasakiproduced by the Microsoft Visual C++ 6.0 compiler, and these 6346102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 6347126372Snjlversion of the code includes the debug output trace mechanism and 6348126372Snjlhas a larger code and data size. Note that these values will 6349126372Snjlvary 6350114237Snjldepending on the efficiency of the compiler and the compiler 6351102550Siwasakioptions used during generation. 6352114237Snjl 6353114237Snjl Previous Release 6354114237Snjl Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 6355102550Siwasaki Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 6356102550Siwasaki Current Release: 6357104470Siwasaki Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 6358114237Snjl Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 6359114237Snjl 6360102550Siwasaki 6361102550Siwasaki2) Linux: 6362102550Siwasaki 6363114237SnjlThe processor driver (acpi_processor.c) now fully supports ACPI 6364114237Snjl2.0-based processor performance control (e.g. Intel(R) 6365114237SnjlSpeedStep(TM) technology) Note that older laptops that only have 6366102550Siwasakithe Intel "applet" interface are not supported through this. The 6367114237Snjl'limit' and 'performance' interface (/proc) are fully functional. 6368114237Snjl[Note that basic policy for controlling performance state 6369114237Snjltransitions will be included in the next version of ospmd.] The 6370102550Siwasakiidle handler was modified to more aggressively use C2, and PIIX4 6371114237Snjlerrata handling underwent a complete overhaul (big thanks to 6372114237SnjlDominik Brodowski). 6373102550Siwasaki 6374102550SiwasakiAdded support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 6375102550Siwasakibased devices in the ACPI namespace are now dynamically bound 6376102550Siwasaki(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 6377102550SiwasakiThis allows, among other things, ACPI to resolve bus numbers for 6378104470Siwasakisubordinate PCI bridges. 6379126372Snjl 6380126372SnjlEnhanced PCI IRQ routing to get the proper bus number for _PRT 6381126372Snjlentries defined underneath PCI bridges. 6382126372Snjl 6383126372SnjlAdded IBM 600E to bad bios list due to invalid _ADR value for 6384102550SiwasakiPIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 6385104470Siwasaki 6386126372SnjlIn the process of adding full MADT support (e.g. IOAPIC) for IA32 6387126372Snjl(acpi.c, mpparse.c) -- stay tuned. 6388102550Siwasaki 6389104470SiwasakiAdded back visual differentiation between fixed-feature and 6390126372Snjlcontrol-method buttons in dmesg. Buttons are also subtyped (e.g. 6391126372Snjlbutton/power/PWRF) to simplify button identification. 6392126372Snjl 6393102550SiwasakiWe no longer use -Wno-unused when compiling debug. Please ignore 6394114237Snjlany "_THIS_MODULE defined but not used" messages. 6395102550Siwasaki 6396114237SnjlCan now shut down the system using "magic sysrq" key. 6397114237Snjl 6398102550Siwasaki 6399104470Siwasaki3) iASL Compiler version 2041: 6400104470Siwasaki 6401102550SiwasakiFixed a problem where conversion errors for hex/octal/decimal 6402114237Snjlconstants were not reported. 6403114237Snjl 6404102550SiwasakiImplemented a fix for the General Register template Address 6405102550Siwasakifield. 6406102550SiwasakiThis field was 8 bits when it should be 64. 6407102550Siwasaki 6408114237SnjlFixed a problem where errors/warnings were no longer being 6409114237Snjlemitted 6410102550Siwasakiwithin the listing output file. 6411104470Siwasaki 6412104470SiwasakiImplemented the ACPI 2.0A restriction on ACPI Table Signatures to 6413102550Siwasakiexactly 4 characters, alphanumeric only. 6414104470Siwasaki 6415104470Siwasaki 6416102550Siwasaki 6417114237Snjl 6418114237Snjl---------------------------------------- 6419102550SiwasakiSummary of changes for this release: 03_08_02 6420102550Siwasaki 6421102550Siwasaki 6422102550Siwasaki1) ACPI CA Core Subsystem Version 20020308: 6423102550Siwasaki 6424102550SiwasakiFixed a problem with AML Fields where the use of the "AccessAny" 6425102550Siwasakikeyword could cause an interpreter error due to attempting to 6426102550Siwasakiread 6427102550Siwasakior write beyond the end of the parent Operation Region. 6428102550Siwasaki 6429102550SiwasakiFixed a problem in the SystemMemory Operation Region handler 6430102550Siwasakiwhere 6431102550Siwasakian attempt was made to map memory beyond the end of the region. 6432102550SiwasakiThis was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 6433102550Siwasakierrors on some Linux systems. 6434102550Siwasaki 6435102550SiwasakiFixed a problem where the interpreter/namespace "search to root" 6436114237Snjlalgorithm was not functioning for some object types. Relaxed the 6437114237Snjlinternal restriction on the search to allow upsearches for all 6438114237Snjlexternal object types as well as most internal types. 6439114237Snjl 6440114237Snjl 6441102550Siwasaki2) Linux: 6442104470Siwasaki 6443104470SiwasakiWe now use safe_halt() macro versus individual calls to sti | 6444102550Siwasakihlt. 6445114237Snjl 6446114237SnjlWriting to the processor limit interface should now work. "echo 6447102550Siwasaki1" 6448102550Siwasakiwill increase the limit, 2 will decrease, and 0 will reset to the 6449102550Siwasaki 6450102550Siwasakidefault. 6451102550Siwasaki 6452114237Snjl 6453114237Snjl3) ASL compiler: 6454114237Snjl 6455102550SiwasakiFixed segfault on Linux version. 6456104470Siwasaki 6457126372Snjl 6458126372Snjl---------------------------------------- 6459126372SnjlSummary of changes for this release: 02_25_02 6460102550Siwasaki 6461114237Snjl1) ACPI CA Core Subsystem: 6462102550Siwasaki 6463102550Siwasaki 6464102550SiwasakiFixed a problem where the GPE bit masks were not initialized 6465102550Siwasakiproperly, causing erratic GPE behavior. 6466102550Siwasaki 6467104470SiwasakiImplemented limited support for multiple calling conventions. 6468126372SnjlThe 6469126372Snjlcode can be generated with either the VPL (variable parameter 6470126372Snjllist, or "C") convention, or the FPL (fixed parameter list, or 6471126372Snjl"Pascal") convention. The core subsystem is about 3.4% smaller 6472126372Snjlwhen generated with FPL. 6473102550Siwasaki 6474102550Siwasaki 6475102550Siwasaki2) Linux 6476102550Siwasaki 6477102550SiwasakiRe-add some /proc/acpi/event functionality that was lost during 6478102550Siwasakithe rewrite 6479104470Siwasaki 6480126372SnjlResolved issue with /proc events for fixed-feature buttons 6481126372Snjlshowing 6482104470Siwasakiup as the system device. 6483126372Snjl 6484126372SnjlFixed checks on C2/C3 latencies to be inclusive of maximum 6485102550Siwasakivalues. 6486102550Siwasaki 6487102550SiwasakiReplaced AE_ERRORs in acpi_osl.c with more specific error codes. 6488102550Siwasaki 6489114237SnjlChanged ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 6490114237Snjl 6491102550SiwasakiFixed limit interface & usage to fix bugs with passive cooling 6492102550Siwasakihysterisis. 6493104470Siwasaki 6494114237SnjlRestructured PRT support. 6495102550Siwasaki 6496114237Snjl 6497114237Snjl---------------------------------------- 6498102550SiwasakiSummary of changes for this label: 02_14_02 6499102550Siwasaki 6500102550Siwasaki 6501102550Siwasaki1) ACPI CA Core Subsystem: 6502102550Siwasaki 6503114237SnjlImplemented support in AcpiLoadTable to allow loading of FACS and 6504114237SnjlFADT tables. 6505102550Siwasaki 6506102550SiwasakiSuport for the now-obsolete interim 0.71 64-bit ACPI tables has 6507102550Siwasakibeen removed. All 64-bit platforms should be migrated to the 6508102550SiwasakiACPI 6509102550Siwasaki2.0 tables. The actbl71.h header has been removed from the 6510102550Siwasakisource 6511102550Siwasakitree. 6512114237Snjl 6513126372SnjlAll C macros defined within the subsystem have been prefixed with 6514126372Snjl"ACPI_" to avoid collision with other system include files. 6515102550Siwasaki 6516104470SiwasakiRemoved the return value for the two AcpiOsPrint interfaces, 6517104470Siwasakisince 6518102550Siwasakiit is never used and causes lint warnings for ignoring the return 6519102550Siwasakivalue. 6520102550Siwasaki 6521102550SiwasakiAdded error checking to all internal mutex acquire and release 6522102550Siwasakicalls. Although a failure from one of these interfaces is 6523102550Siwasakiprobably a fatal system error, these checks will cause the 6524114237Snjlimmediate abort of the currently executing method or interface. 6525114237Snjl 6526126372SnjlFixed a problem where the AcpiSetCurrentResources interface could 6527126372Snjlfault. This was a side effect of the deployment of the new 6528126372Snjlmemory 6529102550Siwasakiallocation model. 6530114237Snjl 6531114237SnjlFixed a couple of problems with the Global Lock support 6532114237Snjlintroduced 6533114237Snjlin the last major build. The "common" (1.0/2.0) internal FACS 6534114237Snjlwas 6535102550Siwasakibeing overwritten with the FACS signature and clobbering the 6536104470SiwasakiGlobal Lock pointer. Also, the actual firmware FACS was being 6537104470Siwasakiunmapped after construction of the "common" FACS, preventing 6538102550Siwasakiaccess to the actual Global Lock field within it. The "common" 6539114237Snjlinternal FACS is no longer installed as an actual ACPI table; it 6540114237Snjlis used simply as a global. 6541114237Snjl 6542114237SnjlCode and Data Size: Current core subsystem library sizes are 6543102550Siwasakishown 6544114237Snjlbelow. These are the code and data sizes for the acpica.lib 6545114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 6546102550Siwasakivalues do not include any ACPI driver or OSPM code. The debug 6547102550Siwasakiversion of the code includes the debug output trace mechanism and 6548102550Siwasakihas a larger code and data size. Note that these values will 6549102550Siwasakivary 6550102550Siwasakidepending on the efficiency of the compiler and the compiler 6551114237Snjloptions used during generation. 6552114237Snjl 6553114237Snjl Previous Release (02_07_01) 6554126372Snjl Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 6555126372Snjl Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 6556102550Siwasaki Current Release: 6557102550Siwasaki Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 6558104470Siwasaki Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 6559114237Snjl 6560114237Snjl 6561102550Siwasaki2) Linux 6562114237Snjl 6563114237SnjlUpdated Linux-specific code for core macro and OSL interface 6564114237Snjlchanges described above. 6565114237Snjl 6566126372SnjlImproved /proc/acpi/event. It now can be opened only once and has 6567126372Snjlproper poll functionality. 6568114237Snjl 6569114237SnjlFixed and restructured power management (acpi_bus). 6570114237Snjl 6571114237SnjlOnly create /proc "view by type" when devices of that class 6572102550Siwasakiexist. 6573114237Snjl 6574114237SnjlFixed "charging/discharging" bug (and others) in acpi_battery. 6575104470Siwasaki 6576102550SiwasakiImproved thermal zone code. 6577102550Siwasaki 6578102550Siwasaki 6579102550Siwasaki3) ASL Compiler, version X2039: 6580102550Siwasaki 6581102550Siwasaki 6582102550SiwasakiImplemented the new compiler restriction on ASL String hex/octal 6583102550Siwasakiescapes to non-null, ASCII values. An error results if an 6584102550Siwasakiinvalid 6585102550Siwasakivalue is used. (This will require an ACPI 2.0 specification 6586102550Siwasakichange.) 6587126372Snjl 6588126372SnjlAML object labels that are output to the optional C and ASM 6589126372Snjlsource 6590126372Snjlare now prefixed with both the ACPI table signature and table ID 6591114237Snjlto help guarantee uniqueness within a large BIOS project. 6592102550Siwasaki 6593114237Snjl 6594114237Snjl---------------------------------------- 6595114237SnjlSummary of changes for this label: 02_01_02 6596114237Snjl 6597114237Snjl1) ACPI CA Core Subsystem: 6598114237Snjl 6599102550SiwasakiACPI 2.0 support is complete in the entire Core Subsystem and the 6600102550SiwasakiASL compiler. All new ACPI 2.0 operators are implemented and all 6601102550Siwasakiother changes for ACPI 2.0 support are complete. With 6602102550Siwasakisimultaneous code and data optimizations throughout the 6603102550Siwasakisubsystem, 6604102550SiwasakiACPI 2.0 support has been implemented with almost no additional 6605102550Siwasakicost in terms of code and data size. 6606102550Siwasaki 6607114237SnjlImplemented a new mechanism for allocation of return buffers. If 6608114237Snjlthe buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 6609114237Snjlbe allocated on behalf of the caller. Consolidated all return 6610114237Snjlbuffer validation and allocation to a common procedure. Return 6611114237Snjlbuffers will be allocated via the primary OSL allocation 6612114237Snjlinterface 6613102550Siwasakisince it appears that a separate pool is not needed by most 6614104470Siwasakiusers. 6615104470SiwasakiIf a separate pool is required for these buffers, the caller can 6616114237Snjlstill use the original mechanism and pre-allocate the buffer(s). 6617114237Snjl 6618114237SnjlImplemented support for string operands within the DerefOf 6619102550Siwasakioperator. 6620102550Siwasaki 6621102550SiwasakiRestructured the Hardware and Event managers to be table driven, 6622102550Siwasakisimplifying the source code and reducing the amount of generated 6623114237Snjlcode. 6624114237Snjl 6625114237SnjlSplit the common read/write low-level ACPI register bitfield 6626114237Snjlprocedure into a separate read and write, simplifying the code 6627114237Snjlconsiderably. 6628114237Snjl 6629114237SnjlObsoleted the AcpiOsCallocate OSL interface. This interface was 6630102550Siwasakiused only a handful of times and didn't have enough critical mass 6631102550Siwasakifor a separate interface. Replaced with a common calloc 6632102550Siwasakiprocedure 6633114237Snjlin the core. 6634102550Siwasaki 6635102550SiwasakiFixed a reported problem with the GPE number mapping mechanism 6636126372Snjlthat allows GPE1 numbers to be non-contiguous with GPE0. 6637126372SnjlReorganized the GPE information and shrunk a large array that was 6638126372Snjloriginally large enough to hold info for all possible GPEs (256) 6639126372Snjlto simply large enough to hold all GPEs up to the largest GPE 6640126372Snjlnumber on the machine. 6641102550Siwasaki 6642104470SiwasakiFixed a reported problem with resource structure alignment on 64- 6643104470Siwasakibit platforms. 6644102550Siwasaki 6645104470SiwasakiChanged the AcpiEnableEvent and AcpiDisableEvent external 6646114237Snjlinterfaces to not require any flags for the common case of 6647114237Snjlenabling/disabling a GPE. 6648114237Snjl 6649102550SiwasakiImplemented support to allow a "Notify" on a Processor object. 6650102550Siwasaki 6651114237SnjlMost TBDs in comments within the source code have been resolved 6652114237Snjland eliminated. 6653126372Snjl 6654126372Snjl 6655102550SiwasakiFixed a problem in the interpreter where a standalone parent 6656102550Siwasakiprefix (^) was not handled correctly in the interpreter and 6657102550Siwasakidebugger. 6658102550Siwasaki 6659102550SiwasakiRemoved obsolete and unnecessary GPE save/restore code. 6660102550Siwasaki 6661114237SnjlImplemented Field support in the ASL Load operator. This allows 6662114237Snjla 6663126372Snjltable to be loaded from a named field, in addition to loading a 6664126372Snjltable directly from an Operation Region. 6665102550Siwasaki 6666102550SiwasakiImplemented timeout and handle support in the external Global 6667114237SnjlLock 6668114237Snjlinterfaces. 6669114237Snjl 6670114237SnjlFixed a problem in the AcpiDump utility where pathnames were no 6671102550Siwasakilonger being generated correctly during the dump of named 6672102550Siwasakiobjects. 6673102550Siwasaki 6674102550SiwasakiModified the AML debugger to give a full display of if/while 6675114237Snjlpredicates instead of just one AML opcode at a time. (The 6676114237Snjlpredicate can have several nested ASL statements.) The old 6677114237Snjlmethod 6678114237Snjlwas confusing during single stepping. 6679114237Snjl 6680114237SnjlCode and Data Size: Current core subsystem library sizes are 6681114237Snjlshown 6682126372Snjlbelow. These are the code and data sizes for the acpica.lib 6683126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 6684126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 6685102550Siwasakiversion of the code includes the debug output trace mechanism and 6686104470Siwasakihas a larger code and data size. Note that these values will 6687114237Snjlvary 6688114237Snjldepending on the efficiency of the compiler and the compiler 6689102550Siwasakioptions used during generation. 6690102550Siwasaki 6691102550Siwasaki Previous Release (12_18_01) 6692102550Siwasaki Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 6693102550Siwasaki Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 6694114237Snjl Current Release: 6695114237Snjl Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 6696126372Snjl Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 6697126372Snjl 6698114237Snjl2) Linux 6699114237Snjl 6700126372Snjl Implemented fix for PIIX reverse throttling errata (Processor 6701126372Snjldriver) 6702126372Snjl 6703126372SnjlAdded new Limit interface (Processor and Thermal drivers) 6704126372Snjl 6705102550SiwasakiNew thermal policy (Thermal driver) 6706102550Siwasaki 6707102550SiwasakiMany updates to /proc 6708102550Siwasaki 6709102550SiwasakiBattery "low" event support (Battery driver) 6710102550Siwasaki 6711114237SnjlSupports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 6712114237Snjl 6713102550SiwasakiIA32 - IA64 initialization unification, no longer experimental 6714102550Siwasaki 6715102550SiwasakiMenuconfig options redesigned 6716 67173) ASL Compiler, version X2037: 6718 6719Implemented several new output features to simplify integration 6720of 6721AML code into firmware: 1) Output the AML in C source code with 6722labels for each named ASL object. The original ASL source 6723code 6724is interleaved as C comments. 2) Output the AML in ASM source 6725code 6726with labels and interleaved ASL source. 3) Output the AML in 6727raw hex table form, in either C or ASM. 6728 6729Implemented support for optional string parameters to the 6730LoadTable operator. 6731 6732Completed support for embedded escape sequences within string 6733literals. The compiler now supports all single character escapes 6734as well as the Octal and Hex escapes. Note: the insertion of a 6735null byte into a string literal (via the hex/octal escape) causes 6736the string to be immediately terminated. A warning is issued. 6737 6738Fixed a problem where incorrect AML was generated for the case 6739where an ASL namepath consists of a single parent prefix ( 6740 6741) with no trailing name segments. 6742 6743The compiler has been successfully generated with a 64-bit C 6744compiler. 6745 6746 6747 6748 6749---------------------------------------- 6750Summary of changes for this label: 12_18_01 6751 67521) Linux 6753 6754Enhanced blacklist with reason and severity fields. Any table's 6755signature may now be used to identify a blacklisted system. 6756 6757Call _PIC control method to inform the firmware which interrupt 6758model the OS is using. Turn on any disabled link devices. 6759 6760Cleaned up busmgr /proc error handling (Andreas Dilger) 6761 6762 2) ACPI CA Core Subsystem: 6763 6764Implemented ACPI 2.0 semantics for the "Break" operator (Exit 6765from 6766while loop) 6767 6768Completed implementation of the ACPI 2.0 "Continue", 6769"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 6770operators. All new ACPI 2.0 operators are now implemented in 6771both 6772the ASL compiler and the AML interpreter. The only remaining 6773ACPI 67742.0 task is support for the String data type in the DerefOf 6775operator. Fixed a problem with AcquireMutex where the status 6776code 6777was lost if the caller had to actually wait for the mutex. 6778 6779Increased the maximum ASL Field size from 64K bits to 4G bits. 6780 6781Completed implementation of the external Global Lock interfaces - 6782- 6783AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 6784Handler parameters were added. 6785 6786Completed another pass at removing warnings and issues when 6787compiling with 64-bit compilers. The code now compiles cleanly 6788with the Intel 64-bit C/C++ compiler. Most notably, the pointer 6789add and subtract (diff) macros have changed considerably. 6790 6791 6792Created and deployed a new ACPI_SIZE type that is 64-bits wide on 679364-bit platforms, 32-bits on all others. This type is used 6794wherever memory allocation and/or the C sizeof() operator is 6795used, 6796and affects the OSL memory allocation interfaces AcpiOsAllocate 6797and AcpiOsCallocate. 6798 6799Implemented sticky user breakpoints in the AML debugger. 6800 6801Code and Data Size: Current core subsystem library sizes are 6802shown 6803below. These are the code and data sizes for the acpica.lib 6804produced by the Microsoft Visual C++ 6.0 compiler, and these 6805values do not include any ACPI driver or OSPM code. The debug 6806version of the code includes the debug output trace mechanism and 6807has a larger code and data size. Note that these values will vary 6808depending on the efficiency of the compiler and the compiler 6809options used during generation. 6810 6811 Previous Release (12_05_01) 6812 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 6813 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 6814 Current Release: 6815 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 6816 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 6817 6818 3) ASL Compiler, version X2034: 6819 6820Now checks for (and generates an error if detected) the use of a 6821Break or Continue statement without an enclosing While statement. 6822 6823 6824Successfully generated the compiler with the Intel 64-bit C 6825compiler. 6826 6827 ---------------------------------------- 6828Summary of changes for this label: 12_05_01 6829 6830 1) ACPI CA Core Subsystem: 6831 6832The ACPI 2.0 CopyObject operator is fully implemented. This 6833operator creates a new copy of an object (and is also used to 6834bypass the "implicit conversion" mechanism of the Store 6835operator.) 6836 6837The ACPI 2.0 semantics for the SizeOf operator are fully 6838implemented. The change is that performing a SizeOf on a 6839reference object causes an automatic dereference of the object to 6840tha actual value before the size is evaluated. This behavior was 6841undefined in ACPI 1.0. 6842 6843The ACPI 2.0 semantics for the Extended IRQ resource descriptor 6844have been implemented. The interrupt polarity and mode are now 6845independently set. 6846 6847Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 6848appearing in Package objects were not properly converted to 6849integers when the internal Package was converted to an external 6850object (via the AcpiEvaluateObject interface.) 6851 6852Fixed a problem with the namespace object deletion mechanism for 6853objects created by control methods. There were two parts to this 6854problem: 1) Objects created during the initialization phase 6855method 6856parse were not being deleted, and 2) The object owner ID 6857mechanism 6858to track objects was broken. 6859 6860Fixed a problem where the use of the ASL Scope operator within a 6861control method would result in an invalid opcode exception. 6862 6863Fixed a problem introduced in the previous label where the buffer 6864length required for the _PRT structure was not being returned 6865correctly. 6866 6867Code and Data Size: Current core subsystem library sizes are 6868shown 6869below. These are the code and data sizes for the acpica.lib 6870produced by the Microsoft Visual C++ 6.0 compiler, and these 6871values do not include any ACPI driver or OSPM code. The debug 6872version of the code includes the debug output trace mechanism and 6873has a larger code and data size. Note that these values will 6874vary 6875depending on the efficiency of the compiler and the compiler 6876options used during generation. 6877 6878 Previous Release (11_20_01) 6879 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 6880 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 6881 6882 Current Release: 6883 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 6884 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 6885 6886 2) Linux: 6887 6888Updated all files to apply cleanly against 2.4.16. 6889 6890Added basic PCI Interrupt Routing Table (PRT) support for IA32 6891(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 6892version supports both static and dyanmic PRT entries, but dynamic 6893entries are treated as if they were static (not yet 6894reconfigurable). Architecture- specific code to use this data is 6895absent on IA32 but should be available shortly. 6896 6897Changed the initialization sequence to start the ACPI interpreter 6898(acpi_init) prior to initialization of the PCI driver (pci_init) 6899in init/main.c. This ordering is required to support PRT and 6900facilitate other (future) enhancement. A side effect is that the 6901ACPI bus driver and certain device drivers can no longer be 6902loaded 6903as modules. 6904 6905Modified the 'make menuconfig' options to allow PCI Interrupt 6906Routing support to be included without the ACPI Bus and other 6907device drivers. 6908 6909 3) ASL Compiler, version X2033: 6910 6911Fixed some issues with the use of the new CopyObject and 6912DataTableRegion operators. Both are fully functional. 6913 6914 ---------------------------------------- 6915Summary of changes for this label: 11_20_01 6916 6917 20 November 2001. Summary of changes for this release. 6918 6919 1) ACPI CA Core Subsystem: 6920 6921Updated Index support to match ACPI 2.0 semantics. Storing a 6922Integer, String, or Buffer to an Index of a Buffer will store 6923only 6924the least-significant byte of the source to the Indexed buffer 6925byte. Multiple writes are not performed. 6926 6927Fixed a problem where the access type used in an AccessAs ASL 6928operator was not recorded correctly into the field object. 6929 6930Fixed a problem where ASL Event objects were created in a 6931signalled state. Events are now created in an unsignalled state. 6932 6933The internal object cache is now purged after table loading and 6934initialization to reduce the use of dynamic kernel memory -- on 6935the assumption that object use is greatest during the parse phase 6936of the entire table (versus the run-time use of individual 6937control 6938methods.) 6939 6940ACPI 2.0 variable-length packages are now fully operational. 6941 6942Code and Data Size: Code and Data optimizations have permitted 6943new 6944feature development with an actual reduction in the library size. 6945Current core subsystem library sizes are shown below. These are 6946the code and data sizes for the acpica.lib produced by the 6947Microsoft Visual C++ 6.0 compiler, and these values do not 6948include 6949any ACPI driver or OSPM code. The debug version of the code 6950includes the debug output trace mechanism and has a larger code 6951and data size. Note that these values will vary depending on the 6952efficiency of the compiler and the compiler options used during 6953generation. 6954 6955 Previous Release (11_09_01): 6956 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 6957 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 6958 6959 Current Release: 6960 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 6961 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 6962 6963 2) Linux: 6964 6965Enhanced the ACPI boot-time initialization code to allow the use 6966of Local APIC tables for processor enumeration on IA-32, and to 6967pave the way for a fully MPS-free boot (on SMP systems) in the 6968near future. This functionality replaces 6969arch/i386/kernel/acpitables.c, which was introduced in an earlier 69702.4.15-preX release. To enable this feature you must add 6971"acpi_boot=on" to the kernel command line -- see the help entry 6972for CONFIG_ACPI_BOOT for more information. An IA-64 release is 6973in 6974the works... 6975 6976Restructured the configuration options to allow boot-time table 6977parsing support without inclusion of the ACPI Interpreter (and 6978other) code. 6979 6980NOTE: This release does not include fixes for the reported 6981events, 6982power-down, and thermal passive cooling issues (coming soon). 6983 6984 3) ASL Compiler: 6985 6986Added additional typechecking for Fields within restricted access 6987Operation Regions. All fields within EC and CMOS regions must be 6988declared with ByteAcc. All fields withing SMBus regions must be 6989declared with the BufferAcc access type. 6990 6991Fixed a problem where the listing file output of control methods 6992no longer interleaved the actual AML code with the ASL source 6993code. 6994 6995 6996 6997 6998---------------------------------------- 6999Summary of changes for this label: 11_09_01 7000 70011) ACPI CA Core Subsystem: 7002 7003Implemented ACPI 2.0-defined support for writes to fields with a 7004Buffer, String, or Integer source operand that is smaller than 7005the 7006target field. In these cases, the source operand is zero-extended 7007to fill the target field. 7008 7009Fixed a problem where a Field starting bit offset (within the 7010parent operation region) was calculated incorrectly if the 7011 7012alignment of the field differed from the access width. This 7013affected CreateWordField, CreateDwordField, CreateQwordField, and 7014possibly other fields that use the "AccessAny" keyword. 7015 7016Fixed a problem introduced in the 11_02_01 release where indirect 7017stores through method arguments did not operate correctly. 7018 70192) Linux: 7020 7021Implemented boot-time ACPI table parsing support 7022(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 7023facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 7024legacy BIOS interfaces (e.g. MPS) for the configuration of system 7025processors, memory, and interrupts during setup_arch(). Note 7026that 7027this patch does not include the required architecture-specific 7028changes required to apply this information -- subsequent patches 7029will be posted for both IA32 and IA64 to achieve this. 7030 7031Added low-level sleep support for IA32 platforms, courtesy of Pat 7032Mochel. This allows IA32 systems to transition to/from various 7033sleeping states (e.g. S1, S3), although the lack of a centralized 7034driver model and power-manageable drivers will prevent its 7035(successful) use on most systems. 7036 7037Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 7038submenu, unified IA32 and IA64 options, added new "Boot using 7039ACPI 7040tables" option, etc. 7041 7042Increased the default timeout for the EC driver from 1ms to 10ms 7043(1000 cycles of 10us) to try to address AE_TIME errors during EC 7044transactions. 7045 7046 ---------------------------------------- 7047Summary of changes for this label: 11_02_01 7048 70491) ACPI CA Core Subsystem: 7050 7051ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 7052(QWordAcc keyword). All ACPI 2.0 64-bit support is now 7053implemented. 7054 7055OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 7056changes to support ACPI 2.0 Qword field access. Read/Write 7057PciConfiguration(), Read/Write Memory(), and Read/Write Port() 7058now 7059accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 7060the value parameter for the address space handler interface is 7061now 7062an ACPI_INTEGER. OSL implementations of these interfaces must 7063now 7064handle the case where the Width parameter is 64. 7065 7066Index Fields: Fixed a problem where unaligned bit assembly and 7067disassembly for IndexFields was not supported correctly. 7068 7069Index and Bank Fields: Nested Index and Bank Fields are now 7070supported. During field access, a check is performed to ensure 7071that the value written to an Index or Bank register is not out of 7072the range of the register. The Index (or Bank) register is 7073written before each access to the field data. Future support will 7074include allowing individual IndexFields to be wider than the 7075DataRegister width. 7076 7077Fields: Fixed a problem where the AML interpreter was incorrectly 7078attempting to write beyond the end of a Field/OpRegion. This was 7079a boundary case that occurred when a DWORD field was written to a 7080BYTE access OpRegion, forcing multiple writes and causing the 7081interpreter to write one datum too many. 7082 7083Fields: Fixed a problem with Field/OpRegion access where the 7084starting bit address of a field was incorrectly calculated if the 7085current access type was wider than a byte (WordAcc, DwordAcc, or 7086QwordAcc). 7087 7088Fields: Fixed a problem where forward references to individual 7089FieldUnits (individual Field names within a Field definition) 7090were 7091not resolved during the AML table load. 7092 7093Fields: Fixed a problem where forward references from a Field 7094definition to the parent Operation Region definition were not 7095resolved during the AML table load. 7096 7097Fields: Duplicate FieldUnit names within a scope are now detected 7098during AML table load. 7099 7100Acpi Interfaces: Fixed a problem where the AcpiGetName() 7101interface 7102returned an incorrect name for the root node. 7103 7104Code and Data Size: Code and Data optimizations have permitted 7105new 7106feature development with an actual reduction in the library size. 7107Current core subsystem library sizes are shown below. These are 7108the code and data sizes for the acpica.lib produced by the 7109Microsoft Visual C++ 6.0 compiler, and these values do not 7110include 7111any ACPI driver or OSPM code. The debug version of the code 7112includes the debug output trace mechanism and has a larger code 7113and data size. Note that these values will vary depending on the 7114efficiency of the compiler and the compiler options used during 7115generation. 7116 7117 Previous Release (10_18_01): 7118 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 7119 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 7120 7121 Current Release: 7122 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 7123 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 7124 7125 2) Linux: 7126 7127Improved /proc processor output (Pavel Machek) Re-added 7128MODULE_LICENSE("GPL") to all modules. 7129 7130 3) ASL Compiler version X2030: 7131 7132Duplicate FieldUnit names within a scope are now detected and 7133flagged as errors. 7134 7135 4) Documentation: 7136 7137Programmer Reference updated to reflect OSL and address space 7138handler interface changes described above. 7139 7140---------------------------------------- 7141Summary of changes for this label: 10_18_01 7142 7143ACPI CA Core Subsystem: 7144 7145Fixed a problem with the internal object reference count 7146mechanism 7147that occasionally caused premature object deletion. This resolves 7148all of the outstanding problem reports where an object is deleted 7149in the middle of an interpreter evaluation. Although this 7150problem 7151only showed up in rather obscure cases, the solution to the 7152problem involved an adjustment of all reference counts involving 7153objects attached to namespace nodes. 7154 7155Fixed a problem with Field support in the interpreter where 7156writing to an aligned field whose length is an exact multiple (2 7157or greater) of the field access granularity would cause an 7158attempt 7159to write beyond the end of the field. 7160 7161The top level AML opcode execution functions within the 7162interpreter have been renamed with a more meaningful and 7163consistent naming convention. The modules exmonad.c and 7164exdyadic.c were eliminated. New modules are exoparg1.c, 7165exoparg2.c, exoparg3.c, and exoparg6.c. 7166 7167Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 7168 7169Fixed a problem where the AML debugger was causing some internal 7170objects to not be deleted during subsystem termination. 7171 7172Fixed a problem with the external AcpiEvaluateObject interface 7173where the subsystem would fault if the named object to be 7174evaluated refered to a constant such as Zero, Ones, etc. 7175 7176Fixed a problem with IndexFields and BankFields where the 7177subsystem would fault if the index, data, or bank registers were 7178not defined in the same scope as the field itself. 7179 7180Added printf format string checking for compilers that support 7181this feature. Corrected more than 50 instances of issues with 7182format specifiers within invocations of ACPI_DEBUG_PRINT 7183throughout the core subsystem code. 7184 7185The ASL "Revision" operator now returns the ACPI support level 7186implemented in the core - the value "2" since the ACPI 2.0 7187support 7188is more than 50% implemented. 7189 7190Enhanced the output of the AML debugger "dump namespace" command 7191to output in a more human-readable form. 7192 7193Current core subsystem library code sizes are shown below. These 7194 7195are the code and data sizes for the acpica.lib produced by the 7196Microsoft Visual C++ 6.0 compiler, and these values do not 7197include 7198any ACPI driver or OSPM code. The debug version of the code 7199includes the full debug trace mechanism -- leading to a much 7200 7201larger code and data size. Note that these values will vary 7202depending on the efficiency of the compiler and the compiler 7203options used during generation. 7204 7205 Previous Label (09_20_01): 7206 Non-Debug Version: 65K Code, 5K Data, 70K Total 7207 Debug Version: 138K Code, 58K Data, 196K Total 7208 7209 This Label: 7210 7211 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 7212 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 7213 7214Linux: 7215 7216Implemented a "Bad BIOS Blacklist" to track machines that have 7217known ASL/AML problems. 7218 7219Enhanced the /proc interface for the thermal zone driver and 7220added 7221support for _HOT (the critical suspend trip point). The 'info' 7222file now includes threshold/policy information, and allows 7223setting 7224of _SCP (cooling preference) and _TZP (polling frequency) values 7225to the 'info' file. Examples: "echo tzp=5 > info" sets the 7226polling 7227frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 7228preference to the passive/quiet mode (if supported by the ASL). 7229 7230Implemented a workaround for a gcc bug that resuted in an OOPs 7231when loading the control method battery driver. 7232 7233 ---------------------------------------- 7234Summary of changes for this label: 09_20_01 7235 7236 ACPI CA Core Subsystem: 7237 7238The AcpiEnableEvent and AcpiDisableEvent interfaces have been 7239modified to allow individual GPE levels to be flagged as wake- 7240enabled (i.e., these GPEs are to remain enabled when the platform 7241sleeps.) 7242 7243The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 7244support wake-enabled GPEs. This means that upon entering the 7245sleep state, all GPEs that are not wake-enabled are disabled. 7246When leaving the sleep state, these GPEs are reenabled. 7247 7248A local double-precision divide/modulo module has been added to 7249enhance portability to OS kernels where a 64-bit math library is 7250not available. The new module is "utmath.c". 7251 7252Several optimizations have been made to reduce the use of CPU 7253stack. Originally over 2K, the maximum stack usage is now below 72542K at 1860 bytes (1.82k) 7255 7256Fixed a problem with the AcpiGetFirmwareTable interface where the 7257root table pointer was not mapped into a logical address 7258properly. 7259 7260Fixed a problem where a NULL pointer was being dereferenced in 7261the 7262interpreter code for the ASL Notify operator. 7263 7264Fixed a problem where the use of the ASL Revision operator 7265returned an error. This operator now returns the current version 7266of the ACPI CA core subsystem. 7267 7268Fixed a problem where objects passed as control method parameters 7269to AcpiEvaluateObject were always deleted at method termination. 7270However, these objects may end up being stored into the namespace 7271by the called method. The object reference count mechanism was 7272applied to these objects instead of a force delete. 7273 7274Fixed a problem where static strings or buffers (contained in the 7275AML code) that are declared as package elements within the ASL 7276code could cause a fault because the interpreter would attempt to 7277delete them. These objects are now marked with the "static 7278object" flag to prevent any attempt to delete them. 7279 7280Implemented an interpreter optimization to use operands directly 7281from the state object instead of extracting the operands to local 7282variables. This reduces stack use and code size, and improves 7283performance. 7284 7285The module exxface.c was eliminated as it was an unnecessary 7286extra 7287layer of code. 7288 7289Current core subsystem library code sizes are shown below. These 7290are the code and data sizes for the acpica.lib produced by the 7291Microsoft Visual C++ 6.0 compiler, and these values do not 7292include 7293any ACPI driver or OSPM code. The debug version of the code 7294includes the full debug trace mechanism -- leading to a much 7295larger code and data size. Note that these values will vary 7296depending on the efficiency of the compiler and the compiler 7297options used during generation. 7298 7299 Non-Debug Version: 65K Code, 5K Data, 70K Total 7300(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 7301Total (Previously 195K) 7302 7303Linux: 7304 7305Support for ACPI 2.0 64-bit integers has been added. All ACPI 7306Integer objects are now 64 bits wide 7307 7308All Acpi data types and structures are now in lower case. Only 7309Acpi macros are upper case for differentiation. 7310 7311 Documentation: 7312 7313Changes to the external interfaces as described above. 7314 7315 ---------------------------------------- 7316Summary of changes for this label: 08_31_01 7317 7318 ACPI CA Core Subsystem: 7319 7320A bug with interpreter implementation of the ASL Divide operator 7321was found and fixed. The implicit function return value (not the 7322explicit store operands) was returning the remainder instead of 7323the quotient. This was a longstanding bug and it fixes several 7324known outstanding issues on various platforms. 7325 7326The ACPI_DEBUG_PRINT and function trace entry/exit macros have 7327been further optimized for size. There are 700 invocations of 7328the 7329DEBUG_PRINT macro alone, so each optimization reduces the size of 7330the debug version of the subsystem significantly. 7331 7332A stack trace mechanism has been implemented. The maximum stack 7333usage is about 2K on 32-bit platforms. The debugger command 7334"stat 7335stack" will display the current maximum stack usage. 7336 7337All public symbols and global variables within the subsystem are 7338now prefixed with the string "Acpi". This keeps all of the 7339symbols grouped together in a kernel map, and avoids conflicts 7340with other kernel subsystems. 7341 7342Most of the internal fixed lookup tables have been moved into the 7343code segment via the const operator. 7344 7345Several enhancements have been made to the interpreter to both 7346reduce the code size and improve performance. 7347 7348Current core subsystem library code sizes are shown below. These 7349are the code and data sizes for the acpica.lib produced by the 7350Microsoft Visual C++ 6.0 compiler, and these values do not 7351include 7352any ACPI driver or OSPM code. The debug version of the code 7353includes the full debug trace mechanism which contains over 700 7354invocations of the DEBUG_PRINT macro, 500 function entry macro 7355invocations, and over 900 function exit macro invocations -- 7356leading to a much larger code and data size. Note that these 7357values will vary depending on the efficiency of the compiler and 7358the compiler options used during generation. 7359 7360 Non-Debug Version: 64K Code, 5K Data, 69K Total 7361Debug Version: 137K Code, 58K Data, 195K Total 7362 7363 Linux: 7364 7365Implemented wbinvd() macro, pending a kernel-wide definition. 7366 7367Fixed /proc/acpi/event to handle poll() and short reads. 7368 7369 ASL Compiler, version X2026: 7370 7371Fixed a problem introduced in the previous label where the AML 7372 7373code emitted for package objects produced packages with zero 7374length. 7375 7376 ---------------------------------------- 7377Summary of changes for this label: 08_16_01 7378 7379ACPI CA Core Subsystem: 7380 7381The following ACPI 2.0 ASL operators have been implemented in the 7382AML interpreter (These are already supported by the Intel ASL 7383compiler): ToDecimalString, ToHexString, ToString, ToInteger, 7384and 7385ToBuffer. Support for 64-bit AML constants is implemented in the 7386AML parser, debugger, and disassembler. 7387 7388The internal memory tracking mechanism (leak detection code) has 7389been upgraded to reduce the memory overhead (a separate tracking 7390block is no longer allocated for each memory allocation), and now 7391supports all of the internal object caches. 7392 7393The data structures and code for the internal object caches have 7394been coelesced and optimized so that there is a single cache and 7395memory list data structure and a single group of functions that 7396implement generic cache management. This has reduced the code 7397size in both the debug and release versions of the subsystem. 7398 7399The DEBUG_PRINT macro(s) have been optimized for size and 7400replaced 7401by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 7402different, because it generates a single call to an internal 7403function. This results in a savings of about 90 bytes per 7404invocation, resulting in an overall code and data savings of 7405about 740616% in the debug version of the subsystem. 7407 7408 Linux: 7409 7410Fixed C3 disk corruption problems and re-enabled C3 on supporting 7411machines. 7412 7413Integrated low-level sleep code by Patrick Mochel. 7414 7415Further tweaked source code Linuxization. 7416 7417Other minor fixes. 7418 7419 ASL Compiler: 7420 7421Support for ACPI 2.0 variable length packages is fixed/completed. 7422 7423Fixed a problem where the optional length parameter for the ACPI 74242.0 ToString operator. 7425 7426Fixed multiple extraneous error messages when a syntax error is 7427detected within the declaration line of a control method. 7428 7429 ---------------------------------------- 7430Summary of changes for this label: 07_17_01 7431 7432ACPI CA Core Subsystem: 7433 7434Added a new interface named AcpiGetFirmwareTable to obtain any 7435ACPI table via the ACPI signature. The interface can be called 7436at 7437any time during kernel initialization, even before the kernel 7438virtual memory manager is initialized and paging is enabled. 7439This 7440allows kernel subsystems to obtain ACPI tables very early, even 7441before the ACPI CA subsystem is initialized. 7442 7443Fixed a problem where Fields defined with the AnyAcc attribute 7444could be resolved to the incorrect address under the following 7445conditions: 1) the field width is larger than 8 bits and 2) the 7446parent operation region is not defined on a DWORD boundary. 7447 7448Fixed a problem where the interpreter is not being locked during 7449namespace initialization (during execution of the _INI control 7450methods), causing an error when an attempt is made to release it 7451later. 7452 7453ACPI 2.0 support in the AML Interpreter has begun and will be 7454ongoing throughout the rest of this year. In this label, The Mod 7455operator is implemented. 7456 7457Added a new data type to contain full PCI addresses named 7458ACPI_PCI_ID. This structure contains the PCI Segment, Bus, 7459Device, 7460and Function values. 7461 7462 Linux: 7463 7464Enhanced the Linux version of the source code to change most 7465capitalized ACPI type names to lowercase. For example, all 7466instances of ACPI_STATUS are changed to acpi_status. This will 7467result in a large diff, but the change is strictly cosmetic and 7468aligns the CA code closer to the Linux coding standard. 7469 7470OSL Interfaces: 7471 7472The interfaces to the PCI configuration space have been changed 7473to 7474add the PCI Segment number and to split the single 32-bit 7475combined 7476DeviceFunction field into two 16-bit fields. This was 7477accomplished by moving the four values that define an address in 7478PCI configuration space (segment, bus, device, and function) to 7479the new ACPI_PCI_ID structure. 7480 7481The changes to the PCI configuration space interfaces led to a 7482reexamination of the complete set of address space access 7483interfaces for PCI, I/O, and Memory. The previously existing 18 7484interfaces have proven difficult to maintain (any small change 7485must be propagated across at least 6 interfaces) and do not 7486easily 7487allow for future expansion to 64 bits if necessary. Also, on 7488some 7489systems, it would not be appropriate to demultiplex the access 7490width (8, 16, 32,or 64) before calling the OSL if the 7491corresponding native OS interfaces contain a similar access width 7492parameter. For these reasons, the 18 address space interfaces 7493have been replaced by these 6 new ones: 7494 7495AcpiOsReadPciConfiguration 7496AcpiOsWritePciConfiguration 7497AcpiOsReadMemory 7498AcpiOsWriteMemory 7499AcpiOsReadPort 7500AcpiOsWritePort 7501 7502Added a new interface named AcpiOsGetRootPointer to allow the OSL 7503to perform the platform and/or OS-specific actions necessary to 7504obtain the ACPI RSDP table pointer. On IA-32 platforms, this 7505interface will simply call down to the CA core to perform the low- 7506memory search for the table. On IA-64, the RSDP is obtained from 7507EFI. Migrating this interface to the OSL allows the CA core to 7508 7509remain OS and platform independent. 7510 7511Added a new interface named AcpiOsSignal to provide a generic 7512"function code and pointer" interface for various miscellaneous 7513signals and notifications that must be made to the host OS. The 7514first such signals are intended to support the ASL Fatal and 7515Breakpoint operators. In the latter case, the AcpiOsBreakpoint 7516interface has been obsoleted. 7517 7518The definition of the AcpiFormatException interface has been 7519changed to simplify its use. The caller no longer must supply a 7520buffer to the call; A pointer to a const string is now returned 7521directly. This allows the call to be easily used in printf 7522statements, etc. since the caller does not have to manage a local 7523buffer. 7524 7525 7526 ASL Compiler, Version X2025: 7527 7528The ACPI 2.0 Switch/Case/Default operators have been implemented 7529and are fully functional. They will work with all ACPI 1.0 7530interpreters, since the operators are simply translated to 7531If/Else 7532pairs. 7533 7534The ACPI 2.0 ElseIf operator is implemented and will also work 7535with 1.0 interpreters, for the same reason. 7536 7537Implemented support for ACPI 2.0 variable-length packages. These 7538packages have a separate opcode, and their size is determined by 7539the interpreter at run-time. 7540 7541Documentation The ACPI CA Programmer Reference has been updated 7542to 7543reflect the new interfaces and changes to existing interfaces. 7544 7545 ------------------------------------------ 7546Summary of changes for this label: 06_15_01 7547 7548 ACPI CA Core Subsystem: 7549 7550Fixed a problem where a DWORD-accessed field within a Buffer 7551object would get its byte address inadvertently rounded down to 7552the nearest DWORD. Buffers are always Byte-accessible. 7553 7554 ASL Compiler, version X2024: 7555 7556Fixed a problem where the Switch() operator would either fault or 7557hang the compiler. Note however, that the AML code for this ACPI 75582.0 operator is not yet implemented. 7559 7560Compiler uses the new AcpiOsGetTimer interface to obtain compile 7561timings. 7562 7563Implementation of the CreateField operator automatically converts 7564a reference to a named field within a resource descriptor from a 7565byte offset to a bit offset if required. 7566 7567Added some missing named fields from the resource descriptor 7568support. These are the names that are automatically created by 7569the 7570compiler to reference fields within a descriptor. They are only 7571valid at compile time and are not passed through to the AML 7572interpreter. 7573 7574Resource descriptor named fields are now typed as Integers and 7575subject to compile-time typechecking when used in expressions. 7576 7577 ------------------------------------------ 7578Summary of changes for this label: 05_18_01 7579 7580 ACPI CA Core Subsystem: 7581 7582Fixed a couple of problems in the Field support code where bits 7583from adjacent fields could be returned along with the proper 7584field 7585bits. Restructured the field support code to improve performance, 7586readability and maintainability. 7587 7588New DEBUG_PRINTP macro automatically inserts the procedure name 7589into the output, saving hundreds of copies of procedure name 7590strings within the source, shrinking the memory footprint of the 7591debug version of the core subsystem. 7592 7593 Source Code Structure: 7594 7595The source code directory tree was restructured to reflect the 7596current organization of the component architecture. Some files 7597and directories have been moved and/or renamed. 7598 7599 Linux: 7600 7601Fixed leaking kacpidpc processes. 7602 7603Fixed queueing event data even when /proc/acpi/event is not 7604opened. 7605 7606 ASL Compiler, version X2020: 7607 7608Memory allocation performance enhancement - over 24X compile time 7609improvement on large ASL files. Parse nodes and namestring 7610buffers are now allocated from a large internal compiler buffer. 7611 7612The temporary .SRC file is deleted unless the "-s" option is 7613specified 7614 7615The "-d" debug output option now sends all output to the .DBG 7616file 7617instead of the console. 7618 7619"External" second parameter is now optional 7620 7621"ElseIf" syntax now properly allows the predicate 7622 7623Last operand to "Load" now recognized as a Target operand 7624 7625Debug object can now be used anywhere as a normal object. 7626 7627ResourceTemplate now returns an object of type BUFFER 7628 7629EISAID now returns an object of type INTEGER 7630 7631"Index" now works with a STRING operand 7632 7633"LoadTable" now accepts optional parameters 7634 7635"ToString" length parameter is now optional 7636 7637"Interrupt (ResourceType," parse error fixed. 7638 7639"Register" with a user-defined region space parse error fixed 7640 7641Escaped backslash at the end of a string ("\\") scan/parse error 7642fixed 7643 7644"Revision" is now an object of type INTEGER. 7645 7646 7647 7648------------------------------------------ 7649Summary of changes for this label: 05_02_01 7650 7651Linux: 7652 7653/proc/acpi/event now blocks properly. 7654 7655Removed /proc/sys/acpi. You can still dump your DSDT from 7656/proc/acpi/dsdt. 7657 7658 ACPI CA Core Subsystem: 7659 7660Fixed a problem introduced in the previous label where some of 7661the 7662"small" resource descriptor types were not recognized. 7663 7664Improved error messages for the case where an ASL Field is 7665outside 7666the range of the parent operation region. 7667 7668 ASL Compiler, version X2018: 7669 7670 7671Added error detection for ASL Fields that extend beyond the 7672length 7673of the parent operation region (only if the length of the region 7674is known at compile time.) This includes fields that have a 7675minimum access width that is smaller than the parent region, and 7676individual field units that are partially or entirely beyond the 7677extent of the parent. 7678 7679 7680 7681------------------------------------------ 7682Summary of changes for this label: 04_27_01 7683 7684 ACPI CA Core Subsystem: 7685 7686Fixed a problem where the namespace mutex could be released at 7687the 7688wrong time during execution of AcpiRemoveAddressSpaceHandler. 7689 7690Added optional thread ID output for debug traces, to simplify 7691debugging of multiple threads. Added context switch notification 7692when the debug code realizes that a different thread is now 7693executing ACPI code. 7694 7695Some additional external data types have been prefixed with the 7696string "ACPI_" for consistency. This may effect existing code. 7697The data types affected are the external callback typedefs - 7698e.g., 7699 7700WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 7701 7702 Linux: 7703 7704Fixed an issue with the OSL semaphore implementation where a 7705thread was waking up with an error from receiving a SIGCHLD 7706signal. 7707 7708Linux version of ACPI CA now uses the system C library for string 7709manipulation routines instead of a local implementation. 7710 7711Cleaned up comments and removed TBDs. 7712 7713 ASL Compiler, version X2017: 7714 7715Enhanced error detection and reporting for all file I/O 7716operations. 7717 7718 Documentation: 7719 7720Programmer Reference updated to version 1.06. 7721 7722 7723 7724------------------------------------------ 7725Summary of changes for this label: 04_13_01 7726 7727 ACPI CA Core Subsystem: 7728 7729Restructured support for BufferFields and RegionFields. 7730BankFields support is now fully operational. All known 32-bit 7731limitations on field sizes have been removed. Both BufferFields 7732and (Operation) RegionFields are now supported by the same field 7733management code. 7734 7735Resource support now supports QWORD address and IO resources. The 773616/32/64 bit address structures and the Extended IRQ structure 7737have been changed to properly handle Source Resource strings. 7738 7739A ThreadId of -1 is now used to indicate a "mutex not acquired" 7740condition internally and must never be returned by 7741AcpiOsThreadId. 7742This reserved value was changed from 0 since Unix systems allow a 7743thread ID of 0. 7744 7745Linux: 7746 7747Driver code reorganized to enhance portability 7748 7749Added a kernel configuration option to control ACPI_DEBUG 7750 7751Fixed the EC driver to honor _GLK. 7752 7753ASL Compiler, version X2016: 7754 7755Fixed support for the "FixedHw" keyword. Previously, the FixedHw 7756address space was set to 0, not 0x7f as it should be. 7757 7758 ------------------------------------------ 7759Summary of changes for this label: 03_13_01 7760 7761 ACPI CA Core Subsystem: 7762 7763During ACPI initialization, the _SB_._INI method is now run if 7764present. 7765 7766Notify handler fix - notifies are deferred until the parent 7767method 7768completes execution. This fixes the "mutex already acquired" 7769issue seen occasionally. 7770 7771Part of the "implicit conversion" rules in ACPI 2.0 have been 7772found to cause compatibility problems with existing ASL/AML. The 7773convert "result-to-target-type" implementation has been removed 7774for stores to method Args and Locals. Source operand conversion 7775is still fully implemented. Possible changes to ACPI 2.0 7776specification pending. 7777 7778Fix to AcpiRsCalculatePciRoutingTableLength to return correct 7779length. 7780 7781Fix for compiler warnings for 64-bit compiles. 7782 7783 Linux: 7784 7785/proc output aligned for easier parsing. 7786 7787Release-version compile problem fixed. 7788 7789New kernel configuration options documented in Configure.help. 7790 7791IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 7792context" message. 7793 7794 OSPM: 7795 7796Power resource driver integrated with bus manager. 7797 7798Fixed kernel fault during active cooling for thermal zones. 7799 7800Source Code: 7801 7802The source code tree has been restructured. 7803 7804 7805 7806------------------------------------------ 7807Summary of changes for this label: 03_02_01 7808 7809 Linux OS Services Layer (OSL): 7810 7811Major revision of all Linux-specific code. 7812 7813Modularized all ACPI-specific drivers. 7814 7815Added new thermal zone and power resource drivers. 7816 7817Revamped /proc interface (new functionality is under /proc/acpi). 7818 7819New kernel configuration options. 7820 7821 Linux known issues: 7822 7823New kernel configuration options not documented in Configure.help 7824yet. 7825 7826 7827Module dependencies not currently implemented. If used, they 7828should be loaded in this order: busmgr, power, ec, system, 7829processor, battery, ac_adapter, button, thermal. 7830 7831Modules will not load if CONFIG_MODVERSION is set. 7832 7833IBM 600E - entering S5 may reboot instead of shutting down. 7834 7835IBM 600E - Sleep button may generate "Invalid <NULL> context" 7836message. 7837 7838Some systems may fail with "execution mutex already acquired" 7839message. 7840 7841 ACPI CA Core Subsystem: 7842 7843Added a new OSL Interface, AcpiOsGetThreadId. This was required 7844for the deadlock detection code. Defined to return a non-zero, 784532- 7846bit thread ID for the currently executing thread. May be a non- 7847zero constant integer on single-thread systems. 7848 7849Implemented deadlock detection for internal subsystem mutexes. 7850We 7851may add conditional compilation for this code (debug only) later. 7852 7853ASL/AML Mutex object semantics are now fully supported. This 7854includes multiple acquires/releases by owner and support for the 7855 7856Mutex SyncLevel parameter. 7857 7858A new "Force Release" mechanism automatically frees all ASL 7859Mutexes that have been acquired but not released when a thread 7860exits the interpreter. This forces conformance to the ACPI spec 7861("All mutexes must be released when an invocation exits") and 7862prevents deadlocked ASL threads. This mechanism can be expanded 7863(later) to monitor other resource acquisitions if OEM ASL code 7864continues to misbehave (which it will). 7865 7866Several new ACPI exception codes have been added for the Mutex 7867support. 7868 7869Recursive method calls are now allowed and supported (the ACPI 7870spec does in fact allow recursive method calls.) The number of 7871recursive calls is subject to the restrictions imposed by the 7872SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 7873parameter. 7874 7875Implemented support for the SyncLevel parameter for control 7876methods (ACPI 2.0 feature) 7877 7878Fixed a deadlock problem when multiple threads attempted to use 7879the interpreter. 7880 7881Fixed a problem where the string length of a String package 7882element was not always set in a package returned from 7883AcpiEvaluateObject. 7884 7885Fixed a problem where the length of a String package element was 7886not always included in the length of the overall package returned 7887from AcpiEvaluateObject. 7888 7889Added external interfaces (Acpi*) to the ACPI debug memory 7890manager. This manager keeps a list of all outstanding 7891allocations, and can therefore detect memory leaks and attempts 7892to 7893free memory blocks more than once. Useful for code such as the 7894power manager, etc. May not be appropriate for device drivers. 7895Performance with the debug code enabled is slow. 7896 7897The ACPI Global Lock is now an optional hardware element. 7898 7899 ASL Compiler Version X2015: 7900 7901Integrated changes to allow the compiler to be generated on 7902multiple platforms. 7903 7904Linux makefile added to generate the compiler on Linux 7905 7906 Source Code: 7907 7908All platform-specific headers have been moved to their own 7909subdirectory, Include/Platform. 7910 7911New source file added, Interpreter/ammutex.c 7912 7913New header file, Include/acstruct.h 7914 7915 Documentation: 7916 7917The programmer reference has been updated for the following new 7918interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 7919 7920 ------------------------------------------ 7921Summary of changes for this label: 02_08_01 7922 7923Core ACPI CA Subsystem: Fixed a problem where an error was 7924incorrectly returned if the return resource buffer was larger 7925than 7926the actual data (in the resource interfaces). 7927 7928References to named objects within packages are resolved to the 7929 7930full pathname string before packages are returned directly (via 7931the AcpiEvaluateObject interface) or indirectly via the resource 7932interfaces. 7933 7934Linux OS Services Layer (OSL): 7935 7936Improved /proc battery interface. 7937 7938 7939Added C-state debugging output and other miscellaneous fixes. 7940 7941ASL Compiler Version X2014: 7942 7943All defined method arguments can now be used as local variables, 7944including the ones that are not actually passed in as parameters. 7945The compiler tracks initialization of the arguments and issues an 7946exception if they are used without prior assignment (just like 7947locals). 7948 7949The -o option now specifies a filename prefix that is used for 7950all 7951output files, including the AML output file. Otherwise, the 7952default behavior is as follows: 1) the AML goes to the file 7953specified in the DSDT. 2) all other output files use the input 7954source filename as the base. 7955 7956 ------------------------------------------ 7957Summary of changes for this label: 01_25_01 7958 7959Core ACPI CA Subsystem: Restructured the implementation of object 7960store support within the interpreter. This includes support for 7961the Store operator as well as any ASL operators that include a 7962target operand. 7963 7964Partially implemented support for Implicit Result-to-Target 7965conversion. This is when a result object is converted on the fly 7966to the type of an existing target object. Completion of this 7967support is pending further analysis of the ACPI specification 7968concerning this matter. 7969 7970CPU-specific code has been removed from the subsystem (hardware 7971directory). 7972 7973New Power Management Timer functions added 7974 7975Linux OS Services Layer (OSL): Moved system state transition code 7976to the core, fixed it, and modified Linux OSL accordingly. 7977 7978Fixed C2 and C3 latency calculations. 7979 7980 7981We no longer use the compilation date for the version message on 7982initialization, but retrieve the version from 7983AcpiGetSystemInfo(). 7984 7985Incorporated for fix Sony VAIO machines. 7986 7987Documentation: The Programmer Reference has been updated and 7988reformatted. 7989 7990 7991ASL Compiler: Version X2013: Fixed a problem where the line 7992numbering and error reporting could get out of sync in the 7993presence of multiple include files. 7994 7995 ------------------------------------------ 7996Summary of changes for this label: 01_15_01 7997 7998Core ACPI CA Subsystem: 7999 8000Implemented support for type conversions in the execution of the 8001ASL Concatenate operator (The second operand is converted to 8002match the type of the first operand before concatenation.) 8003 8004Support for implicit source operand conversion is partially 8005implemented. The ASL source operand types Integer, Buffer, and 8006String are freely interchangeable for most ASL operators and are 8007converted by the interpreter on the fly as required. Implicit 8008Target operand conversion (where the result is converted to the 8009target type before storing) is not yet implemented. 8010 8011Support for 32-bit and 64-bit BCD integers is implemented. 8012 8013Problem fixed where a field read on an aligned field could cause 8014a 8015read past the end of the field. 8016 8017New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 8018does not return a value, but the caller expects one. (The ASL 8019compiler flags this as a warning.) 8020 8021ASL Compiler: 8022 8023Version X2011: 80241. Static typechecking of all operands is implemented. This 8025prevents the use of invalid objects (such as using a Package 8026where 8027an Integer is required) at compile time instead of at interpreter 8028run-time. 80292. The ASL source line is printed with ALL errors and warnings. 80303. Bug fix for source EOF without final linefeed. 80314. Debug option is split into a parse trace and a namespace 8032trace. 80335. Namespace output option (-n) includes initial values for 8034integers and strings. 80356. Parse-only option added for quick syntax checking. 80367. Compiler checks for duplicate ACPI name declarations 8037 8038Version X2012: 80391. Relaxed typechecking to allow interchangeability between 8040strings, integers, and buffers. These types are now converted by 8041the interpreter at runtime. 80422. Compiler reports time taken by each internal subsystem in the 8043debug output file. 8044 8045 8046 ------------------------------------------ 8047Summary of changes for this label: 12_14_00 8048 8049ASL Compiler: 8050 8051This is the first official release of the compiler. Since the 8052compiler requires elements of the Core Subsystem, this label 8053synchronizes everything. 8054 8055------------------------------------------ 8056Summary of changes for this label: 12_08_00 8057 8058 8059Fixed a problem where named references within the ASL definition 8060of both OperationRegions and CreateXXXFields did not work 8061properly. The symptom was an AE_AML_OPERAND_TYPE during 8062initialization of the region/field. This is similar (but not 8063related internally) to the problem that was fixed in the last 8064label. 8065 8066Implemented both 32-bit and 64-bit support for the BCD ASL 8067functions ToBCD and FromBCD. 8068 8069Updated all legal headers to include "2000" in the copyright 8070years. 8071 8072 ------------------------------------------ 8073Summary of changes for this label: 12_01_00 8074 8075Fixed a problem where method invocations within the ASL 8076definition 8077of both OperationRegions and CreateXXXFields did not work 8078properly. The symptom was an AE_AML_OPERAND_TYPE during 8079initialization of the region/field: 8080 8081 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 8082[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 8083(0x3005) 8084 8085Fixed a problem where operators with more than one nested 8086subexpression would fail. The symptoms were varied, by mostly 8087AE_AML_OPERAND_TYPE errors. This was actually a rather serious 8088problem that has gone unnoticed until now. 8089 8090 Subtract (Add (1,2), Multiply (3,4)) 8091 8092Fixed a problem where AcpiGetHandle didn't quite get fixed in the 8093previous build (The prefix part of a relative path was handled 8094incorrectly). 8095 8096Fixed a problem where Operation Region initialization failed if 8097the operation region name was a "namepath" instead of a simple 8098"nameseg". Symptom was an AE_NO_OPERAND error. 8099 8100Fixed a problem where an assignment to a local variable via the 8101indirect RefOf mechanism only worked for the first such 8102assignment. Subsequent assignments were ignored. 8103 8104 ------------------------------------------ 8105Summary of changes for this label: 11_15_00 8106 8107ACPI 2.0 table support with backwards support for ACPI 1.0 and 8108the 81090.71 extensions. Note: although we can read ACPI 2.0 BIOS 8110tables, 8111the AML interpreter does NOT have support for the new 2.0 ASL 8112grammar terms at this time. 8113 8114All ACPI hardware access is via the GAS structures in the ACPI 81152.0 8116FADT. 8117 8118All physical memory addresses across all platforms are now 64 8119bits 8120wide. Logical address width remains dependent on the platform 8121(i.e., "void *"). 8122 8123AcpiOsMapMemory interface changed to a 64-bit physical address. 8124 8125The AML interpreter integer size is now 64 bits, as per the ACPI 81262.0 specification. 8127 8128For backwards compatibility with ACPI 1.0, ACPI tables with a 8129revision number less than 2 use 32-bit integers only. 8130 8131Fixed a problem where the evaluation of OpRegion operands did not 8132always resolve them to numbers properly. 8133 8134------------------------------------------ 8135Summary of changes for this label: 10_20_00 8136 8137Fix for CBN_._STA issue. This fix will allow correct access to 8138CBN_ OpRegions when the _STA returns 0x8. 8139 8140Support to convert ACPI constants (Ones, Zeros, One) to actual 8141values before a package object is returned 8142 8143Fix for method call as predicate to if/while construct causing 8144incorrect if/while behavior 8145 8146Fix for Else block package lengths sometimes calculated wrong (if 8147block > 63 bytes) 8148 8149Fix for Processor object length field, was always zero 8150 8151Table load abort if FACP sanity check fails 8152 8153Fix for problem with Scope(name) if name already exists 8154 8155Warning emitted if a named object referenced cannot be found 8156(resolved) during method execution. 8157 8158 8159 8160 8161 8162------------------------------------------ 8163Summary of changes for this label: 9_29_00 8164 8165New table initialization interfaces: AcpiInitializeSubsystem no 8166longer has any parameters AcpiFindRootPointer - Find the RSDP (if 8167necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 8168>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 8169AcpiLoadTables 8170 8171Note: These interface changes require changes to all existing 8172OSDs 8173 8174The PCI_Config default address space handler is always installed 8175at the root namespace object. 8176 8177------------------------------------------- 8178Summary of changes for this label: 09_15_00 8179 8180The new initialization architecture is implemented. New 8181interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 8182AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 8183 8184(Namespace is automatically loaded when a table is loaded) 8185 8186The ACPI_OPERAND_OBJECT has been optimized to shrink its size 8187from 818852 bytes to 32 bytes. There is usually one of these for every 8189namespace object, so the memory savings is significant. 8190 8191Implemented just-in-time evaluation of the CreateField operators. 8192 8193Bug fixes for IA-64 support have been integrated. 8194 8195Additional code review comments have been implemented 8196 8197The so-called "third pass parse" has been replaced by a final 8198walk 8199through the namespace to initialize all operation regions 8200(address 8201spaces) and fields that have not yet been initialized during the 8202execution of the various _INI and REG methods. 8203 8204New file - namespace/nsinit.c 8205 8206------------------------------------------- 8207Summary of changes for this label: 09_01_00 8208 8209Namespace manager data structures have been reworked to change 8210the 8211primary object from a table to a single object. This has 8212resulted in dynamic memory savings of 3X within the namespace 8213and 82142X overall in the ACPI CA subsystem. 8215 8216Fixed problem where the call to AcpiEvFindPciRootBuses was 8217inadvertently left commented out. 8218 8219Reduced the warning count when generating the source with the GCC 8220compiler. 8221 8222Revision numbers added to each module header showing the 8223SourceSafe version of the file. Please refer to this version 8224number when giving us feedback or comments on individual modules. 8225 8226The main object types within the subsystem have been renamed to 8227clarify their purpose: 8228 8229ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 8230ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 8231ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 8232 8233NOTE: no changes to the initialization sequence are included in 8234this label. 8235 8236------------------------------------------- 8237Summary of changes for this label: 08_23_00 8238 8239Fixed problem where TerminateControlMethod was being called 8240multiple times per method 8241 8242Fixed debugger problem where single stepping caused a semaphore 8243to 8244be oversignalled 8245 8246Improved performance through additional parse object caching - 8247added ACPI_EXTENDED_OP type 8248 8249------------------------------------------- 8250Summary of changes for this label: 08_10_00 8251 8252Parser/Interpreter integration: Eliminated the creation of 8253complete parse trees for ACPI tables and control methods. 8254Instead, parse subtrees are created and then deleted as soon as 8255they are processed (Either entered into the namespace or 8256executed 8257by the interpreter). This reduces the use of dynamic kernel 8258memory significantly. (about 10X) 8259 8260Exception codes broken into classes and renumbered. Be sure to 8261recompile all code that includes acexcep.h. Hopefully we won't 8262have to renumber the codes again now that they are split into 8263classes (environment, programmer, AML code, ACPI table, and 8264internal). 8265 8266Fixed some additional alignment issues in the Resource Manager 8267subcomponent 8268 8269Implemented semaphore tracking in the AcpiExec utility, and fixed 8270several places where mutexes/semaphores were being unlocked 8271without a corresponding lock operation. There are no known 8272semaphore or mutex "leaks" at this time. 8273 8274Fixed the case where an ASL Return operator is used to return an 8275unnamed package. 8276 8277------------------------------------------- 8278Summary of changes for this label: 07_28_00 8279 8280Fixed a problem with the way addresses were calculated in 8281AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 8282manifested itself when a Field was created with WordAccess or 8283DwordAccess, but the field unit defined within the Field was 8284less 8285 8286than a Word or Dword. 8287 8288Fixed a problem in AmlDumpOperands() module's loop to pull 8289operands off of the operand stack to display information. The 8290problem manifested itself as a TLB error on 64-bit systems when 8291accessing an operand stack with two or more operands. 8292 8293Fixed a problem with the PCI configuration space handlers where 8294context was getting confused between accesses. This required a 8295change to the generic address space handler and address space 8296setup definitions. Handlers now get both a global handler 8297context 8298(this is the one passed in by the user when executing 8299AcpiInstallAddressSpaceHandler() and a specific region context 8300that is unique to each region (For example, the _ADR, _SEG and 8301_BBN values associated with a specific region). The generic 8302function definitions have changed to the following: 8303 8304typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 8305UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 8306*HandlerContext, // This used to be void *Context void 8307*RegionContext); // This is an additional parameter 8308 8309typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 8310RegionHandle, UINT32 Function, void *HandlerContext, void 8311**RegionContext); // This used to be **ReturnContext 8312 8313------------------------------------------- 8314Summary of changes for this label: 07_21_00 8315 8316Major file consolidation and rename. All files within the 8317interpreter have been renamed as well as most header files. 8318This 8319was done to prevent collisions with existing files in the host 8320OSs -- filenames such as "config.h" and "global.h" seem to be 8321quite common. The VC project files have been updated. All 8322makefiles will require modification. 8323 8324The parser/interpreter integration continues in Phase 5 with the 8325implementation of a complete 2-pass parse (the AML is parsed 8326twice) for each table; This avoids the construction of a huge 8327parse tree and therefore reduces the amount of dynamic memory 8328required by the subsystem. Greater use of the parse object cache 8329means that performance is unaffected. 8330 8331Many comments from the two code reviews have been rolled in. 8332 8333The 64-bit alignment support is complete. 8334 8335------------------------------------------- 8336Summary of changes for this label: 06_30_00 8337 8338With a nod and a tip of the hat to the technology of yesteryear, 8339we've added support in the source code for 80 column output 8340devices. The code is now mostly constrained to 80 columns or 8341less to support environments and editors that 1) cannot display 8342or print more than 80 characters on a single line, and 2) cannot 8343disable line wrapping. 8344 8345A major restructuring of the namespace data structure has been 8346completed. The result is 1) cleaner and more 8347understandable/maintainable code, and 2) a significant reduction 8348in the dynamic memory requirement for each named ACPI object 8349(almost half). 8350 8351------------------------------------------- 8352Summary of changes for this label: 06_23_00 8353 8354Linux support has been added. In order to obtain approval to get 8355the ACPI CA subsystem into the Linux kernel, we've had to make 8356quite a few changes to the base subsystem that will affect all 8357users (all the changes are generic and OS- independent). The 8358effects of these global changes have been somewhat far reaching. 8359Files have been merged and/or renamed and interfaces have been 8360renamed. The major changes are described below. 8361 8362Osd* interfaces renamed to AcpiOs* to eliminate namespace 8363pollution/confusion within our target kernels. All OSD 8364interfaces must be modified to match the new naming convention. 8365 8366Files merged across the subsystem. A number of the smaller 8367source 8368and header files have been merged to reduce the file count and 8369increase the density of the existing files. There are too many 8370to list here. In general, makefiles that call out individual 8371files will require rebuilding. 8372 8373Interpreter files renamed. All interpreter files now have the 8374prefix am* instead of ie* and is*. 8375 8376Header files renamed: The acapi.h file is now acpixf.h. The 8377acpiosd.h file is now acpiosxf.h. We are removing references to 8378the acronym "API" since it is somewhat windowsy. The new name is 8379"external interface" or xface or xf in the filenames.j 8380 8381 8382All manifest constants have been forced to upper case (some were 8383mixed case.) Also, the string "ACPI_" has been prepended to 8384many 8385(not all) of the constants, typedefs, and structs. 8386 8387The globals "DebugLevel" and "DebugLayer" have been renamed 8388"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 8389 8390All other globals within the subsystem are now prefixed with 8391"AcpiGbl_" Internal procedures within the subsystem are now 8392prefixed with "Acpi" (with only a few exceptions). The original 8393two-letter abbreviation for the subcomponent remains after 8394"Acpi" 8395- for example, CmCallocate became AcpiCmCallocate. 8396 8397Added a source code translation/conversion utility. Used to 8398generate the Linux source code, it can be modified to generate 8399other types of source as well. Can also be used to cleanup 8400existing source by removing extraneous spaces and blank lines. 8401Found in tools/acpisrc/* 8402 8403OsdUnMapMemory was renamed to OsdUnmapMemory and then 8404AcpiOsUnmapMemory. (UnMap became Unmap). 8405 8406A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 8407When set to one, this indicates that the caller wants to use the 8408 8409semaphore as a mutex, not a counting semaphore. ACPI CA uses 8410both types. However, implementers of this call may want to use 8411different OS primitives depending on the type of semaphore 8412requested. For example, some operating systems provide separate 8413 8414"mutex" and "semaphore" interfaces - where the mutex interface 8415is 8416much faster because it doesn't have all the overhead of a full 8417semaphore implementation. 8418 8419Fixed a deadlock problem where a method that accesses the PCI 8420address space can block forever if it is the first access to the 8421space. 8422 8423------------------------------------------- 8424Summary of changes for this label: 06_02_00 8425 8426Support for environments that cannot handle unaligned data 8427accesses (e.g. firmware and OS environments devoid of alignment 8428handler technology namely SAL/EFI and the IA-64 Linux kernel) 8429has 8430been added (via configurable macros) in these three areas: - 8431Transfer of data from the raw AML byte stream is done via byte 8432moves instead of word/dword/qword moves. - External objects 8433are 8434aligned within the user buffer, including package elements (sub- 8435objects). - Conversion of name strings to UINT32 Acpi Names is 8436now 8437done byte-wise. 8438 8439The Store operator was modified to mimic Microsoft's 8440implementation when storing to a Buffer Field. 8441 8442Added a check of the BM_STS bit before entering C3. 8443 8444The methods subdirectory has been obsoleted and removed. A new 8445file, cmeval.c subsumes the functionality. 8446 8447A 16-bit (DOS) version of AcpiExec has been developed. The 8448makefile is under the acpiexec directory. 8449