
acpi控制笔记本风扇转速
5星
- 浏览量: None
- 大小:904KB
- 文件类型:None
简介:
笔记本的风扇控制----------------------------------------09 November 2006. Summary of changes for version 20061109:1) ACPI CA Core Subsystem:Optimized the Load ASL operator in the case where the sourceoperand is an operation region. Simply map the operation regionmemory, instead of performing a bytewise read. (Region must be oftype SystemMemory, see below.)Fixed the Load ASL operator for the case where the source operandis a region field. A buffer object is also allowed as the sourceoperand. BZ 480Fixed a problem where the Load ASL operator allowed the sourceoperand to be an operation region of any type. It is nowrestricted to regions of type SystemMemory, as per the ACPIspecification. BZ 481Additional cleanup and optimizations for the new Table Managercode.AcpiEnable will now fail if all of the required ACPI tables arenot loaded (FADT, FACS, DSDT). BZ 477Added #pragma pack(8/4) to acobject.h to ensure that thestructures in this header are always compiled as aligned. TheACPI_OPERAND_OBJECT has been manually optimized to be aligned andwill not work if it is byte-packed.Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total Debug Version: 155.4K Code, 63.1K Data, 218.5K Total Current Release: Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total Debug Version: 155.2K Code, 63.1K Data, 218.3K Total2) iASL Compiler/Disassembler and Tools:Fixed a problem where the presence of the _OSI predefined controlmethod within complex expressions could cause an internal compilererror.AcpiExec: Implemented full region support for multiple addressspaces. SpaceId is now part of the REGION object. BZ 429----------------------------------------11 October 2006. Summary of changes for version 20061011:1) ACPI CA Core Subsystem:Completed an AML interpreter performance enhancement for controlmethod execution. Previously a 2-pass parse/execution, controlmethods are now completely parsed and executed in a single pass.This improves overall interpreter performance by ~25%, reducescode size, and reduces CPU stack use. (Valery Podrezov +interpreter changes in version 20051202 that eliminated namespaceloading during the pass one parse.)Implemented _CID support for PCI Root Bridge detection. If the_HID does not match the predefined PCI Root Bridge IDs, the _CIDlist (if present) is now obtained and also checked for an IDmatch.Implemented additional support for the PCI _ADR execution:upsearch until a device scope is found before executing _ADR. Thisallows PCI_Config operation regions to be declared locally withincontrol methods underneath PCI device objects.Fixed a problem with a possible race condition between threadsexecuting AcpiWalkNamespace and the AML interpreter. Thiscondition was removed by modifying AcpiWalkNamespace to (bydefault) ignore all temporary namespace entries created during anyconcurrent control method execution. An additional namespace racecondition is known to exist between AcpiWalkNamespace and theLoad/Unload ASL operators and is still under investigation.Restructured the AML ParseLoop function, breaking it into severalsubfunctions in order to reduce CPU stack use and improvemaintainability. (Mikhail Kouzmich)AcpiGetHandle: Fix for parameter validation to detect invalidcombinations of prefix handle and pathname. BZ 478Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total Debug Version: 154.6K Code, 63.0K Data, 217.6K Total Current Release: Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total Debug Version: 155.4K Code, 63.1K Data, 218.5K Total2) iASL Compiler/Disassembler and Tools:Ported the -g option (get local ACPI tables) to the new ACPICATable Manager to restore original behavior.----------------------------------------27 September 2006. Summary of changes for version 20060927:1) ACPI CA Core Subsystem:Removed the Flags parameter from AcpiGetRegister andAcpiSetRegister. These functions now use a spinlock for mutualexclusion and the interrupt level indication flag is not needed.Fixed a problem with the Global Lock where the lock could appearto be obtained before it is actually obtained. The global locksemaphore was inadvertently created with one unit instead of zerounits. (BZ 464) Fiodor Suietov.Fixed a possible memory leak and fault inAcpiExResolveObjectToValue during a read from a buffer or regionfield. (BZ 458) Fiodor Suietov.Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total Debug Version: 154.7K Code, 63.0K Data, 217.7K Total Current Release: Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total Debug Version: 154.6K Code, 63.0K Data, 217.6K Total2) iASL Compiler/Disassembler and Tools:Fixed a compilation problem with the pre-defined ResourceDescriptor field names where an object does not exist errorcould be incorrectly generated if the parent ResourceTemplatepathname places the template within a different namespace scopethan the current scope. (BZ 7212)Fixed a problem where the compiler could hang after syntax errorsdetected in an ElseIf construct. (BZ 453)Fixed a problem with the AmlFilename parameter to theDefinitionBlock() operator. An incorrect output filename wasproduced when this parameter was a null string (). Now, theoriginal input filename is used as the AML output filename, withan .aml extension.Implemented a generic batch command mode for the AcpiExec utility(execute any AML debugger command) (Valery Podrezov).----------------------------------------12 September 2006. Summary of changes for version 20060912:1) ACPI CA Core Subsystem:Enhanced the implementation of the serialized mode of theinterpreter (enabled via the AcpiGbl_AllMethodsSerialized flag.)When this mode is specified, instead of creating a serializationsemaphore per control method, the interpreter lock is simply nolonger released before a blocking operation during control methodexecution. This effectively makes the AML Interpreter single-threaded. The overhead of a semaphore per-method is eliminated.Fixed a regression where an error was no longer emitted if acontrol method attempts to create 2 objects of the same name. Thisonce again returns AE_ALREADY_EXISTS. When this exception occurs,it invokes the mechanism that will dynamically serialize thecontrol method to possible prevent future errors. (BZ 440)Integrated a fix for a problem with PCI Express HID detection inthe PCI Config Space setup procedure. (BZ 7145)Moved all FADT-related functions to a new file, tbfadt.c.Eliminated the AcpiHwInitialize function - the FADT registers arenow validated when the table is loaded.Added two new warnings during FADT verification - 1) if the FADTis larger than the largest known FADT version, and 2) if there isa mismatch between a 32-bit block address and the 64-bit Xcounterpart (when both are non-zero.)Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total Debug Version: 154.9K Code, 62.6K Data, 217.5K Total Current Release: Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total Debug Version: 154.7K Code, 63.0K Data, 217.7K Total2) iASL Compiler/Disassembler and Tools:Fixed a problem with the implementation of the Switch() operatorwhere the temporary variable was declared too close to the actualSwitch, instead of at method level. This could cause a problem ifthe Switch() operator is within a while loop, causing an error onthe second iteration. (BZ 460)Disassembler - fix for error emitted for unknown type for targetof scope operator. Now, ignore it and continue.Disassembly of an FADT now verifies the input FADT and reports anyerrors found. Fix for proper disassembly of full-sized (ACPI 2.0)FADTs.Disassembly of raw data buffers with byte initialization data nowprefixes each output line with the current buffer offset.Disassembly of ASF! table now includes all variable-length datafields at the end of some of the subtables.The disassembler now emits a comment if a buffer appears to be aResourceTemplate, but cannot be disassembled as such because theEndTag does not appear at the very end of the buffer.AcpiExec - Added the -t command line option to enable theserialized mode of the AML interpreter.----------------------------------------31 August 2006. Summary of changes for version 20060831:1) ACPI CA Core Subsystem:Miscellaneous fixes for the Table Manager:- Correctly initialize internal common FADT for all 64-bit Xfields- Fixed a couple table mapping issues during table load- Fixed a couple alignment issues for IA64- Initialize input array to zero in AcpiInitializeTables- Additional parameter validation for AcpiGetTable,AcpiGetTableHeader, AcpiGetTableByIndexChange for GPE support: when a wake GPE is received, all wakeGPEs are now immediately disabled to prevent the waking GPE fromfiring again and to prevent other wake GPEs from interrupting thewake process.Added the AcpiGpeCount global that tracks the number of processedGPEs, to be used for debugging systems with a large number of ACPIinterrupts.Implemented support for the DMAR ACPI table (DMA RedirectionTable) in both the ACPICA headers and the disassembler.Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total Debug Version: 154.6K Code, 62.3K Data, 216.9K Total Current Release: Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total Debug Version: 154.9K Code, 62.6K Data, 217.5K Total2) iASL Compiler/Disassembler and Tools:Disassembler support for the DMAR ACPI table.----------------------------------------23 August 2006. Summary of changes for version 20060823:1) ACPI CA Core Subsystem:The Table Manager component has been completely redesigned andreimplemented. The new design is much simpler, and reduces theoverall code and data size of the kernel-resident ACPICA byapproximately 5%. Also, it is now possible to obtain the ACPItables very early during kernel initialization, even beforedynamic memory management is initialized. (Alexey Starikovskiy,Fiodor Suietov, Bob Moore)Obsolete ACPICA interfaces:- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at earlykernel init time).- AcpiLoadTable: Not needed.- AcpiUnloadTable: Not needed.New ACPICA interfaces:- AcpiInitializeTables: Must be called before the table managercan be used.- AcpiReallocateRootTable: Used to transfer the root table todynamically allocated memory after it becomes available.- AcpiGetTableByIndex: Allows the host to easily enumerate allACPI tables in the RSDT/XSDT.Other ACPICA changes:- AcpiGetTableHeader returns the actual mapped table header, not acopy. Use AcpiOsUnmapMemory to free this mapping.- AcpiGetTable returns the actual mapped table. The mapping ismanaged internally and must not be deleted by the caller. Use ofthis interface causes no additional dynamic memory allocation.- AcpiFindRootPointer: Support for physical addressing has beeneliminated, it appeared to be unused.- The interface to AcpiOsMapMemory has changed to be consistentwith the other allocation interfaces.- The interface to AcpiOsGetRootPointer has changed to eliminateunnecessary parameters.- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64bits on 64-bit platforms. Was previously 64 bits on all platforms.- The interface to the ACPI Global Lock acquire/release macroshave changed slightly since ACPICA no longer keeps a local copy ofthe FACS with a constructed pointer to the actual global lock.Porting to the new table manager:- AcpiInitializeTables: Must be called once, and can be calledanytime during the OS initialization process. It allows the hostto specify an area of memory to be used to store the internalversion of the RSDT/XSDT (root table). This allows the host toaccess ACPI tables before memory management is initialized andrunning.- AcpiReallocateRootTable: Can be called after memory managementis running to copy the root table to a dynamically allocatedarray, freeing up the scratch memory specified in the call toAcpiInitializeTables.- AcpiSubsystemInitialize: This existing interface is independentof the Table Manager, and does not have to be called before theTable Manager can be used, it only must be called before the restof ACPICA can be used.- ACPI Tables: Some changes have been made to the names andstructure of the actbl.h and actbl1.h header files and may requirechanges to existing code. For example, bitfields have beencompletely removed because of their lack of portability across Ccompilers.- Update interfaces to the Global Lock acquire/release macros iflocal versions are used. (see acwin.h)Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.cNew files: tbfind.cExample Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total Debug Version: 161.0K Code, 65.1K Data, 226.1K Total Current Release: Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total Debug Version: 154.6K Code, 62.3K Data, 216.9K Total2) iASL Compiler/Disassembler and Tools:No changes for this release.----------------------------------------21 July 2006. Summary of changes for version 20060721:1) ACPI CA Core Subsystem:The full source code for the ASL test suite used to validate theiASL compiler and the ACPICA core subsystem is being released withthe ACPICA source for the first time. The source is contained in aseparate package and consists of over 1100 files that exercise allASL/AML operators. The package should appear on the Intel/ACPI website shortly. (Valery Podrezov, Fiodor Suietov)Completed a new design and implementation for support of the ACPIGlobal Lock. On the OS side, the global lock is now treated as astandard AML mutex. Previously, multiple OS threads couldacquire the global lock simultaneously. However, this couldcause the BIOS to be starved out of the lock - especially in casessuch as the Embedded Controller driver where there is a tightcoupling between the OS and the BIOS.Implemented an optimization for the ACPI Global Lock interruptmechanism. The Global Lock interrupt handler no longer queues theexecution of a separate thread to signal the global locksemaphore. Instead, the semaphore is signaled directly from theinterrupt handler.Implemented support within the AML interpreter for package objectsthat contain a larger AML length (package list length) than thepackage element count. In this case, the length of the package istruncated to match the package element count. Some BIOS codeapparently modifies the package length on the fly, and this changesupports this behavior. Provides compatibility with the MS AMLinterpreter. (With assistance from Fiodor Suietov)Implemented a temporary fix for the BankValue parameter of a BankField to support all constant values, now including the Zero andOne opcodes. Evaluation of this parameter must eventually beconverted to a full TermArg evaluation. A not-implemented error isnow returned (temporarily) for non-constant values for thisparameter.Fixed problem reports (Fiodor Suietov) integrated:- Fix for premature object deletion after CopyObject on OperationRegion (BZ 350)Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total Debug Version: 160.9K Code, 65.1K Data, 226.0K Total Current Release: Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total Debug Version: 161.0K Code, 65.1K Data, 226.1K Total2) iASL Compiler/Disassembler and Tools:No changes for this release.----------------------------------------07 July 2006. Summary of changes for version 20060707:1) ACPI CA Core Subsystem:Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support Ccompilers that do not allow the initialization of address pointerswithin packed structures - even though the hardware itself maysupport misaligned transfers. Some of the debug data structuresare packed by default to minimize size.Added an error message for the case where AcpiOsGetThreadId()returns zero. A non-zero value is required by the core ACPICA codeto ensure the proper operation of AML mutexes and recursivecontrol methods.The DSDT is now the only ACPI table that determines whether theAML interpreter is in 32-bit or 64-bit mode. Not really afunctional change, but the hooks for per-table 32/64 switchinghave been removed from the code. A clarification to the ACPIspecification is forthcoming in ACPI 3.0B.Fixed a possible leak of an OwnerID in the error path ofAcpiTbInitTableDescriptor (tbinstal.c), and migrated all tableOwnerID deletion to a single place in AcpiTbUninstallTable tocorrect possible leaks when using the AcpiTbDeleteTablesByTypeinterface (with assistance from Lance Ortiz.)Fixed a problem with Serialized control methods where thesemaphore associated with the method could be over-signaled aftermultiple method invocations.Fixed two issues with the locking of the internal namespace datastructure. Both the Unload() operator and AcpiUnloadTableinterface now lock the namespace during the namespace deletionassociated with the table unload (with assistance from LinnCrosetto.)Fixed problem reports (Valery Podrezov) integrated:- Eliminate unnecessary memory allocation for CreateXxxxField (BZ5426)Fixed problem reports (Fiodor Suietov) integrated:- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)- On Address Space handler deletion, needless deactivation call(BZ 374)- AcpiRemoveAddressSpaceHandler: validate Device handle parameter(BZ 375)- Possible memory leak, Notify sub-objects of Processor, Power,ThermalZone (BZ 376)- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ378)- Minimum Length of RSDT should be validated (BZ 379)- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Objhas no Handler (BZ (380)- AcpiUnloadTable: return AE_NOT_EXIST if no table of specifiedtype loaded (BZ 381)Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total Debug Version: 160.8K Code, 64.8K Data, 225.6K Total Current Release: Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total Debug Version: 161.0K Code, 65.1K Data, 226.1K Total2) iASL Compiler/Disassembler and Tools:Fixed problem reports:Compiler segfault when ASL contains a long (>1024) Stringdeclaration (BZ 436)----------------------------------------23 June 2006. Summary of changes for version 20060623:1) ACPI CA Core Subsystem:Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces.This allows the type to be customized to the host OS for improvedefficiency (since a spinlock is usually a very small object.)Implemented support for ignored bits in the ACPI registers.According to the ACPI specification, these bits should bepreserved when writing the registers via a read/modify/writecycle. There are 3 bits preserved in this manner: PM1_CONTROL[0](SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].Implemented the initial deployment of new OSL mutex interfaces.Since some host operating systems have separate mutex andsemaphore objects, this feature was requested. The base code nowuses mutexes (and the new mutex interfaces) wherever a binarysemaphore was used previously. However, for the current release,the mutex interfaces are defined as macros to map them to theexisting semaphore interfaces. Therefore, no OSL changes arerequired at this time. (See acpiosxf.h)Fixed several problems with the support for the control methodSyncLevel parameter. The SyncLevel now works according to the ACPIspecification and in concert with the Mutex SyncLevel parameter,since the current SyncLevel is a property of the executing thread.Mutual exclusion for control methods is now implemented with amutex instead of a semaphore.Fixed three instances of the use of the C shift operator in thebitfield support code (exfldio.c) to avoid the use of a shiftvalue larger than the target data width. The behavior of Ccompilers is undefined in this case and can cause unpredictableresults, and therefore the case must be detected and avoided.(Fiodor Suietov)Added an info message whenever an SSDT or OEM table is loadeddynamically via the Load() or LoadTable() ASL operators. Thisshould improve debugging capability since it will show exactlywhat tables have been loaded (beyond the tables present in theRSDT/XSDT.)Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total Debug Version: 160.2K Code, 64.7K Data, 224.9K Total Current Release: Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total Debug Version: 160.8K Code, 64.8K Data, 225.6K Total2) iASL Compiler/Disassembler and Tools:No changes for this release.----------------------------------------08 June 2006. Summary of changes for version 20060608:1) ACPI CA Core Subsystem:Converted the locking mutex used for the ACPI hardware to aspinlock. This change should eliminate all problems caused byattempting to acquire a semaphore at interrupt level, and it meansthat all ACPICA external interfaces that directly access the ACPIhardware can be safely called from interrupt level. OSL code thatimplements the semaphore interfaces should be able to eliminateany workarounds for being called at interrupt level.Fixed a regression introduced in 20060526 where the ACPI deviceinitialization could be prematurely aborted with an AE_NOT_FOUNDif a device did not have an optional _INI method.Fixed an IndexField issue where a write to the Data Registershould be limited in size to the AccessSize (width) of theIndexField itself. (BZ 433, Fiodor Suietov)Fixed problem reports (Valery Podrezov) integrated:- Allow store of ThermalZone objects to Debug object (BZ5369/5370)Fixed problem reports (Fiodor Suietov) integrated:- AcpiGetTableHeader doesnt handle multiple instances correctly(BZ 364)Removed four global mutexes that were obsolete and were no longerbeing used.Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total Debug Version: 160.3K Code, 64.9K Data, 225.2K Total Current Release: Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total Debug Version: 160.2K Code, 64.7K Data, 224.9K Total2) iASL Compiler/Disassembler and Tools:Fixed a fault when using -g option (get tables from registry) onWindows machines.Fixed problem reports integrated:- Generate error if CreateField NumBits parameter is zero. (BZ405)- Fault if Offset/Length in Field unit is very large (BZ 432,Fiodor Suietov)- Global table revision override (-r) is ignored (BZ 413)----------------------------------------26 May 2006. Summary of changes for version 20060526:1) ACPI CA Core Subsystem:Restructured, flattened, and simplified the internal interfacesfor namespace object evaluation - resulting in smaller code, lessCPU stack use, and fewer interfaces. (With assistance from MikhailKouzmich)Fixed a problem with the CopyObject operator where the firstparameter was not typed correctly for the parser, interpreter,compiler, and disassembler. Caused various errors and unexpectedbehavior.Fixed a problem where a ShiftLeft or ShiftRight of more than 64bits produced incorrect results with some C compilers. Since thebehavior of C compilers when the shift value is larger than thedatatype width is apparently not well defined, the interpreter nowdetects this condition and simply returns zero as expected in allsuch cases. (BZ 395)Fixed problem reports (Valery Podrezov) integrated:- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ5329)- Allow interpreter to handle nested method declarations (BZ 5361)Fixed problem reports (Fiodor Suietov) integrated:- AcpiTerminate doesnt free debug memory allocation list objects(BZ 355)- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK(BZ 356)- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ357)- Resource Manager should return AE_TYPE for non-device objects(BZ 358)- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData(BZ 360)- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT isloaded (BZ 365)- Status of the Global Initialization Handler call not used (BZ366)- Incorrect object parameter to Global Initialization Handler (BZ367)Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total Debug Version: 160.5K Code, 65.1K Data, 225.6K Total Current Release: Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total Debug Version: 160.3K Code, 64.9K Data, 225.2K Total2) iASL Compiler/Disassembler and Tools:Modified the parser to allow the names IO, DMA, and IRQ to be usedas namespace identifiers with no collision with existing resourcedescriptor macro names. This provides compatibility with other ASLcompilers and is most useful for disassembly/recompilation ofexisting tables without parse errors. (With assistance from ThomasRenninger)Disassembler: fixed an incorrect disassembly problem with theDataTableRegion and CopyObject operators. Fixed a possible faultduring disassembly of some Alias operators.----------------------------------------12 May 2006. Summary of changes for version 20060512:1) ACPI CA Core Subsystem:Replaced the AcpiOsQueueForExecution interface with a newinterface named AcpiOsExecute. The major difference is that thenew interface does not have a Priority parameter, this appeared tobe useless and has been replaced by a Type parameter. The Typetells the host what type of execution is being requested, such asglobal lock handler, notify handler, GPE handler, etc. This allowsthe host to queue and execute the request as appropriate for therequest type, possibly using different work queues and differentpriorities for the various request types. This enables fixes formultithreading deadlock problems such as BZ #5534, and willrequire changes to all existing OS interface layers. (AlexeyStarikovskiy and Bob Moore)Fixed a possible memory leak associated with the support for theso-called implicit return ACPI extension. Reported by FreeBSD,BZ #6514. (Fiodor Suietov)Fixed a problem with the Load() operator where a table load froman operation region could overwrite an internal table buffer by upto 7 bytes and cause alignment faults on IPF systems. (Withassistance from Luming Yu)Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total Debug Version: 160.1K Code, 65.2K Data, 225.3K Total Current Release: Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total Debug Version: 160.5K Code, 65.1K Data, 225.6K Total2) iASL Compiler/Disassembler and Tools:Disassembler: Implemented support to cross reference the internalnamespace and automatically generate ASL External() statements forsymbols not defined within the current table being disassembled.This will simplify the disassembly and recompilation ofinterdependent tables such as SSDTs since these statements will nolonger have to be added manually.Disassembler: Implemented experimental support to automaticallydetect invocations of external control methods and generateappropriate External() statements. This is problematic because theAML cannot be correctly parsed until the number of arguments foreach control method is known. Currently, standalone methodinvocations and invocations as the source operand of a Store()statement are supported.Disassembler: Implemented support for the ASL pseudo-operatorsLNotEqual, LLessEqual, and LGreaterEqual. Previously disassembledas LNot(LEqual()), LNot(LGreater()), and LNot(LLess()), this makesthe disassembled ASL code more readable and likely closer to theoriginal ASL source.----------------------------------------21 April 2006. Summary of changes for version 20060421:1) ACPI CA Core Subsystem:Removed a device initialization optimization introduced in20051216 where the _STA method was not run unless an _INI was alsopresent for the same device. This optimization could causeproblems because it could allow _INI methods to be run within anot-present device subtree. (If a not-present device had no _INI,_STA would not be run, the not-present status would not bediscovered, and the children of the device would be incorrectlytraversed.)Implemented a new _STA optimization where namespace subtrees thatdo not contain _INI are identified and ignored during deviceinitialization. Selectively running _STA can significantly improveboot time on large machines (with assistance from Len Brown.)Implemented support for the device initialization case where thereturned _STA flags indicate a device not-present but functioning.In this case, _INI is not run, but the device children areexamined for presence, as per the ACPI specification.Implemented an additional change to the IndexField support inorder to conform to MS behavior. The value written to the IndexRegister is not simply a byte offset, it is a byte offset in unitsof the access width of the parent Index Field. (Fiodor Suietov)Defined and deployed a new OSL interface, AcpiOsValidateAddress.This interface is called during the creation of all AML operationregions, and allows the host OS to exert control over whataddresses it will allow the AML code to access. Operation Regionswhose addresses are disallowed will cause a runtime exception whenthey are actually accessed (will not affect or abort tableloading.) See oswinxf or osunixxf for an example implementation.Defined and deployed a new OSL interface, AcpiOsValidateInterface.This interface allows the host OS to match the various optionalinterface/behavior strings for the _OSI predefined control methodas appropriate (with assistance from Bjorn Helgaas.) See oswinxfor osunixxf for an example implementation.Restructured and corrected various problems in the exceptionhandling code paths within DsCallControlMethod andDsTerminateControlMethod in dsmethod (with assistance fromTakayoshi Kochi.)Modified the Linux source converter to ignore quoted stringliterals while converting identifiers from mixed to lower case.This will correct problems with the disassembler and other areaswhere such strings must not be modified.The ACPI_FUNCTION_* macros no longer require quotes around thefunction name. This allows the Linux source converter to convertthe names, now that the converter ignores quoted strings.Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total Debug Version: 158.9K Code, 64.9K Data, 223.8K Total Current Release: Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total Debug Version: 160.1K Code, 65.2K Data, 225.3K Total2) iASL Compiler/Disassembler and Tools:Implemented 3 new warnings for iASL, and implemented multiplewarning levels (w2 flag).1) Ignored timeouts: If the TimeoutValue parameter to Wait orAcquire is not WAIT_FOREVER (0xFFFF) and the code does not examinethe return value to check for the possible timeout, a warning isissued.2) Useless operators: If an ASL operator does not specify anoptional target operand and it also does not use the functionreturn value from the operator, a warning is issued since theoperator effectively does nothing.3) Unreferenced objects: If a namespace object is created, butnever referenced, a warning is issued. This is a warning level 2since there are cases where this is ok, such as when a secondarytable is loaded that uses the unreferenced objects. Even so, careis taken to only flag objects that dont look like they will everbe used. For example, the reserved methods (starting with anunderscore) are usually not referenced because it is expected thatthe OS will invoke them.----------------------------------------31 March 2006. Summary of changes for version 20060331:1) ACPI CA Core Subsystem:Implemented header file support for the following additional ACPItables: ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT.With this support, all current and known ACPI tables are nowdefined in the ACPICA headers and are available for use by devicedrivers and other software.Implemented support to allow tables that contain ACPI names withinvalid characters to be loaded. Previously, this would cause thetable load to fail, but since there are several known cases ofsuch tables on existing machines, this change was made to enableACPI support for them. Also, this matches the behavior of theMicrosoft ACPI implementation.Fixed a couple regressions introduced during the memoryoptimization in the 20060317 release. The namespace nodedefinition required additional reorganization and an internaldatatype that had been changed to 8-bit was restored to 32-bit.(Valery Podrezov)Fixed a problem where a null pointer passed toAcpiUtDeleteGenericState could be passed through toAcpiOsReleaseObject which is unexpected. Such null pointers arenow trapped and ignored, matching the behavior of the previousimplementation before the deployment of AcpiOsReleaseObject.(Valery Podrezov, Fiodor Suietov)Fixed a memory mapping leak during the deletion of a SystemMemoryoperation region where a cached memory mapping was not deleted.This became a noticeable problem for operation regions that aredefined within frequently used control methods. (Dana Meyers)Reorganized the ACPI table header files into two main files: onefor the ACPI tables consumed by the ACPICA core, and another forthe miscellaneous ACPI tables that are consumed by the drivers andother software. The various FADT definitions were merged into onecommon section and three different tables (ACPI 1.0, 1.0+, and2.0)Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The debug version of the code includes the debugoutput trace mechanism and has a much larger code and data size. Previous Release: Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total Debug Version: 158.7K Code, 64.8K Data, 223.5K Total Current Release: Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total Debug Version: 158.9K Code, 64.9K Data, 223.8K Total2) iASL Compiler/Disassembler and Tools:Disassembler: Implemented support to decode and format all non-AMLACPI tables (tables other than DSDTs and SSDTs.) This includes thenew tables added to the ACPICA headers, therefore all current andknown ACPI tables are supported.Disassembler: The change to allow ACPI names with invalidcharacters also enables the disassembly of such tables. Invalidcharacters within names are changed to * to make the nameprintable; the iASL compiler will still generate an error for suchnames, however, since this is an invalid ACPI character.Implemented an option for AcpiXtract (-a) to extract all tablesfound in the input file. The default invocation extracts only theDSDTs and SSDTs.Fixed a couple of gcc generation issues for iASL and AcpiExec andadded a makefile for the AcpiXtract utility.----------------------------------------17 March 2006. Summary of changes for version 20060317:1) ACPI CA Core Subsystem:Implemented the use of a cache object for all internal namespacenodes. Since there are about 1000 static nodes in a typicalsystem, this will decrease memory use for cache implementationsthat minimize per-allocation overhead (such as a slab allocator.)Removed the reference count mechanism for internal namespacenodes, since it was deemed unnecessary. This reduces the size ofeach namespace node by about 5%-10% on all platforms. Nodes arenow 20 bytes for the 32-bit case, and 32 bytes for the 64-bitcase.Optimized several internal data structures to reduce object sizeon 64-bit platforms by packing data within the 64-bit alignment.This includes the frequently used ACPI_OPERAND_OBJECT, of whichthere can be ~1000 static instances corresponding to the namespaceobjects.Added two new strings for the predefined _OSI method: Windows2001.1 SP1 and Windows 2006.Split the allocation tracking mechanism out to a separate file,from utalloc.c to uttrack.c. This mechanism appears to be onlyuseful for application-level code. Kernels may wish to not includeuttrack.c in distributions.Removed all remnants of the obsolete ACPI_REPORT_* macros and theassociated code. (These macros have been replaced by theACPI_ERROR and ACPI_WARNING macros.)Code and Data Size: These are the sizes for the acpica.libproduced by the Microsoft Visual C++ 6.0 32-bit compiler. Thevalues do not include any ACPI driver or OSPM code. The debugversion of the code includes the debug output trace mechanism andhas a much larger code and data size. Note that these values willvary depending on the efficiency of the compiler and the compileroptions used during generation. Previous Release: Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total Debug Version: 161.6K Code, 65.7K Data, 227.3K Total Current Release: Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total Debug Version: 158.7K Code, 64.8K Data, 223.5K Total2) iASL Compiler/Disassembler and Tools:Implemented an ANSI C version of the acpixtract utility. Thisversion will automatically extract the DSDT and all SSDTs from theinput acpidump text file and dump the binary output to separatefiles. It can also display a summary of the input file includingthe headers for each table found and will extract any single ACPItable, with any signature. (See source/tools/acpixtract)----------------------------------------10 March 2006. Summary of changes for version 20060310:1) ACPI CA Core Subsystem:Tagged all external interfaces to the subsystem with the newACPI_EXPORT_SYMBOL macro. This macro can be defined as necessaryto assist kernel integration. For Linux, the macro resolves to theEXPORT_SYMBOL macro. The default definition is NULL.Added the ACPI_THREAD_ID type for the return value fromAcpiOsGetThreadId. This allows the host to define this asnecessary to simplify kernel integration. The default definitionis ACPI_NATIVE_UINT.Fixed two interpreter problems related to error processing, thedeletion of objects, and placing invalid pointers onto theinternal operator result stack. BZ 6028, 6151 (Valery Podrezov)Increased the reference count threshold where a warning is emittedfor large reference counts in order to eliminate unnecessarywarnings on systems with large namespaces (especially 64-bit.)Increased the value from 0x400 to 0x800.Due to universal disagreement as to the meaning of the c in thecalloc() function, the ACPI_MEM_CALLOCATE macro has been renamedto ACPI_ALLOCATE_ZEROED so that the purpose of the interface isclear. ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed toACPI_ALLOCATE and ACPI_FREE.Code and Data Size: These are the sizes for the acpica.libproduced by the Microsoft Visual C++ 6.0 32-bit compiler. Thevalues do not include any ACPI driver or OSPM code. The debugversion of the code includes the debug output trace mechanism andhas a much larger code and data size. Note that these values willvary depending on the efficiency of the compiler and the compileroptions used during generation. Previous Release: Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total Debug Version: 161.4K Code, 65.7K Data, 227.1K Total Current Release: Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total Debug Version: 161.6K Code, 65.7K Data, 227.3K Total2) iASL Compiler/Disassembler:Disassembler: implemented support for symbolic resource descriptorreferences. If a CreateXxxxField operator references a fixedoffset within a resource descriptor, a name is assigned to thedescriptor and the offset is translated to the appropriateresource tag and pathname. The addition of this support brings thedisassembled code very close to the original ASL source code andhelps eliminate run-time errors when the disassembled code ismodified (and recompiled) in such a way as to invalidate theoriginal fixed offsets.Implemented support for a Descriptor Name as the last parameter tothe ASL Register() macro. This parameter was inadvertently leftout of the ACPI specification, and will be added for ACPI 3.0b.Fixed a problem where the use of the _OSI string (versus thefull path \_OSI) caused an internal compiler error. (No backptr to op)Fixed a problem with the error message that occurs when an invalidstring is used for a _HID object (such as one with an embeddedasterisk: *PNP010A.) The correct message is now displayed.----------------------------------------17 February 2006. Summary of changes for version 20060217:1) ACPI CA Core Subsystem:Implemented a change to the IndexField support to match thebehavior of the Microsoft AML interpreter. The value written tothe Index register is now a byte offset, no longer an index basedupon the width of the Data register. This should fix IndexFieldproblems seen on some machines where the Data register is notexactly one byte wide. The ACPI specification will be clarified onthis point.Fixed a problem where several resource descriptor types couldoverrun the internal descriptor buffer due to size miscalculation:VendorShort, VendorLong, and Interrupt. This was noticed on IA64machines, but could affect all platforms.Fixed a problem where individual resource descriptors weremisaligned within the internal buffer, causing alignment faults onIA64 platforms.Code and Data Size: These are the sizes for the acpica.libproduced by the Microsoft Visual C++ 6.0 32-bit compiler. Thevalues do not include any ACPI driver or OSPM code. The debugversion of the code includes the debug output trace mechanism andhas a much larger code and data size. Note that these values willvary depending on the efficiency of the compiler and the compileroptions used during generation. Previous Release: Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total Debug Version: 161.3K Code, 65.6K Data, 226.9K Total Current Release: Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total Debug Version: 161.4K Code, 65.7K Data, 227.1K Total2) iASL Compiler/Disassembler:Implemented support for new reserved names: _WDG and _WED areMicrosoft extensions for Windows Instrumentation Management, _TDLis a new ACPI-defined method (Throttling Depth Limit.)Fixed a problem where a zero-length VendorShort or VendorLongresource descriptor was incorrectly emitted as a descriptor oflength one.----------------------------------------10 February 2006. Summary of changes for version 20060210:1) ACPI CA Core Subsystem:Removed a couple of extraneous ACPI_ERROR messages that appearedduring normal execution. These became apparent after theconversion from ACPI_DEBUG_PRINT.Fixed a problem where the CreateField operator could hang if theBitIndex or NumBits parameter referred to a named object. (ValeryPodrezov, BZ 5359)Fixed a problem where a DeRefOf operation on a buffer objectincorrectly failed with an exception. This also fixes a couple ofrelated RefOf and DeRefOf issues. (Valery Podrezov, BZ5360/5392/5387)Fixed a problem where the AE_BUFFER_LIMIT exception was returnedinstead of AE_STRING_LIMIT on an out-of-bounds Index() operation.(Valery Podrezov, BZ 5480)Implemented a memory cleanup at the end of the execution of eachiteration of an AML While() loop, preventing the accumulation ofoutstanding objects. (Valery Podrezov, BZ 5427)Eliminated a chunk of duplicate code in the object resolutioncode. (Valery Podrezov, BZ 5336)Fixed several warnings during the 64-bit code generation.The AcpiSrc source code conversion tool now inserts one line ofwhitespace after an if() statement that is followed immediately bya comment, improving readability of the Linux code.Code and Data Size: The current and previous library sizes for thecore subsystem are shown below. These are the code and data sizesfor the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bitcompiler. These values do not include any ACPI driver or OSPMcode. The debug version of the code includes the debug outputtrace mechanism and has a much larger code and data size. Notethat these values will vary depending on the efficiency of thecompiler and the compiler options used during generation. Previous Release: Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total Debug Version: 161.3K Code, 65.7K Data, 227.0K Total Current Release: Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total Debug Version: 161.3K Code, 65.6K Data, 226.9K Total2) iASL Compiler/Disassembler:Fixed a problem with the disassembly of a BankField operator witha complex expression for the BankValue parameter.----------------------------------------27 January 2006. Summary of changes for version 20060127:1) ACPI CA Core Subsystem:Implemented support in the Resource Manager to allow unresolvednamestring references within resource package objects for the _PRTmethod. This support is in addition to the previously implementedunresolved reference support within the AML parser. If theinterpreter slack mode is enabled, these unresolved referenceswill be passed through to the caller as a NULL package entry.Implemented and deployed new macros and functions for error andwarning messages across the subsystem. These macros are simplerand generate less code than their predecessors. The new macrosACPI_ERROR, ACPI_EXCEPTION, ACPI_WARNING, and ACPI_INFO replacethe ACPI_REPORT_* macros. The older macros remain defined to allowACPI drivers time to migrate to the new macros.Implemented the ACPI_CPU_FLAGS type to simplify host OSintegration of the Acquire/Release Lock OSL interfaces.Fixed a problem where Alias ASL operators are sometimes notcorrectly resolved, in both the interpreter and the iASL compiler.Fixed several problems with the implementation of theConcatenateResTemplate ASL operator. As per the ACPIspecification, zero length buffers are now treated as a singleEndTag. One-length buffers always cause a fatal exception. Non-zero length buffers that do not end with a full 2-byte EndTagcause a fatal exception.Fixed a possible structure overwrite in the AcpiGetObjectInfoexternal interface. (With assistance from Thomas Renninger)Code and Data Size: The current and previous library sizes for thecore subsystem are shown below. These are the code and data sizesfor the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bitcompiler. These values do not include any ACPI driver or OSPMcode. The debug version of the code includes the debug outputtrace mechanism and has a much larger code and data size. Notethat these values will vary depending on the efficiency of thecompiler and the compiler options used during generation. Previous Release: Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total Debug Version: 163.2K Code, 66.2K Data, 229.4K Total Current Release: Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total Debug Version: 161.3K Code, 65.7K Data, 227.0K Total2) iASL Compiler/Disassembler:Fixed an internal error that was generated for any forwardreferences to ASL Alias objects.----------------------------------------13 January 2006. Summary of changes for version 20060113:1) ACPI CA Core Subsystem:Added 2006 copyright to all module headers and signons. Thisaffects virtually every file in the ACPICA core subsystem, iASLcompiler, and the utilities.Enhanced the ACPICA error reporting in order to simplify usermigration to the non-debug version of ACPICA. Replaced allinstances of the ACPI_DEBUG_PRINT macro invoked at theACPI_DB_ERROR and ACPI_DB_WARN debug levels with theACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, respectively.This preserves all error and warning messages in the non-debugversion of the ACPICA code (this has been referred to as thedebug lite option.) Over 200 cases were converted to create atotal of over 380 error/warning messages across the ACPICA code.This increases the code and data size of the default non-debugversion of the code somewhat (about 13K), but all error/warningreporting may be disabled if desired (and code eliminated) byspecifying the ACPI_NO_ERROR_MESSAGES compile-time configurationoption. The size of the debug version of ACPICA remains about thesame.Fixed a memory leak within the AML Debugger Set command. Oneobject was not properly deleted for every successful invocation ofthe command.Code and Data Size: The current and previous library sizes for thecore subsystem are shown below. These are the code and data sizesfor the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bitcompiler. These values do not include any ACPI driver or OSPMcode. The debug version of the code includes the debug outputtrace mechanism and has a much larger code and data size. Notethat these values will vary depending on the efficiency of thecompiler and the compiler options used during generation. Previous Release: Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total Debug Version: 163.7K Code, 67.5K Data, 231.2K Total Current Release: Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total Debug Version: 163.2K Code, 66.2K Data, 229.4K Total2) iASL Compiler/Disassembler:The compiler now officially supports the ACPI 3.0a specificationthat was released on December 30, 2005. (Specification isavailable at www.acpi.info)----------------------------------------16 December 2005. Summary of changes for version 20051216:1) ACPI CA Core Subsystem:Implemented optional support to allow unresolved names within ASLPackage objects. A null object is inserted in the package when anamed reference cannot be located in the current namespace.Enabled via the interpreter slack flag, this should eliminateAE_NOT_FOUND exceptions seen on machines that contain such code.Implemented an optimization to the initialization sequence thatcan improve boot time. During ACPI device initialization, the _STAmethod is now run if and only if the _INI method exists. The _STAmethod is used to determine if the device is present; An _INI canonly be run if _STA returns present, but it is a waste of time torun the _STA method if the _INI does not exist. (Prototype andassistance from Dong Wei)Implemented use of the C99 uintptr_t for the pointer castingmacros if it is available in the current compiler. Otherwise, thedefault (void *) cast is used as before.Fixed some possible memory leaks found within the execution pathof the Break, Continue, If, and CreateField operators. (ValeryPodrezov)Fixed a problem introduced in the 20051202 release where anexception is generated during method execution if a control methodattempts to declare another method.Moved resource descriptor string constants that are used by boththe AML disassembler and AML debugger to the common utilitiesdirectory so that these components are independent.Implemented support in the AcpiExec utility (-e switch) toglobally ignore exceptions during control method execution (methodis not aborted.)Added the rsinfo.c source file to the AcpiExec makefile forLinux/Unix generation.Code and Data Size: The current and previous library sizes for thecore subsystem are shown below. These are the code and data sizesfor the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bitcompiler. These values do not include any ACPI driver or OSPMcode. The debug version of the code includes the debug outputtrace mechanism and has a much larger code and data size. Notethat these values will vary depending on the efficiency of thecompiler and the compiler options used during generation. Previous Release: Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total Debug Version: 163.2K Code, 67.4K Data, 230.6K Total Current Release: Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total Debug Version: 163.7K Code, 67.5K Data, 231.2K Total2) iASL Compiler/Disassembler:Fixed a problem where a CPU stack overflow fault could occur if arecursive method call was made from within a Return statement.----------------------------------------02 December 2005. Summary of changes for version 20051202:1) ACPI CA Core Subsystem:Modified the parsing of control methods to no longer createnamespace objects during the first pass of the parse. Objects arenow created only during the execute phase, at the moment thenamespace creation operator is encountered in the AML (Name,OperationRegion, CreateByteField, etc.) This should eliminateALREADY_EXISTS exceptions seen on some machines where reentrantcontrol methods are protected by an AML mutex. The mutex will nowcorrectly block multiple threads from attempting to create thesame object more than once.Increased the number of available Owner Ids for namespace objecttracking from 32 to 255. This should eliminate the OWNER_ID_LIMITexceptions seen on some machines with a large number of ACPItables (either static or dynamic).Fixed a problem with the AcpiExec utility where a fault couldoccur when the -b switch (batch mode) is used.Enhanced the namespace dump routine to output the owner ID foreach namespace object.Code and Data Size: The current and previous library sizes for thecore subsystem are shown below. These are the code and data sizesfor the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bitcompiler. These values do not include any ACPI driver or OSPMcode. The debug version of the code includes the debug outputtrace mechanism and has a much larger code and data size. Notethat these values will vary depending on the efficiency of thecompiler and the compiler options used during generation. Previous Release: Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total Debug Version: 163.0K Code, 67.4K Data, 230.4K Total Current Release: Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total Debug Version: 163.2K Code, 67.4K Data, 230.6K Total2) iASL Compiler/Disassembler:Fixed a parse error during compilation of certain Switch/Caseconstructs. To simplify the parse, the grammar now allows formultiple Default statements and this error is now detected andflagged during the analysis phase.Disassembler: The disassembly now includes the contents of theoriginal table header within a comment at the start of the file.This includes the name and version of the original ASL compiler.----------------------------------------17 November 2005. Summary of changes for version 20051117:1) ACPI CA Core Subsystem:Fixed a problem in the AML parser where the method thread countcould be decremented below zero if any errors occurred during themethod parse phase. This should eliminate AE_AML_METHOD_LIMITexceptions seen on some machines. This also fixed a relatedregression with the mechanism that detects and corrects methodsthat cannot properly handle reentrancy (related to the deploymentof the new OwnerId mechanism.)Eliminated the pre-parsing of control methods (to detect errors)during table load. Related to the problem above, this was causingunwind issues if any errors occurred during the parse, and itseemed to be overkill. A table load should not be aborted if thereare problems with any single control method, thus rendering thisfeature rather pointless.Fixed a problem with the new table-driven resource manager wherean internal buffer overflow could occur for small resourcetemplates.Implemented a new external interface, AcpiGetVendorResource. Thisinterface will find and return a vendor-defined resourcedescriptor within a _CRS or _PRS method via an ACPI 3.0 UUIDmatch. With assistance from Bjorn Helgaas.Removed the length limit (200) on string objects as per theupcoming ACPI 3.0A specification. This affects the following areasof the interpreter: 1) any implicit conversion of a Buffer to aString, 2) a String object result of the ASL Concatentateoperator, 3) the String object result of the ASL ToStringoperator.Fixed a problem in the Windows OS interface layer (OSL) where aWAIT_FOREVER on a semaphore object would incorrectly timeout. Thisallows the multithreading features of the AcpiExec utility to workproperly under Windows.Updated the Linux makefiles for the iASL compiler and AcpiExec toinclude the recently added file named utresrc.c.Code and Data Size: The current and previous library sizes for thecore subsystem are shown below. These are the code and data sizesfor the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bitcompiler. These values do not include any ACPI driver or OSPMcode. The debug version of the code includes the debug outputtrace mechanism and has a much larger code and data size. Notethat these values will vary depending on the efficiency of thecompiler and the compiler options used during generation. Previous Release: Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total Debug Version: 163.0K Code, 67.4K Data, 230.4K Total Current Release: Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total Debug Version: 163.0K Code, 67.4K Data, 230.4K Total2) iASL Compiler/Disassembler:Removed the limit (200) on string objects as per the upcoming ACPI3.0A specification. For the iASL compiler, this means that stringliterals within the source ASL can be of any length.Enhanced the listing output to dump the AML code for resourcedescriptors immediately after the ASL code for each descriptor,instead of in a block at the end of the entire resource template.Enhanced the compiler debug output to dump the entire originalparse tree constructed during the parse phase, before anytransforms are applied to the tree. The transformed tree is dumpedalso.----------------------------------------02 November 2005. Summary of changes for version 20051102:1) ACPI CA Core Subsystem:Modified the subsystem initialization sequence to improve GPEsupport. The GPE initialization has been split into two parts inorder to defer execution of the _PRW methods (Power Resources forWake) until after the hardware is fully initialized and the SCIhandler is installed. This allows the _PRW methods to accessfields protected by the Global Lock. This will fix systems where aNO_GLOBAL_LOCK exception has been seen during initialization.Converted the ACPI internal object disassemble and display codewithin the AML debugger to fully table-driven operation, reducingcode size and increasing maintainability.Fixed a regression with the ConcatenateResTemplate() ASL operatorintroduced in the 20051021 release.Implemented support for local internal ACPI object types withinthe debugger Object command and the AcpiWalkNamespace externalinterfaces. These local types include RegionFields, BankFields,IndexFields, Alias, and reference objects.Moved common AML resource handling code into a new file,utresrc.c. This code is shared by both the Resource Manager andthe AML Debugger.Code and Data Size: The current and previous library sizes for thecore subsystem are shown below. These are the code and data sizesfor the acpica.lib produced by the Microsoft Visual C++ 6.0 32-bitcompiler. These values do not include any ACPI driver or OSPMcode. The debug version of the code includes the debug outputtrace mechanism and has a much larger code and data size. Notethat these values will vary depending on the efficiency of thecompiler and the compiler options used during generation. Previous Release: Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total Debug Version: 163.5K Code, 67.0K Data, 230.5K Total Current Release: Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total Debug Version: 163.0K Code, 67.4K Data, 230.4K Total2) iASL Compiler/Disassembler:Fixed a problem with very large initializer lists (more than 4000elements) for both Buffer and Package objects where the parsestack could overflow.Enhanced the pre-compile source code scan for non-ASCII charactersto ignore characters within comment fields. The scan is now alwaysperformed and is no longer optional, detecting invalid characterswithin a source file immediately rather than during the parsephase or later.Enhanced the ASL grammar definition to force early reductions onall list-style grammar elements so that the overall parse stackusage is greatly reduced. This should improve performance andreduce the possibility of parse stack overflow.Eliminated all reduce/reduce conflicts in the iASL parsergeneration. Also, with the addition of a %expected statement, thecompiler generates from source with no warnings.Fixed a possible segment fault in the disassembler if the inputfilename does not contain a dot extension (Thomas Renninger).----------------------------------------21 October 2005. Summary of changes for version 20051021:1) ACPI CA Core Subsystem:Implemented support for the EM64T and other x86-64 processors.This essentially entails recognizing that these processors supportnon-aligned memory transfers. Previously, all 64-bit processorswere assumed to lack hardware support for non-aligned transfers.Completed conversion of the Resource Manager to nearly full table-driven operation. Specifically, the resource conversion code(convert AML to internal format and the reverse) and the debugcode to dump internal resource descriptors are fully table-driven,reducing code and data size and improving maintainabi
全部评论 (0)
