changes.txt revision 128212
1117521Snjl---------------------------------------- 2128212Snjl02 April 2004. Summary of changes for version 20040402: 3128212Snjl 4128212Snjl1) ACPI CA Core Subsystem: 5128212Snjl 6128212SnjlFixed an interpreter problem where an indirect store through an 7128212SnjlArgX parameter was incorrectly applying the "implicit conversion 8128212Snjlrules" during the store. From the ACPI specification: "If the 9128212Snjltarget is a method local or argument (LocalX or ArgX), no 10128212Snjlconversion is performed and the result is stored directly to the 11128212Snjltarget". The new behavior is to disable implicit conversion 12128212Snjlduring ALL stores to an ArgX. 13128212Snjl 14128212SnjlChanged the behavior of the _PRW method scan to ignore any and 15128212Snjlall errors returned by a given _PRW. This prevents the scan from 16128212Snjlaborting from the failure of any single _PRW. 17128212Snjl 18128212SnjlMoved the runtime configuration parameters from the global init 19128212Snjlprocedure to static variables in acglobal.h. This will allow the 20128212Snjlhost to override the default values easily. 21128212Snjl 22128212SnjlCode and Data Size: Current and previous core subsystem library 23128212Snjlsizes are shown below. These are the code and data sizes for the 24128212Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 25128212Snjlthese values do not include any ACPI driver or OSPM code. The 26128212Snjldebug version of the code includes the debug output trace 27128212Snjlmechanism and has a much larger code and data size. Note that 28128212Snjlthese values will vary depending on the efficiency of the 29128212Snjlcompiler and the compiler options used during generation. 30128212Snjl 31128212Snjl Previous Release: 32128212Snjl Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 33128212Snjl Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 34128212Snjl Current Release: 35128212Snjl Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 36128212Snjl Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 37128212Snjl 38128212Snjl 39128212Snjl2) iASL Compiler/Disassembler: 40128212Snjl 41128212SnjliASL now fully disassembles SSDTs. However, External() 42128212Snjlstatements are not generated automatically for unresolved symbols 43128212Snjlat this time. This is a planned feature for future 44128212Snjlimplementation. 45128212Snjl 46128212SnjlFixed a scoping problem in the disassembler that occurs when the 47128212Snjltype of the target of a Scope() operator is overridden. This 48128212Snjlproblem caused an incorrectly nested internal namespace to be 49128212Snjlconstructed. 50128212Snjl 51128212SnjlAny warnings or errors that are emitted during disassembly are 52128212Snjlnow commented out automatically so that the resulting file can be 53128212Snjlrecompiled without any hand editing. 54128212Snjl 55128212Snjl---------------------------------------- 56128212Snjl26 March 2004. Summary of changes for version 20040326: 57128212Snjl 58128212Snjl1) ACPI CA Core Subsystem: 59128212Snjl 60128212SnjlImplemented support for "wake" GPEs via interaction between GPEs 61128212Snjland the _PRW methods. Every GPE that is pointed to by one or 62128212Snjlmore _PRWs is identified as a WAKE GPE and by default will no 63128212Snjllonger be enabled at runtime. Previously, we were blindly 64128212Snjlenabling all GPEs with a corresponding _Lxx or _Exx method - but 65128212Snjlmost of these turn out to be WAKE GPEs anyway. We believe this 66128212Snjlhas been the cause of thousands of "spurious" GPEs on some 67128212Snjlsystems. 68128212Snjl 69128212SnjlThis new GPE behavior is can be reverted to the original behavior 70128212Snjl(enable ALL GPEs at runtime) via a runtime flag. 71128212Snjl 72128212SnjlFixed a problem where aliased control methods could not access 73128212Snjlobjects properly. The proper scope within the namespace was not 74128212Snjlinitialized (transferred to the target of the aliased method) 75128212Snjlbefore executing the target method. 76128212Snjl 77128212SnjlFixed a potential race condition on internal object deletion on 78128212Snjlthe return object in AcpiEvaluateObject. 79128212Snjl 80128212SnjlIntegrated a fix for resource descriptors where both _MEM and 81128212Snjl_MTP were being extracted instead of just _MEM. (i.e. bitmask 82128212Snjlwas incorrectly too wide, 0x0F instead of 0x03.) 83128212Snjl 84128212SnjlAdded a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 85128212Snjlpreventing a fault in some cases. 86128212Snjl 87128212SnjlUpdated Notify() values for debug statements in evmisc.c 88128212Snjl 89128212SnjlReturn proper status from AcpiUtMutexInitialize, not just simply 90128212SnjlAE_OK. 91128212Snjl 92128212SnjlCode and Data Size: Current and previous core subsystem library 93128212Snjlsizes are shown below. These are the code and data sizes for the 94128212Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 95128212Snjlthese values do not include any ACPI driver or OSPM code. The 96128212Snjldebug version of the code includes the debug output trace 97128212Snjlmechanism and has a much larger code and data size. Note that 98128212Snjlthese values will vary depending on the efficiency of the 99128212Snjlcompiler and the compiler options used during generation. 100128212Snjl 101128212Snjl Previous Release: 102128212Snjl Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 103128212Snjl Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 104128212Snjl Current Release: 105128212Snjl Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 106128212Snjl Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 107128212Snjl 108128212Snjl---------------------------------------- 109127175Snjl11 March 2004. Summary of changes for version 20040311: 110127175Snjl 111127175Snjl1) ACPI CA Core Subsystem: 112127175Snjl 113127175SnjlFixed a problem where errors occurring during the parse phase of 114127175Snjlcontrol method execution did not abort cleanly. For example, 115127175Snjlobjects created and installed in the namespace were not deleted. 116127175SnjlThis caused all subsequent invocations of the method to return 117127175Snjlthe AE_ALREADY_EXISTS exception. 118127175Snjl 119127175SnjlImplemented a mechanism to force a control method to "Serialized" 120127175Snjlexecution if the method attempts to create namespace objects. 121127175Snjl(The root of the AE_ALREADY_EXISTS problem.) 122127175Snjl 123127175SnjlImplemented support for the predefined _OSI "internal" control 124127175Snjlmethod. Initial supported strings are "Linux", "Windows 2000", 125127175Snjl"Windows 2001", and "Windows 2001.1", and can be easily upgraded 126127175Snjlfor new strings as necessary. This feature will allow "other" 127127175Snjloperating systems to execute the fully tested, "Windows" code 128127175Snjlpath through the ASL code 129127175Snjl 130127175SnjlGlobal Lock Support: Now allows multiple acquires and releases 131127175Snjlwith any internal thread. Removed concept of "owning thread" for 132127175Snjlthis special mutex. 133127175Snjl 134127175SnjlFixed two functions that were inappropriately declaring large 135127175Snjlobjects on the CPU stack: PsParseLoop, NsEvaluateRelative. 136127175SnjlReduces the stack usage during method execution considerably. 137127175Snjl 138127175SnjlFixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where 139127175Snjlthe S4Bios_f field was incorrectly defined as UINT32 instead of 140127175SnjlUINT32_BIT. 141127175Snjl 142127175SnjlFixed a problem where AcpiEvGpeDetect would fault if there were 143127175Snjlno GPEs defined on the machine. 144127175Snjl 145127175SnjlImplemented two runtime options: One to force all control method 146127175Snjlexecution to "Serialized" to mimic Windows behavior, another to 147127175Snjldisable _OSI support if it causes problems on a given machine. 148127175Snjl 149127175SnjlCode and Data Size: Current and previous core subsystem library 150127175Snjlsizes are shown below. These are the code and data sizes for the 151127175Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 152127175Snjlthese values do not include any ACPI driver or OSPM code. The 153127175Snjldebug version of the code includes the debug output trace 154127175Snjlmechanism and has a much larger code and data size. Note that 155127175Snjlthese values will vary depending on the efficiency of the 156127175Snjlcompiler and the compiler options used during generation. 157127175Snjl 158127175Snjl Previous Release: 159127175Snjl Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 160127175Snjl Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 161127175Snjl Current Release: 162127175Snjl Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 163127175Snjl Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 164127175Snjl 165127175Snjl2) iASL Compiler/Disassembler: 166127175Snjl 167127175SnjlFixed an array size problem for FreeBSD that would cause the 168127175Snjlcompiler to fault. 169127175Snjl 170127175Snjl---------------------------------------- 171126372Snjl20 February 2004. Summary of changes for version 20040220: 172126372Snjl 173126372Snjl1) ACPI CA Core Subsystem: 174126372Snjl 175126372SnjlImplemented execution of _SxD methods for Device objects in the 176126372SnjlGetObjectInfo interface. 177126372Snjl 178126372SnjlFixed calls to _SST method to pass the correct arguments. 179126372Snjl 180126372SnjlAdded a call to _SST on wake to restore to "working" state. 181126372Snjl 182126372SnjlCheck for End-Of-Buffer failure case in the WalkResources 183126372Snjlinterface. 184126372Snjl 185126372SnjlIntegrated fix for 64-bit alignment issue in acglobal.h by moving 186126372Snjltwo structures to the beginning of the file. 187126372Snjl 188126372SnjlAfter wake, clear GPE status register(s) before enabling GPEs. 189126372Snjl 190126372SnjlAfter wake, clear/enable power button. (Perhaps we should 191126372Snjlclear/enable all fixed events upon wake.) 192126372Snjl 193126372SnjlFixed a couple of possible memory leaks in the Namespace manager. 194126372Snjl 195126372SnjlIntegrated latest acnetbsd.h file. 196126372Snjl 197126372Snjl---------------------------------------- 198126372Snjl11 February 2004. Summary of changes for version 20040211: 199126372Snjl 200126372Snjl1) ACPI CA Core Subsystem: 201126372Snjl 202126372SnjlCompleted investigation and implementation of the call-by- 203126372Snjlreference mechanism for control method arguments. 204126372Snjl 205126372SnjlFixed a problem where a store of an object into an indexed 206126372Snjlpackage could fail if the store occurs within a different method 207126372Snjlthan the method that created the package. 208126372Snjl 209126372SnjlFixed a problem where the ToDecimal operator could return 210126372Snjlincorrect results. 211126372Snjl 212126372SnjlFixed a problem where the CopyObject operator could fail on some 213126372Snjlof the more obscure objects (e.g., Reference objects.) 214126372Snjl 215126372SnjlImproved the output of the Debug object to display buffer, 216126372Snjlpackage, and index objects. 217126372Snjl 218126372SnjlFixed a problem where constructs of the form "RefOf (ArgX)" did 219126372Snjlnot return the expected result. 220126372Snjl 221126372SnjlAdded permanent ACPI_REPORT_ERROR macros for all instances of the 222126372SnjlACPI_AML_INTERNAL exception. 223126372Snjl 224126372SnjlIntegrated latest version of acfreebsd.h 225126372Snjl 226126372Snjl---------------------------------------- 227126372Snjl16 January 2004. Summary of changes for version 20040116: 228126372Snjl 229126372SnjlThe purpose of this release is primarily to update the copyright 230126372Snjlyears in each module, thus causing a huge number of diffs. There 231126372Snjlare a few small functional changes, however. 232126372Snjl 233126372Snjl1) ACPI CA Core Subsystem: 234126372Snjl 235126372SnjlImproved error messages when there is a problem finding one or 236126372Snjlmore of the required base ACPI tables 237126372Snjl 238126372SnjlReintroduced the definition of APIC_HEADER in actbl.h 239126372Snjl 240126372SnjlChanged definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 241126372Snjl 242126372SnjlRemoved extraneous reference to NewObj in dsmthdat.c 243126372Snjl 244126372Snjl2) iASL compiler 245126372Snjl 246126372SnjlFixed a problem introduced in December that disabled the correct 247126372Snjldisassembly of Resource Templates 248126372Snjl 249126372Snjl 250126372Snjl---------------------------------------- 251126372Snjl03 December 2003. Summary of changes for version 20031203: 252126372Snjl 253126372Snjl1) ACPI CA Core Subsystem: 254126372Snjl 255126372SnjlChanged the initialization of Operation Regions during subsystem 256126372Snjlinit to perform two entire walks of the ACPI namespace; The first 257126372Snjlto initialize the regions themselves, the second to execute the 258126372Snjl_REG methods. This fixed some interdependencies across _REG 259126372Snjlmethods found on some machines. 260126372Snjl 261126372SnjlFixed a problem where a Store(Local0, Local1) could simply update 262126372Snjlthe object reference count, and not create a new copy of the 263126372Snjlobject if the Local1 is uninitialized. 264126372Snjl 265126372SnjlImplemented support for the _SST reserved method during sleep 266126372Snjltransitions. 267126372Snjl 268126372SnjlImplemented support to clear the SLP_TYP and SLP_EN bits when 269126372Snjlwaking up, this is apparently required by some machines. 270126372Snjl 271126372SnjlWhen sleeping, clear the wake status only if SleepState is not 272126372SnjlS5. 273126372Snjl 274126372SnjlFixed a problem in AcpiRsExtendedIrqResource() where an incorrect 275126372Snjlpointer arithmetic advanced a string pointer too far. 276126372Snjl 277126372SnjlFixed a problem in AcpiTbGetTablePtr() where a garbage pointer 278126372Snjlcould be returned if the requested table has not been loaded. 279126372Snjl 280126372SnjlWithin the support for IRQ resources, restructured the handling 281126372Snjlof 282126372Snjlthe active and edge/level bits. 283126372Snjl 284126372SnjlFixed a few problems in AcpiPsxExecute() where memory could be 285126372Snjlleaked under certain error conditions. 286126372Snjl 287126372SnjlImproved error messages for the cases where the ACPI mode could 288126372Snjlnot be entered. 289126372Snjl 290126372SnjlCode and Data Size: Current and previous core subsystem library 291126372Snjlsizes are shown below. These are the code and data sizes for the 292126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 293126372Snjlthese values do not include any ACPI driver or OSPM code. The 294126372Snjldebug version of the code includes the debug output trace 295126372Snjlmechanism and has a much larger code and data size. Note that 296126372Snjlthese values will vary depending on the efficiency of the 297126372Snjlcompiler 298126372Snjland the compiler options used during generation. 299126372Snjl 300126372Snjl Previous Release (20031029): 301126372Snjl Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 302126372Snjl Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 303126372Snjl Current Release: 304126372Snjl Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 305126372Snjl Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 306126372Snjl 307126372Snjl2) iASL Compiler/Disassembler: 308126372Snjl 309126372SnjlImplemented a fix for the iASL disassembler where a bad index was 310126372Snjlgenerated. This was most noticeable on 64-bit platforms 311126372Snjl 312126372Snjl 313126372Snjl---------------------------------------- 314126372Snjl29 October 2003. Summary of changes for version 20031029: 315126372Snjl 316126372Snjl1) ACPI CA Core Subsystem: 317126372Snjl 318126372SnjlFixed a problem where a level-triggered GPE with an associated 319126372Snjl_Lxx control method was incorrectly cleared twice. 320126372Snjl 321126372SnjlFixed a problem with the Field support code where an access can 322126372Snjloccur beyond the end-of-region if the field is non-aligned but 323126372Snjlextends to the very end of the parent region (resulted in an 324126372SnjlAE_AML_REGION_LIMIT exception.) 325126372Snjl 326126372SnjlFixed a problem with ACPI Fixed Events where an RT Clock handler 327126372Snjlwould not get invoked on an RTC event. The RTC event bitmasks 328126372Snjlfor 329126372Snjlthe PM1 registers were not being initialized properly. 330126372Snjl 331126372SnjlImplemented support for executing _STA and _INI methods for 332126372SnjlProcessor objects. Although this is currently not part of the 333126372SnjlACPI specification, there is existing ASL code that depends on 334126372Snjlthe 335126372Snjlinit-time execution of these methods. 336126372Snjl 337126372SnjlImplemented and deployed a GetDescriptorName function to decode 338126372Snjlthe various types of internal descriptors. Guards against null 339126372Snjldescriptors during debug output also. 340126372Snjl 341126372SnjlImplemented and deployed a GetNodeName function to extract the 4- 342126372Snjlcharacter namespace node name. This function simplifies the 343126372Snjldebug 344126372Snjland error output, as well as guarding against null pointers 345126372Snjlduring 346126372Snjloutput. 347126372Snjl 348126372SnjlImplemented and deployed the ACPI_FORMAT_UINT64 helper macro to 349126372Snjlsimplify the debug and error output of 64-bit integers. This 350126372Snjlmacro replaces the HIDWORD and LODWORD macros for dumping these 351126372Snjlintegers. 352126372Snjl 353126372SnjlUpdated the implementation of the Stall() operator to only call 354126372SnjlAcpiOsStall(), and also return an error if the operand is larger 355126372Snjlthan 255. This preserves the required behavior of not 356126372Snjlrelinquishing the processor, as would happen if AcpiOsSleep() was 357126372Snjlcalled for "long stalls". 358126372Snjl 359126372SnjlConstructs of the form "Store(LocalX,LocalX)" where LocalX is not 360126372Snjlinitialized are now treated as NOOPs. 361126372Snjl 362126372SnjlCleaned up a handful of warnings during 64-bit generation. 363126372Snjl 364126372SnjlFixed a reported error where and incorrect GPE number was passed 365126372Snjlto the GPE dispatch handler. This value is only used for error 366126372Snjloutput, however. Used this opportunity to clean up and 367126372Snjlstreamline 368126372Snjlthe GPE dispatch code. 369126372Snjl 370126372SnjlCode and Data Size: Current and previous core subsystem library 371126372Snjlsizes are shown below. These are the code and data sizes for the 372126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 373126372Snjlthese values do not include any ACPI driver or OSPM code. The 374126372Snjldebug version of the code includes the debug output trace 375126372Snjlmechanism and has a much larger code and data size. Note that 376126372Snjlthese values will vary depending on the efficiency of the 377126372Snjlcompiler 378126372Snjland the compiler options used during generation. 379126372Snjl 380126372Snjl Previous Release (20031002): 381126372Snjl Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 382126372Snjl Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 383126372Snjl Current Release: 384126372Snjl Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 385126372Snjl Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 386126372Snjl 387126372Snjl 388126372Snjl2) iASL Compiler/Disassembler: 389126372Snjl 390126372SnjlUpdated the iASL compiler to return an error if the operand to 391126372Snjlthe 392126372SnjlStall() operator is larger than 255. 393126372Snjl 394126372Snjl 395126372Snjl---------------------------------------- 396126372Snjl02 October 2003. Summary of changes for version 20031002: 397126372Snjl 398126372Snjl 399126372Snjl1) ACPI CA Core Subsystem: 400126372Snjl 401126372SnjlFixed a problem with Index Fields where the index was not 402126372Snjlincremented for fields that require multiple writes to the 403126372Snjlindex/data registers (Fields that are wider than the data 404126372Snjlregister.) 405126372Snjl 406126372SnjlFixed a problem with all Field objects where a write could go 407126372Snjlbeyond the end-of-field if the field was larger than the access 408126372Snjlgranularity and therefore required multiple writes to complete 409126372Snjlthe 410126372Snjlrequest. An extra write beyond the end of the field could happen 411126372Snjlinadvertently. 412126372Snjl 413126372SnjlFixed a problem with Index Fields where a BUFFER_OVERFLOW error 414126372Snjlwould incorrectly be returned if the width of the Data Register 415126372Snjlwas larger than the specified field access width. 416126372Snjl 417126372SnjlCompleted fixes for LoadTable() and Unload() and verified their 418126372Snjloperation. Implemented full support for the "DdbHandle" object 419126372Snjlthroughout the ACPI CA subsystem. 420126372Snjl 421126372SnjlImplemented full support for the MADT and ECDT tables in the ACPI 422126372SnjlCA header files. Even though these tables are not directly 423126372Snjlconsumed by ACPI CA, the header definitions are useful for ACPI 424126372Snjldevice drivers. 425126372Snjl 426126372SnjlIntegrated resource descriptor fixes posted to the Linux ACPI 427126372Snjllist. This included checks for minimum descriptor length, and 428126372Snjlsupport for trailing NULL strings within descriptors that have 429126372Snjloptional string elements. 430126372Snjl 431126372SnjlCode and Data Size: Current and previous core subsystem library 432126372Snjlsizes are shown below. These are the code and data sizes for the 433126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 434126372Snjlthese values do not include any ACPI driver or OSPM code. The 435126372Snjldebug version of the code includes the debug output trace 436126372Snjlmechanism and has a much larger code and data size. Note that 437126372Snjlthese values will vary depending on the efficiency of the 438126372Snjlcompiler 439126372Snjland the compiler options used during generation. 440126372Snjl 441126372Snjl Previous Release (20030918): 442126372Snjl Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 443126372Snjl Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 444126372Snjl Current Release: 445126372Snjl Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 446126372Snjl Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 447126372Snjl 448126372Snjl 449126372Snjl2) iASL Compiler: 450126372Snjl 451126372SnjlImplemented detection of non-ASCII characters within the input 452126372Snjlsource ASL file. This catches attempts to compile binary (AML) 453126372Snjlfiles early in the compile, with an informative error message. 454126372Snjl 455126372SnjlFixed a problem where the disassembler would fault if the output 456126372Snjlfilename could not be generated or if the output file could not 457126372Snjlbe 458126372Snjlopened. 459126372Snjl 460126372Snjl---------------------------------------- 461126372Snjl18 September 2003. Summary of changes for version 20030918: 462126372Snjl 463126372Snjl 464126372Snjl1) ACPI CA Core Subsystem: 465126372Snjl 466126372SnjlFound and fixed a longstanding problem with the late execution of 467126372Snjlthe various deferred AML opcodes (such as Operation Regions, 468126372SnjlBuffer Fields, Buffers, and Packages). If the name string 469126372Snjlspecified for the name of the new object placed the object in a 470126372Snjlscope other than the current scope, the initialization/execution 471126372Snjlof the opcode failed. The solution to this problem was to 472126372Snjlimplement a mechanism where the late execution of such opcodes 473126372Snjldoes not attempt to lookup/create the name a second time in an 474126372Snjlincorrect scope. This fixes the "region size computed 475126372Snjlincorrectly" problem. 476126372Snjl 477126372SnjlFixed a call to AcpiHwRegisterWrite in hwregs.c that was causing 478126372Snjla 479126372SnjlGlobal Lock AE_BAD_PARAMETER error. 480126372Snjl 481126372SnjlFixed several 64-bit issues with prototypes, casting and data 482126372Snjltypes. 483126372Snjl 484126372SnjlRemoved duplicate prototype from acdisasm.h 485126372Snjl 486126372SnjlFixed an issue involving EC Operation Region Detach (Shaohua Li) 487126372Snjl 488126372SnjlCode and Data Size: Current and previous core subsystem library 489126372Snjlsizes are shown below. These are the code and data sizes for the 490126372Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 491126372Snjlthese values do not include any ACPI driver or OSPM code. The 492126372Snjldebug version of the code includes the debug output trace 493126372Snjlmechanism and has a much larger code and data size. Note that 494126372Snjlthese values will vary depending on the efficiency of the 495126372Snjlcompiler 496126372Snjland the compiler options used during generation. 497126372Snjl 498126372Snjl Previous Release: 499126372Snjl Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 500126372Snjl Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 501126372Snjl Current Release: 502126372Snjl Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 503126372Snjl Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 504126372Snjl 505126372Snjl 506126372Snjl2) Linux: 507126372Snjl 508126372SnjlFixed the AcpiOsSleep implementation in osunixxf.c to pass the 509126372Snjlcorrect sleep time in seconds. 510126372Snjl 511126372Snjl---------------------------------------- 512126372Snjl14 July 2003. Summary of changes for version 20030619: 513126372Snjl 514126372Snjl1) ACPI CA Core Subsystem: 515126372Snjl 516126372SnjlParse SSDTs in order discovered, as opposed to reverse order 517126372Snjl(Hrvoje Habjanic) 518126372Snjl 519126372SnjlFixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 520126372SnjlKlausner, 521126372Snjl Nate Lawson) 522126372Snjl 523126372Snjl 524126372Snjl2) Linux: 525126372Snjl 526126372SnjlDynamically allocate SDT list (suggested by Andi Kleen) 527126372Snjl 528126372Snjlproc function return value cleanups (Andi Kleen) 529126372Snjl 530126372SnjlCorrectly handle NMI watchdog during long stalls (Andrew Morton) 531126372Snjl 532126372SnjlMake it so acpismp=force works (reported by Andrew Morton) 533126372Snjl 534126372Snjl 535126372Snjl---------------------------------------- 536117521Snjl19 June 2003. Summary of changes for version 20030619: 537117521Snjl 538117521Snjl1) ACPI CA Core Subsystem: 539117521Snjl 540117521SnjlFix To/FromBCD, eliminating the need for an arch-specific 541117521Snjl#define. 542117521Snjl 543117521SnjlDo not acquire a semaphore in the S5 shutdown path. 544117521Snjl 545117521SnjlFix ex_digits_needed for 0. (Takayoshi Kochi) 546117521Snjl 547117521SnjlFix sleep/stall code reversal. (Andi Kleen) 548117521Snjl 549117521SnjlRevert a change having to do with control method calling 550117521Snjlsemantics. 551117521Snjl 552117521Snjl2) Linux: 553117521Snjl 554117521Snjlacpiphp update (Takayoshi Kochi) 555117521Snjl 556117521SnjlExport acpi_disabled for sonypi (Stelian Pop) 557117521Snjl 558117521SnjlMention acpismp=force in config help 559117521Snjl 560117521SnjlRe-add acpitable.c and acpismp=force. This improves backwards 561117521Snjlcompatibility and also cleans up the code to a significant 562117521Snjldegree. 563117521Snjl 564117521SnjlAdd ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 565117521Snjl 566117521Snjl---------------------------------------- 567117521Snjl22 May 2003. Summary of changes for version 20030522: 568117521Snjl 569117521Snjl1) ACPI CA Core Subsystem: 570117521Snjl 571117521SnjlFound and fixed a reported problem where an AE_NOT_FOUND error 572117521Snjloccurred occasionally during _BST evaluation. This turned out to 573117521Snjlbe an Owner ID allocation issue where a called method did not get 574117521Snjla new ID assigned to it. Eventually, (after 64k calls), the 575126372SnjlOwner 576126372SnjlID UINT16 would wraparound so that the ID would be the same as 577126372Snjlthe 578126372Snjlcaller's and the called method would delete the caller's 579117521Snjlnamespace. 580117521Snjl 581117521SnjlImplemented extended error reporting for control methods that are 582117521Snjlaborted due to a run-time exception. Output includes the exact 583117521SnjlAML instruction that caused the method abort, a dump of the 584126372Snjlmethod 585126372Snjllocals and arguments at the time of the abort, and a trace of all 586126372Snjlnested control method calls. 587117521Snjl 588117521SnjlModified the interpreter to allow the creation of buffers of zero 589117521Snjllength from the AML code. Implemented new code to ensure that no 590117521Snjlattempt is made to actually allocate a memory buffer (of length 591117521Snjlzero) - instead, a simple buffer object with a NULL buffer 592126372Snjlpointer 593126372Snjland length zero is created. A warning is no longer issued when 594126372Snjlthe AML attempts to create a zero-length buffer. 595117521Snjl 596117521SnjlImplemented a workaround for the "leading asterisk issue" in 597117521Snjl_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 598117521Snjlasterisk is automatically removed if present in any HID, UID, or 599117521SnjlCID strings. The iASL compiler will still flag this asterisk as 600117521Snjlan error, however. 601117521Snjl 602117521SnjlImplemented full support for _CID methods that return a package 603126372Snjlof 604126372Snjlmultiple CIDs (Compatible IDs). The AcpiGetObjectInfo() 605126372Snjlinterface 606126372Snjlnow additionally returns a device _CID list if present. This 607126372Snjlrequired a change to the external interface in order to pass an 608126372SnjlACPI_BUFFER object as a parameter since the _CID list is of 609117521Snjlvariable length. 610117521Snjl 611117521SnjlFixed a problem with the new AE_SAME_HANDLER exception where 612117521Snjlhandler initialization code did not know about this exception. 613117521Snjl 614117521SnjlCode and Data Size: Current and previous core subsystem library 615117521Snjlsizes are shown below. These are the code and data sizes for the 616117521Snjlacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 617117521Snjlthese values do not include any ACPI driver or OSPM code. The 618117521Snjldebug version of the code includes the debug output trace 619117521Snjlmechanism and has a much larger code and data size. Note that 620117521Snjlthese values will vary depending on the efficiency of the 621126372Snjlcompiler 622126372Snjland the compiler options used during generation. 623117521Snjl 624117521Snjl Previous Release (20030509): 625117521Snjl Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 626117521Snjl Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 627117521Snjl Current Release: 628117521Snjl Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 629117521Snjl Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 630117521Snjl 631117521Snjl 632117521Snjl2) Linux: 633117521Snjl 634117521SnjlFixed a bug in which we would reinitialize the ACPI interrupt 635117521Snjlafter it was already working, thus disabling all ACPI and the 636126372SnjlIRQs 637126372Snjlfor any other device sharing the interrupt. (Thanks to Stian 638117521SnjlJordet) 639117521Snjl 640117521SnjlToshiba driver update (John Belmonte) 641117521Snjl 642117521SnjlReturn only 0 or 1 for our interrupt handler status (Andrew 643117521SnjlMorton) 644117521Snjl 645117521Snjl 646117521Snjl3) iASL Compiler: 647117521Snjl 648117521SnjlFixed a reported problem where multiple (nested) ElseIf() 649117521Snjlstatements were not handled correctly by the compiler, resulting 650117521Snjlin incorrect warnings and incorrect AML code. This was a problem 651117521Snjlin both the ASL parser and the code generator. 652117521Snjl 653117521Snjl 654117521Snjl4) Documentation: 655117521Snjl 656117521SnjlAdded changes to existing interfaces, new exception codes, and 657126372Snjlnew 658126372Snjltext concerning reference count object management versus garbage 659126372Snjlcollection. 660117521Snjl 661117521Snjl---------------------------------------- 662117521Snjl09 May 2003. Summary of changes for version 20030509. 663117521Snjl 664117521Snjl 665117521Snjl1) ACPI CA Core Subsystem: 666117521Snjl 667117521SnjlChanged the subsystem initialization sequence to hold off 668117521Snjlinstallation of address space handlers until the hardware has 669126372Snjlbeen 670126372Snjlinitialized and the system has entered ACPI mode. This is 671126372Snjlbecause 672126372Snjlthe installation of space handlers can cause _REG methods to be 673126372Snjlrun. Previously, the _REG methods could potentially be run 674126372Snjlbefore 675126372SnjlACPI mode was enabled. 676117521Snjl 677117521SnjlFixed some memory leak issues related to address space handler 678126372Snjland 679126372Snjlnotify handler installation. There were some problems with the 680126372Snjlreference count mechanism caused by the fact that the handler 681117521Snjlobjects are shared across several namespace objects. 682117521Snjl 683117521SnjlFixed a reported problem where reference counts within the 684117521Snjlnamespace were not properly updated when named objects created by 685117521Snjlmethod execution were deleted. 686117521Snjl 687117521SnjlFixed a reported problem where multiple SSDTs caused a deletion 688117521Snjlissue during subsystem termination. Restructured the table data 689117521Snjlstructures to simplify the linked lists and the related code. 690117521Snjl 691117521SnjlFixed a problem where the table ID associated with secondary 692117521Snjltables (SSDTs) was not being propagated into the namespace 693126372Snjlobjects 694126372Snjlcreated by those tables. This would only present a problem for 695126372Snjltables that are unloaded at run-time, however. 696117521Snjl 697117521SnjlUpdated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 698117521Snjltype as the length parameter (instead of UINT32). 699117521Snjl 700117521SnjlSolved a long-standing problem where an ALREADY_EXISTS error 701117521Snjlappears on various systems. This problem could happen when there 702117521Snjlare multiple PCI_Config operation regions under a single PCI root 703117521Snjlbus. This doesn't happen very frequently, but there are some 704117521Snjlsystems that do this in the ASL. 705117521Snjl 706117521SnjlFixed a reported problem where the internal DeleteNode function 707117521Snjlwas incorrectly handling the case where a namespace node was the 708117521Snjlfirst in the parent's child list, and had additional peers (not 709117521Snjlthe only child, but first in the list of children.) 710117521Snjl 711117521SnjlCode and Data Size: Current core subsystem library sizes are 712126372Snjlshown 713126372Snjlbelow. These are the code and data sizes for the acpica.lib 714126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 715126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 716126372Snjlversion of the code includes the debug output trace mechanism and 717126372Snjlhas a much larger code and data size. Note that these values 718126372Snjlwill 719126372Snjlvary depending on the efficiency of the compiler and the compiler 720126372Snjloptions used during generation. 721117521Snjl 722117521Snjl Previous Release 723117521Snjl Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 724117521Snjl Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 725117521Snjl Current Release: 726117521Snjl Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 727117521Snjl Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 728117521Snjl 729117521Snjl 730117521Snjl2) Linux: 731117521Snjl 732117521SnjlAllow ":" in OS override string (Ducrot Bruno) 733117521Snjl 734117521SnjlKobject fix (Greg KH) 735117521Snjl 736117521Snjl 737117521Snjl3 iASL Compiler/Disassembler: 738117521Snjl 739117521SnjlFixed a problem in the generation of the C source code files (AML 740117521Snjlis emitted in C source statements for BIOS inclusion) where the 741117521SnjlAscii dump that appears within a C comment at the end of each 742126372Snjlline 743126372Snjlcould cause a compile time error if the AML sequence happens to 744126372Snjlhave an open comment or close comment sequence embedded. 745117521Snjl 746117521Snjl 747117521Snjl---------------------------------------- 748117521Snjl24 April 2003. Summary of changes for version 20030424. 749117521Snjl 750117521Snjl 751117521Snjl1) ACPI CA Core Subsystem: 752117521Snjl 753117521SnjlSupport for big-endian systems has been implemented. Most of the 754117521Snjlsupport has been invisibly added behind big-endian versions of 755126372Snjlthe 756126372SnjlACPI_MOVE_* macros. 757117521Snjl 758117521SnjlFixed a problem in AcpiHwDisableGpeBlock() and 759117521SnjlAcpiHwClearGpeBlock() where an incorrect offset was passed to the 760117521Snjllow level hardware write routine. The offset parameter was 761117521Snjlactually eliminated from the low level read/write routines 762126372Snjlbecause 763126372Snjlthey had become obsolete. 764117521Snjl 765117521SnjlFixed a problem where a handler object was deleted twice during 766117521Snjlthe removal of a fixed event handler. 767117521Snjl 768117521Snjl 769117521Snjl2) Linux: 770117521Snjl 771117521SnjlA fix for SMP systems with link devices was contributed by 772117521SnjlCompaq's Dan Zink. 773117521Snjl 774117521Snjl(2.5) Return whether we handled the interrupt in our IRQ handler. 775117521Snjl(Linux ISRs no longer return void, so we can propagate the 776126372Snjlhandler 777126372Snjlreturn value from the ACPI CA core back to the OS.) 778117521Snjl 779117521Snjl 780117521Snjl3) Documentation: 781117521Snjl 782117521SnjlThe ACPI CA Programmer Reference has been updated to reflect new 783117521Snjlinterfaces and changes to existing interfaces. 784117521Snjl 785117521Snjl---------------------------------------- 786117521Snjl28 March 2003. Summary of changes for version 20030328. 787117521Snjl 788117521Snjl1) ACPI CA Core Subsystem: 789117521Snjl 790117521SnjlThe GPE Block Device support has been completed. New interfaces 791117521Snjlare AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 792117521Snjlinterfaces (enable, disable, clear, getstatus) have been split 793117521Snjlinto separate interfaces for Fixed Events and General Purpose 794117521SnjlEvents (GPEs) in order to support GPE Block Devices properly. 795117521Snjl 796117521SnjlFixed a problem where the error message "Failed to acquire 797117521Snjlsemaphore" would appear during operations on the embedded 798117521Snjlcontroller (EC). 799117521Snjl 800117521SnjlCode and Data Size: Current core subsystem library sizes are 801126372Snjlshown 802126372Snjlbelow. These are the code and data sizes for the acpica.lib 803126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 804126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 805126372Snjlversion of the code includes the debug output trace mechanism and 806126372Snjlhas a much larger code and data size. Note that these values 807126372Snjlwill 808126372Snjlvary depending on the efficiency of the compiler and the compiler 809126372Snjloptions used during generation. 810117521Snjl 811117521Snjl Previous Release 812117521Snjl Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 813117521Snjl Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 814117521Snjl Current Release: 815117521Snjl Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 816117521Snjl Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 817117521Snjl 818117521Snjl 819117521Snjl---------------------------------------- 820114237Snjl28 February 2003. Summary of changes for version 20030228. 821114237Snjl 822114237Snjl 823114237Snjl1) ACPI CA Core Subsystem: 824114237Snjl 825114237SnjlThe GPE handling and dispatch code has been completely overhauled 826114237Snjlin preparation for support of GPE Block Devices (ID ACPI0006). 827114237SnjlThis affects internal data structures and code only; there should 828114237Snjlbe no differences visible externally. One new file has been 829114237Snjladded, evgpeblk.c 830114237Snjl 831114237SnjlThe FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 832114237Snjlfields that are used to determine the GPE block lengths. The 833114237SnjlREGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 834114237Snjlstructures are ignored. This is per the ACPI specification but 835126372Snjlit 836126372Snjlisn't very clear. The full 256 Block 0/1 GPEs are now supported 837126372Snjl(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 838126372Snjl128). 839114237Snjl 840114237SnjlIn the SCI interrupt handler, removed the read of the PM1_CONTROL 841114237Snjlregister to look at the SCI_EN bit. On some machines, this read 842114237Snjlcauses an SMI event and greatly slows down SCI events. (This may 843114237Snjlin fact be the cause of slow battery status response on some 844114237Snjlsystems.) 845114237Snjl 846114237SnjlFixed a problem where a store of a NULL string to a package 847126372Snjlobject 848126372Snjlcould cause the premature deletion of the object. This was seen 849126372Snjlduring execution of the battery _BIF method on some systems, 850126372Snjlresulting in no battery data being returned. 851114237Snjl 852114237SnjlAdded AcpiWalkResources interface to simplify parsing of resource 853114237Snjllists. 854114237Snjl 855114237SnjlCode and Data Size: Current core subsystem library sizes are 856126372Snjlshown 857126372Snjlbelow. These are the code and data sizes for the acpica.lib 858126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 859126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 860126372Snjlversion of the code includes the debug output trace mechanism and 861126372Snjlhas a much larger code and data size. Note that these values 862126372Snjlwill 863126372Snjlvary depending on the efficiency of the compiler and the compiler 864126372Snjloptions used during generation. 865114237Snjl 866114237Snjl Previous Release 867114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 868114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 869114237Snjl Current Release: 870114237Snjl Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 871114237Snjl Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 872114237Snjl 873114237Snjl 874114237Snjl2) Linux 875114237Snjl 876114237SnjlS3 fixes (Ole Rohne) 877114237Snjl 878114237SnjlUpdate ACPI PHP driver with to use new acpi_walk_resource API 879114237Snjl(Bjorn Helgaas) 880114237Snjl 881114237SnjlAdd S4BIOS support (Pavel Machek) 882114237Snjl 883114237SnjlMap in entire table before performing checksum (John Stultz) 884114237Snjl 885114237SnjlExpand the mem= cmdline to allow the specification of reserved 886126372Snjland 887126372SnjlACPI DATA blocks (Pavel Machek) 888114237Snjl 889114237SnjlNever use ACPI on VISWS 890114237Snjl 891114237SnjlFix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 892114237Snjl 893114237SnjlRevert a change that allowed P_BLK lengths to be 4 or 5. This is 894114237Snjlcausing us to think that some systems support C2 when they really 895114237Snjldon't. 896114237Snjl 897114237SnjlDo not count processor objects for non-present CPUs (Thanks to 898114237SnjlDominik Brodowski) 899114237Snjl 900114237Snjl 901114237Snjl3) iASL Compiler: 902114237Snjl 903114237SnjlFixed a problem where ASL include files could not be found and 904114237Snjlopened. 905114237Snjl 906114237SnjlAdded support for the _PDC reserved name. 907114237Snjl 908114237Snjl 909117521Snjl---------------------------------------- 910114237Snjl22 January 2003. Summary of changes for version 20030122. 911114237Snjl 912114237Snjl 913114237Snjl1) ACPI CA Core Subsystem: 914114237Snjl 915114237SnjlAdded a check for constructs of the form: Store (Local0, Local0) 916114237Snjlwhere Local0 is not initialized. Apparently, some BIOS 917114237Snjlprogrammers believe that this is a NOOP. Since this store 918126372Snjldoesn't 919126372Snjldo anything anyway, the new prototype behavior will ignore this 920126372Snjlerror. This is a case where we can relax the strict checking in 921126372Snjlthe interpreter in the name of compatibility. 922114237Snjl 923114237Snjl 924114237Snjl2) Linux 925114237Snjl 926114237SnjlThe AcpiSrc Source Conversion Utility has been released with the 927114237SnjlLinux package for the first time. This is the utility that is 928114237Snjlused to convert the ACPI CA base source code to the Linux 929114237Snjlversion. 930114237Snjl 931114237Snjl(Both) Handle P_BLK lengths shorter than 6 more gracefully 932114237Snjl 933114237Snjl(Both) Move more headers to include/acpi, and delete an unused 934114237Snjlheader. 935114237Snjl 936114237Snjl(Both) Move drivers/acpi/include directory to include/acpi 937114237Snjl 938114237Snjl(Both) Boot functions don't use cmdline, so don't pass it around 939114237Snjl 940114237Snjl(Both) Remove include of unused header (Adrian Bunk) 941114237Snjl 942114237Snjl(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 943114237Snjlthe 944114237Snjlformer now also includes the latter, acpiphp.h only needs the 945126372Snjlone, 946126372Snjlnow. 947114237Snjl 948114237Snjl(2.5) Make it possible to select method of bios restoring after 949114237SnjlS3 950114237Snjlresume. [=> no more ugly ifdefs] (Pavel Machek) 951114237Snjl 952114237Snjl(2.5) Make proc write interfaces work (Pavel Machek) 953114237Snjl 954114237Snjl(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 955114237Snjl 956114237Snjl(2.5) Break out ACPI Perf code into its own module, under cpufreq 957114237Snjl(Dominik Brodowski) 958114237Snjl 959114237Snjl(2.4) S4BIOS support (Ducrot Bruno) 960114237Snjl 961114237Snjl(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 962114237SnjlVisinoni) 963114237Snjl 964114237Snjl 965114237Snjl3) iASL Compiler: 966114237Snjl 967114237SnjlAdded support to disassemble SSDT and PSDTs. 968114237Snjl 969114237SnjlImplemented support to obtain SSDTs from the Windows registry if 970114237Snjlavailable. 971114237Snjl 972114237Snjl 973102550Siwasaki---------------------------------------- 974114237Snjl09 January 2003. Summary of changes for version 20030109. 975114237Snjl 976114237Snjl1) ACPI CA Core Subsystem: 977114237Snjl 978114237SnjlChanged the behavior of the internal Buffer-to-String conversion 979114237Snjlfunction. The current ACPI specification states that the 980126372Snjlcontents 981126372Snjlof the buffer are "converted to a string of two-character 982126372Snjlhexadecimal numbers, each separated by a space". Unfortunately, 983126372Snjlthis definition is not backwards compatible with existing ACPI 984126372Snjl1.0 985126372Snjlimplementations (although the behavior was not defined in the 986126372SnjlACPI 987126372Snjl1.0 specification). The new behavior simply copies data from the 988126372Snjlbuffer to the string until a null character is found or the end 989126372Snjlof 990126372Snjlthe buffer is reached. The new String object is always null 991126372Snjlterminated. This problem was seen during the generation of _BIF 992126372Snjlbattery data where incorrect strings were returned for battery 993126372Snjltype, etc. This will also require an errata to the ACPI 994126372Snjlspecification. 995114237Snjl 996114237SnjlRenamed all instances of NATIVE_UINT and NATIVE_INT to 997114237SnjlACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 998114237Snjl 999114237SnjlCopyright in all module headers (both Linux and non-Linux) has be 1000114237Snjlupdated to 2003. 1001114237Snjl 1002114237SnjlCode and Data Size: Current core subsystem library sizes are 1003126372Snjlshown 1004126372Snjlbelow. These are the code and data sizes for the acpica.lib 1005126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1006126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1007126372Snjlversion of the code includes the debug output trace mechanism and 1008126372Snjlhas a much larger code and data size. Note that these values 1009126372Snjlwill 1010126372Snjlvary depending on the efficiency of the compiler and the compiler 1011126372Snjloptions used during generation. 1012114237Snjl 1013114237Snjl Previous Release 1014114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 1015114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 1016114237Snjl Current Release: 1017114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 1018114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 1019114237Snjl 1020114237Snjl 1021114237Snjl2) Linux 1022114237Snjl 1023114237SnjlFixed an oops on module insertion/removal (Matthew Tippett) 1024114237Snjl 1025114237Snjl(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 1026114237Snjl 1027114237Snjl(2.5) Replace pr_debug (Randy Dunlap) 1028114237Snjl 1029114237Snjl(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 1030114237Snjl 1031114237Snjl(Both) Eliminate spawning of thread from timer callback, in favor 1032114237Snjlof schedule_work() 1033114237Snjl 1034114237Snjl(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 1035114237Snjl 1036114237Snjl(Both) Added define for Fixed Function HW region (Matthew Wilcox) 1037114237Snjl 1038114237Snjl(Both) Add missing statics to button.c (Pavel Machek) 1039114237Snjl 1040114237SnjlSeveral changes have been made to the source code translation 1041114237Snjlutility that generates the Linux Code in order to make the code 1042114237Snjlmore "Linux-like": 1043114237Snjl 1044114237SnjlAll typedefs on structs and unions have been removed in keeping 1045114237Snjlwith the Linux coding style. 1046114237Snjl 1047114237SnjlRemoved the non-Linux SourceSafe module revision number from each 1048114237Snjlmodule header. 1049114237Snjl 1050114237SnjlCompleted major overhaul of symbols to be lowercased for linux. 1051114237SnjlDoubled the number of symbols that are lowercased. 1052114237Snjl 1053114237SnjlFixed a problem where identifiers within procedure headers and 1054114237Snjlwithin quotes were not fully lower cased (they were left with a 1055114237Snjlstarting capital.) 1056114237Snjl 1057114237SnjlSome C macros whose only purpose is to allow the generation of 16- 1058114237Snjlbit code are now completely removed in the Linux code, increasing 1059114237Snjlreadability and maintainability. 1060114237Snjl 1061114237Snjl---------------------------------------- 1062114237Snjl 1063114237Snjl12 December 2002. Summary of changes for version 20021212. 1064114237Snjl 1065114237Snjl 1066114237Snjl1) ACPI CA Core Subsystem: 1067114237Snjl 1068114237SnjlFixed a problem where the creation of a zero-length AML Buffer 1069114237Snjlwould cause a fault. 1070114237Snjl 1071114237SnjlFixed a problem where a Buffer object that pointed to a static 1072126372SnjlAML 1073126372Snjlbuffer (in an ACPI table) could inadvertently be deleted, causing 1074126372Snjlmemory corruption. 1075114237Snjl 1076114237SnjlFixed a problem where a user buffer (passed in to the external 1077114237SnjlACPI CA interfaces) could be overwritten if the buffer was too 1078114237Snjlsmall to complete the operation, causing memory corruption. 1079114237Snjl 1080114237SnjlFixed a problem in the Buffer-to-String conversion code where a 1081114237Snjlstring of length one was always returned, regardless of the size 1082114237Snjlof the input Buffer object. 1083114237Snjl 1084114237SnjlRemoved the NATIVE_CHAR data type across the entire source due to 1085114237Snjllack of need and lack of consistent use. 1086114237Snjl 1087114237SnjlCode and Data Size: Current core subsystem library sizes are 1088126372Snjlshown 1089126372Snjlbelow. These are the code and data sizes for the acpica.lib 1090126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1091126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1092126372Snjlversion of the code includes the debug output trace mechanism and 1093126372Snjlhas a much larger code and data size. Note that these values 1094126372Snjlwill 1095126372Snjlvary depending on the efficiency of the compiler and the compiler 1096126372Snjloptions used during generation. 1097114237Snjl 1098114237Snjl Previous Release 1099114237Snjl Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 1100114237Snjl Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 1101114237Snjl Current Release: 1102114237Snjl Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 1103114237Snjl Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 1104114237Snjl 1105114237Snjl 1106114237Snjl---------------------------------------- 1107114237Snjl05 December 2002. Summary of changes for version 20021205. 1108114237Snjl 1109114237Snjl1) ACPI CA Core Subsystem: 1110114237Snjl 1111114237SnjlFixed a problem where a store to a String or Buffer object could 1112114237Snjlcause corruption of the DSDT if the object type being stored was 1113114237Snjlthe same as the target object type and the length of the object 1114114237Snjlbeing stored was equal to or smaller than the original (existing) 1115114237Snjltarget object. This was seen to cause corruption of battery _BIF 1116114237Snjlbuffers if the _BIF method modified the buffer on the fly. 1117114237Snjl 1118114237SnjlFixed a problem where an internal error was generated if a 1119126372Snjlcontrol 1120126372Snjlmethod invocation was used in an OperationRegion, Buffer, or 1121126372SnjlPackage declaration. This was caused by the deferred parsing of 1122126372Snjlthe control method and thus the deferred creation of the internal 1123126372Snjlmethod object. The solution to this problem was to create the 1124126372Snjlinternal method object at the moment the method is encountered in 1125126372Snjlthe first pass - so that subsequent references to the method will 1126126372Snjlable to obtain the required parameter count and thus properly 1127126372Snjlparse the method invocation. This problem presented itself as an 1128126372SnjlAE_AML_INTERNAL during the pass 1 parse phase during table load. 1129114237Snjl 1130114237SnjlFixed a problem where the internal String object copy routine did 1131114237Snjlnot always allocate sufficient memory for the target String 1132126372Snjlobject 1133126372Snjland caused memory corruption. This problem was seen to cause 1134126372Snjl"Allocation already present in list!" errors as memory allocation 1135126372Snjlbecame corrupted. 1136114237Snjl 1137114237SnjlImplemented a new function for the evaluation of namespace 1138126372Snjlobjects 1139126372Snjlthat allows the specification of the allowable return object 1140126372Snjltypes. This simplifies a lot of code that checks for a return 1141126372Snjlobject of one or more specific objects returned from the 1142114237Snjlevaluation (such as _STA, etc.) This may become and external 1143114237Snjlfunction if it would be useful to ACPI-related drivers. 1144114237Snjl 1145114237SnjlCompleted another round of prefixing #defines with "ACPI_" for 1146114237Snjlclarity. 1147114237Snjl 1148114237SnjlCompleted additional code restructuring to allow more modular 1149114237Snjllinking for iASL compiler and AcpiExec. Several files were split 1150114237Snjlcreating new files. New files: nsparse.c dsinit.c evgpe.c 1151114237Snjl 1152114237SnjlImplemented an abort mechanism to terminate an executing control 1153114237Snjlmethod via the AML debugger. This feature is useful for 1154126372Snjldebugging 1155126372Snjlcontrol methods that depend (wait) for specific hardware 1156126372Snjlresponses. 1157114237Snjl 1158114237SnjlCode and Data Size: Current core subsystem library sizes are 1159126372Snjlshown 1160126372Snjlbelow. These are the code and data sizes for the acpica.lib 1161126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1162126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1163126372Snjlversion of the code includes the debug output trace mechanism and 1164126372Snjlhas a much larger code and data size. Note that these values 1165126372Snjlwill 1166126372Snjlvary depending on the efficiency of the compiler and the compiler 1167126372Snjloptions used during generation. 1168114237Snjl 1169114237Snjl Previous Release 1170114237Snjl Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 1171114237Snjl Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 1172114237Snjl Current Release: 1173114237Snjl Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 1174114237Snjl Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 1175114237Snjl 1176114237Snjl 1177114237Snjl2) iASL Compiler/Disassembler 1178114237Snjl 1179114237SnjlFixed a compiler code generation problem for "Interrupt" Resource 1180114237SnjlDescriptors. If specified in the ASL, the optional "Resource 1181114237SnjlSource Index" and "Resource Source" fields were not inserted into 1182114237Snjlthe correct location within the AML resource descriptor, creating 1183114237Snjlan invalid descriptor. 1184114237Snjl 1185114237SnjlFixed a disassembler problem for "Interrupt" resource 1186126372Snjldescriptors. 1187126372SnjlThe optional "Resource Source Index" and "Resource Source" fields 1188126372Snjlwere ignored. 1189114237Snjl 1190114237Snjl 1191114237Snjl---------------------------------------- 1192114237Snjl22 November 2002. Summary of changes for version 20021122. 1193114237Snjl 1194114237Snjl 1195114237Snjl1) ACPI CA Core Subsystem: 1196114237Snjl 1197114237SnjlFixed a reported problem where an object stored to a Method Local 1198114237Snjlor Arg was not copied to a new object during the store - the 1199114237Snjlobject pointer was simply copied to the Local/Arg. This caused 1200114237Snjlall subsequent operations on the Local/Arg to also affect the 1201114237Snjloriginal source of the store operation. 1202114237Snjl 1203114237SnjlFixed a problem where a store operation to a Method Local or Arg 1204114237Snjlwas not completed properly if the Local/Arg contained a reference 1205114237Snjl(from RefOf) to a named field. The general-purpose store-to- 1206114237Snjlnamespace-node code is now used so that this case is handled 1207114237Snjlautomatically. 1208114237Snjl 1209114237SnjlFixed a problem where the internal object copy routine would 1210126372Snjlcause 1211126372Snjla protection fault if the object being copied was a Package and 1212126372Snjlcontained either 1) a NULL package element or 2) a nested sub- 1213114237Snjlpackage. 1214114237Snjl 1215114237SnjlFixed a problem with the GPE initialization that resulted from an 1216114237Snjlambiguity in the ACPI specification. One section of the 1217114237Snjlspecification states that both the address and length of the GPE 1218114237Snjlblock must be zero if the block is not supported. Another 1219126372Snjlsection 1220126372Snjlimplies that only the address need be zero if the block is not 1221126372Snjlsupported. The code has been changed so that both the address 1222126372Snjland 1223126372Snjlthe length must be non-zero to indicate a valid GPE block (i.e., 1224126372Snjlif either the address or the length is zero, the GPE block is 1225126372Snjlinvalid.) 1226114237Snjl 1227114237SnjlCode and Data Size: Current core subsystem library sizes are 1228126372Snjlshown 1229126372Snjlbelow. These are the code and data sizes for the acpica.lib 1230126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1231126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1232126372Snjlversion of the code includes the debug output trace mechanism and 1233126372Snjlhas a much larger code and data size. Note that these values 1234126372Snjlwill 1235126372Snjlvary depending on the efficiency of the compiler and the compiler 1236126372Snjloptions used during generation. 1237114237Snjl 1238114237Snjl Previous Release 1239114237Snjl Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 1240114237Snjl Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 1241114237Snjl Current Release: 1242114237Snjl Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 1243114237Snjl Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 1244114237Snjl 1245114237Snjl 1246114237Snjl2) Linux 1247114237Snjl 1248114237SnjlCleaned up EC driver. Exported an external EC read/write 1249114237Snjlinterface. By going through this, other drivers (most notably 1250114237Snjlsonypi) will be able to serialize access to the EC. 1251114237Snjl 1252114237Snjl 1253114237Snjl3) iASL Compiler/Disassembler 1254114237Snjl 1255114237SnjlImplemented support to optionally generate include files for both 1256114237SnjlASM and C (the -i switch). This simplifies BIOS development by 1257114237Snjlautomatically creating include files that contain external 1258114237Snjldeclarations for the symbols that are created within the 1259114237Snjl(optionally generated) ASM and C AML source files. 1260114237Snjl 1261114237Snjl 1262114237Snjl---------------------------------------- 1263107325Siwasaki15 November 2002. Summary of changes for version 20021115. 1264104470Siwasaki 1265107325Siwasaki1) ACPI CA Core Subsystem: 1266107325Siwasaki 1267114237SnjlFixed a memory leak problem where an error during resolution of 1268114237Snjlmethod arguments during a method invocation from another method 1269114237Snjlfailed to cleanup properly by deleting all successfully resolved 1270114237Snjlargument objects. 1271107325Siwasaki 1272114237SnjlFixed a problem where the target of the Index() operator was not 1273114237Snjlcorrectly constructed if the source object was a package. This 1274114237Snjlproblem has not been detected because the use of a target operand 1275114237Snjlwith Index() is very rare. 1276107325Siwasaki 1277107325SiwasakiFixed a problem with the Index() operator where an attempt was 1278107325Siwasakimade to delete the operand objects twice. 1279107325Siwasaki 1280107325SiwasakiFixed a problem where an attempt was made to delete an operand 1281114237Snjltwice during execution of the CondRefOf() operator if the target 1282114237Snjldid not exist. 1283107325Siwasaki 1284114237SnjlImplemented the first of perhaps several internal create object 1285114237Snjlfunctions that create and initialize a specific object type. 1286126372SnjlThis 1287126372Snjlconsolidates duplicated code wherever the object is created, thus 1288126372Snjlshrinking the size of the subsystem. 1289107325Siwasaki 1290114237SnjlImplemented improved debug/error messages for errors that occur 1291114237Snjlduring nested method invocations. All executing method pathnames 1292114237Snjlare displayed (with the error) as the call stack is unwound - 1293126372Snjlthus 1294126372Snjlsimplifying debug. 1295107325Siwasaki 1296107325SiwasakiFixed a problem introduced in the 10/02 release that caused 1297114237Snjlpremature deletion of a buffer object if a buffer was used as an 1298114237SnjlASL operand where an integer operand is required (Thus causing an 1299114237Snjlimplicit object conversion from Buffer to Integer.) The change 1300126372Snjlin 1301126372Snjlthe 10/02 release was attempting to fix a memory leak (albeit 1302114237Snjlincorrectly.) 1303107325Siwasaki 1304107325SiwasakiCode and Data Size: Current core subsystem library sizes are 1305126372Snjlshown 1306126372Snjlbelow. These are the code and data sizes for the acpica.lib 1307126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1308126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1309126372Snjlversion of the code includes the debug output trace mechanism and 1310126372Snjlhas a much larger code and data size. Note that these values 1311126372Snjlwill 1312126372Snjlvary depending on the efficiency of the compiler and the compiler 1313126372Snjloptions used during generation. 1314107325Siwasaki 1315107325Siwasaki Previous Release 1316107325Siwasaki Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 1317107325Siwasaki Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 1318107325Siwasaki Current Release: 1319107325Siwasaki Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 1320107325Siwasaki Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 1321107325Siwasaki 1322107325Siwasaki 1323107325Siwasaki2) Linux 1324107325Siwasaki 1325114237SnjlChanged the implementation of the ACPI semaphores to use down() 1326114237Snjlinstead of down_interruptable(). It is important that the 1327114237Snjlexecution of ACPI control methods not be interrupted by signals. 1328114237SnjlMethods must run to completion, or the system may be left in an 1329114237Snjlunknown/unstable state. 1330107325Siwasaki 1331107325SiwasakiFixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not 1332126372Snjlset. 1333126372Snjl(Shawn Starr) 1334107325Siwasaki 1335107325Siwasaki 1336107325Siwasaki3) iASL Compiler/Disassembler 1337107325Siwasaki 1338107325Siwasaki 1339114237SnjlChanged the default location of output files. All output files 1340114237Snjlare now placed in the current directory by default instead of in 1341114237Snjlthe directory of the source file. This change may affect some 1342114237Snjlexisting makefiles, but it brings the behavior of the compiler in 1343114237Snjlline with other similar tools. The location of the output files 1344114237Snjlcan be overridden with the -p command line switch. 1345107325Siwasaki 1346114237Snjl 1347107325Siwasaki---------------------------------------- 1348107325Siwasaki11 November 2002. Summary of changes for version 20021111. 1349107325Siwasaki 1350107325Siwasaki 1351114237Snjl0) ACPI Specification 2.0B is released and is now available at: 1352114237Snjlhttp://www.acpi.info/index.html 1353107325Siwasaki 1354107325Siwasaki 1355107325Siwasaki1) ACPI CA Core Subsystem: 1356107325Siwasaki 1357107325SiwasakiImplemented support for the ACPI 2.0 SMBus Operation Regions. 1358114237SnjlThis includes the early detection and handoff of the request to 1359114237Snjlthe SMBus region handler (avoiding all of the complex field 1360107325Siwasakisupport code), and support for the bidirectional return packet 1361107325Siwasakifrom an SMBus write operation. This paves the way for the 1362107325Siwasakidevelopment of SMBus drivers in each host operating system. 1363107325Siwasaki 1364107325SiwasakiFixed a problem where the semaphore WAIT_FOREVER constant was 1365107325Siwasakidefined as 32 bits, but must be 16 bits according to the ACPI 1366107325Siwasakispecification. This had the side effect of causing ASL 1367107325SiwasakiMutex/Event timeouts even though the ASL code requested a wait 1368107325Siwasakiforever. Changed all internal references to the ACPI timeout 1369107325Siwasakiparameter to 16 bits to prevent future problems. Changed the 1370126372Snjlname 1371126372Snjlof WAIT_FOREVER to ACPI_WAIT_FOREVER. 1372107325Siwasaki 1373107325SiwasakiCode and Data Size: Current core subsystem library sizes are 1374126372Snjlshown 1375126372Snjlbelow. These are the code and data sizes for the acpica.lib 1376126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1377126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1378126372Snjlversion of the code includes the debug output trace mechanism and 1379126372Snjlhas a much larger code and data size. Note that these values 1380126372Snjlwill 1381126372Snjlvary depending on the efficiency of the compiler and the compiler 1382126372Snjloptions used during generation. 1383107325Siwasaki 1384107325Siwasaki Previous Release 1385107325Siwasaki Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 1386107325Siwasaki Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 1387107325Siwasaki Current Release: 1388107325Siwasaki Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 1389107325Siwasaki Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 1390107325Siwasaki 1391107325Siwasaki 1392107325Siwasaki2) Linux 1393107325Siwasaki 1394107325SiwasakiModule loading/unloading fixes (John Cagle) 1395107325Siwasaki 1396107325Siwasaki 1397107325Siwasaki3) iASL Compiler/Disassembler 1398107325Siwasaki 1399107325SiwasakiAdded support for the SMBBlockProcessCall keyword (ACPI 2.0) 1400107325Siwasaki 1401107325SiwasakiImplemented support for the disassembly of all SMBus protocol 1402107325Siwasakikeywords (SMBQuick, SMBWord, etc.) 1403107325Siwasaki 1404107325Siwasaki---------------------------------------- 1405107325Siwasaki01 November 2002. Summary of changes for version 20021101. 1406107325Siwasaki 1407107325Siwasaki 1408107325Siwasaki1) ACPI CA Core Subsystem: 1409107325Siwasaki 1410107325SiwasakiFixed a problem where platforms that have a GPE1 block but no 1411126372SnjlGPE0 1412126372Snjlblock were not handled correctly. This resulted in a "GPE 1413114237Snjloverlap" error message. GPE0 is no longer required. 1414107325Siwasaki 1415107325SiwasakiRemoved code added in the previous release that inserted nodes 1416114237Snjlinto the namespace in alphabetical order. This caused some side- 1417114237Snjleffects on various machines. The root cause of the problem is 1418114237Snjlstill under investigation since in theory, the internal ordering 1419114237Snjlof the namespace nodes should not matter. 1420107325Siwasaki 1421107325Siwasaki 1422114237SnjlEnhanced error reporting for the case where a named object is not 1423114237Snjlfound during control method execution. The full ACPI namepath 1424114237Snjl(name reference) of the object that was not found is displayed in 1425114237Snjlthis case. 1426107325Siwasaki 1427114237SnjlNote: as a result of the overhaul of the namespace object types 1428126372Snjlin 1429126372Snjlthe previous release, the namespace nodes for the predefined 1430114237Snjlscopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 1431114237Snjlinstead of ACPI_TYPE_ANY. This simplifies the namespace 1432114237Snjlmanagement code but may affect code that walks the namespace tree 1433114237Snjllooking for specific object types. 1434114237Snjl 1435107325SiwasakiCode and Data Size: Current core subsystem library sizes are 1436126372Snjlshown 1437126372Snjlbelow. These are the code and data sizes for the acpica.lib 1438126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1439126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1440126372Snjlversion of the code includes the debug output trace mechanism and 1441126372Snjlhas a much larger code and data size. Note that these values 1442126372Snjlwill 1443126372Snjlvary depending on the efficiency of the compiler and the compiler 1444126372Snjloptions used during generation. 1445107325Siwasaki 1446107325Siwasaki Previous Release 1447107325Siwasaki Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 1448107325Siwasaki Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 1449107325Siwasaki Current Release: 1450107325Siwasaki Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 1451107325Siwasaki Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 1452107325Siwasaki 1453107325Siwasaki 1454107325Siwasaki2) Linux 1455107325Siwasaki 1456107325SiwasakiFixed a problem introduced in the previous release where the 1457114237SnjlProcessor and Thermal objects were not recognized and installed 1458126372Snjlin 1459126372Snjl/proc. This was related to the scope type change described 1460114237Snjlabove. 1461107325Siwasaki 1462107325Siwasaki 1463107325Siwasaki3) iASL Compiler/Disassembler 1464107325Siwasaki 1465114237SnjlImplemented the -g option to get all of the required ACPI tables 1466114237Snjlfrom the registry and save them to files (Windows version of the 1467114237Snjlcompiler only.) The required tables are the FADT, FACS, and 1468114237SnjlDSDT. 1469107325Siwasaki 1470114237SnjlAdded ACPI table checksum validation during table disassembly in 1471114237Snjlorder to catch corrupted tables. 1472107325Siwasaki 1473107325Siwasaki 1474107325Siwasaki---------------------------------------- 1475107325Siwasaki22 October 2002. Summary of changes for version 20021022. 1476107325Siwasaki 1477107325Siwasaki1) ACPI CA Core Subsystem: 1478107325Siwasaki 1479114237SnjlImplemented a restriction on the Scope operator that the target 1480114237Snjlmust already exist in the namespace at the time the operator is 1481114237Snjlencountered (during table load or method execution). In other 1482114237Snjlwords, forward references are not allowed and Scope() cannot 1483114237Snjlcreate a new object. This changes the previous behavior where the 1484114237Snjlinterpreter would create the name if not found. This new 1485126372Snjlbehavior 1486126372Snjlcorrectly enables the search-to-root algorithm during namespace 1487126372Snjllookup of the target name. Because of this upsearch, this fixes 1488126372Snjlthe known Compaq _SB_.OKEC problem and makes both the AML 1489126372Snjlinterpreter and iASL compiler compatible with other ACPI 1490114237Snjlimplementations. 1491107325Siwasaki 1492114237SnjlCompleted a major overhaul of the internal ACPI object types for 1493114237Snjlthe ACPI Namespace and the associated operand objects. Many of 1494114237Snjlthese types had become obsolete with the introduction of the two- 1495114237Snjlpass namespace load. This cleanup simplifies the code and makes 1496114237Snjlthe entire namespace load mechanism much clearer and easier to 1497114237Snjlunderstand. 1498107325Siwasaki 1499114237SnjlImproved debug output for tracking scope opening/closing to help 1500114237Snjldiagnose scoping issues. The old scope name as well as the new 1501114237Snjlscope name are displayed. Also improved error messages for 1502114237Snjlproblems with ASL Mutex objects and error messages for GPE 1503114237Snjlproblems. 1504107325Siwasaki 1505107325SiwasakiCleaned up the namespace dump code, removed obsolete code. 1506107325Siwasaki 1507114237SnjlAll string output (for all namespace/object dumps) now uses the 1508114237Snjlcommon ACPI string output procedure which handles escapes 1509126372Snjlproperly 1510126372Snjland does not emit non-printable characters. 1511107325Siwasaki 1512107325SiwasakiFixed some issues with constants in the 64-bit version of the 1513107325Siwasakilocal C library (utclib.c) 1514107325Siwasaki 1515107325Siwasaki 1516107325Siwasaki2) Linux 1517107325Siwasaki 1518107325SiwasakiEC Driver: No longer attempts to acquire the Global Lock at 1519107325Siwasakiinterrupt level. 1520107325Siwasaki 1521107325Siwasaki 1522107325Siwasaki3) iASL Compiler/Disassembler 1523107325Siwasaki 1524107325SiwasakiImplemented ACPI 2.0B grammar change that disallows all Type 1 1525126372Snjland 1526126372Snjl2 opcodes outside of a control method. This means that the 1527114237Snjl"executable" operators (versus the "namespace" operators) cannot 1528114237Snjlbe used at the table level; they can only be used within a 1529126372Snjlcontrol 1530126372Snjlmethod. 1531107325Siwasaki 1532107325SiwasakiImplemented the restriction on the Scope() operator where the 1533107325Siwasakitarget must already exist in the namespace at the time the 1534114237Snjloperator is encountered (during ASL compilation). In other words, 1535114237Snjlforward references are not allowed and Scope() cannot create a 1536126372Snjlnew 1537126372Snjlobject. This makes the iASL compiler compatible with other ACPI 1538126372Snjlimplementations and makes the Scope() implementation adhere to 1539126372Snjlthe 1540126372SnjlACPI specification. 1541107325Siwasaki 1542107325SiwasakiFixed a problem where namepath optimization for the Alias 1543126372Snjloperator 1544126372Snjlwas optimizing the wrong path (of the two namepaths.) This 1545126372Snjlcaused 1546126372Snjla "Missing alias link" error message. 1547107325Siwasaki 1548114237SnjlFixed a problem where an "unknown reserved name" warning could be 1549114237Snjlincorrectly generated for names like "_SB" when the trailing 1550114237Snjlunderscore is not used in the original ASL. 1551107325Siwasaki 1552107325SiwasakiFixed a problem where the reserved name check did not handle 1553114237SnjlNamePaths with multiple NameSegs correctly. The first nameseg of 1554114237Snjlthe NamePath was examined instead of the last NameSeg. 1555107325Siwasaki 1556107325Siwasaki 1557107325Siwasaki---------------------------------------- 1558107325Siwasaki 1559104470Siwasaki02 October 2002. Summary of changes for this release. 1560104470Siwasaki 1561104470Siwasaki 1562104470Siwasaki1) ACPI CA Core Subsystem version 20021002: 1563104470Siwasaki 1564104470SiwasakiFixed a problem where a store/copy of a string to an existing 1565104470Siwasakistring did not always set the string length properly in the 1566126372SnjlString 1567126372Snjlobject. 1568104470Siwasaki 1569104470SiwasakiFixed a reported problem with the ToString operator where the 1570104470Siwasakibehavior was identical to the ToHexString operator instead of 1571126372Snjljust 1572126372Snjlsimply converting a raw buffer to a string data type. 1573104470Siwasaki 1574104470SiwasakiFixed a problem where CopyObject and the other "explicit" 1575104470Siwasakiconversion operators were not updating the internal namespace 1576126372Snjlnode 1577126372Snjltype as part of the store operation. 1578104470Siwasaki 1579104470SiwasakiFixed a memory leak during implicit source operand conversion 1580114237Snjlwhere the original object was not deleted if it was converted to 1581126372Snjla 1582126372Snjlnew object of a different type. 1583104470Siwasaki 1584104470SiwasakiEnhanced error messages for all problems associated with 1585126372Snjlnamespace 1586126372Snjllookups. Common procedure generates and prints the lookup name 1587126372Snjlas 1588126372Snjlwell as the formatted status. 1589104470Siwasaki 1590104470SiwasakiCompleted implementation of a new design for the Alias support 1591104470Siwasakiwithin the namespace. The existing design did not handle the 1592126372Snjlcase 1593126372Snjlwhere a new object was assigned to one of the two names due to 1594126372Snjlthe 1595126372Snjluse of an explicit conversion operator, resulting in the two 1596126372Snjlnames 1597126372Snjlpointing to two different objects. The new design simply points 1598126372Snjlthe Alias name to the original name node - not to the object. 1599126372SnjlThis results in a level of indirection that must be handled in 1600126372Snjlthe 1601126372Snjlname resolution mechanism. 1602104470Siwasaki 1603104470SiwasakiCode and Data Size: Current core subsystem library sizes are 1604126372Snjlshown 1605126372Snjlbelow. These are the code and data sizes for the acpica.lib 1606126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1607126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1608126372Snjlversion of the code includes the debug output trace mechanism and 1609126372Snjlhas a larger code and data size. Note that these values will 1610126372Snjlvary 1611126372Snjldepending on the efficiency of the compiler and the compiler 1612126372Snjloptions used during generation. 1613104470Siwasaki 1614104470Siwasaki Previous Release 1615104470Siwasaki Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 1616104470Siwasaki Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 1617104470Siwasaki Current Release: 1618104470Siwasaki Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 1619104470Siwasaki Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 1620104470Siwasaki 1621104470Siwasaki 1622104470Siwasaki2) Linux 1623104470Siwasaki 1624104470SiwasakiInitialize thermal driver's timer before it is used. (Knut 1625104470SiwasakiNeumann) 1626104470Siwasaki 1627104470SiwasakiAllow handling negative celsius values. (Kochi Takayoshi) 1628104470Siwasaki 1629114237SnjlFix thermal management and make trip points. R/W (Pavel Machek) 1630104470Siwasaki 1631104470SiwasakiFix /proc/acpi/sleep. (P. Christeas) 1632104470Siwasaki 1633104470SiwasakiIA64 fixes. (David Mosberger) 1634104470Siwasaki 1635104470SiwasakiFix reversed logic in blacklist code. (Sergio Monteiro Basto) 1636104470Siwasaki 1637104470SiwasakiReplace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 1638104470SiwasakiBrodowski) 1639104470Siwasaki 1640104470Siwasaki 1641104470Siwasaki3) iASL Compiler/Disassembler 1642104470Siwasaki 1643104470SiwasakiClarified some warning/error messages. 1644104470Siwasaki 1645104470Siwasaki 1646104470Siwasaki---------------------------------------- 1647104470Siwasaki18 September 2002. Summary of changes for this release. 1648104470Siwasaki 1649104470Siwasaki 1650104470Siwasaki1) ACPI CA Core Subsystem version 20020918: 1651104470Siwasaki 1652114237SnjlFixed a reported problem with reference chaining (via the Index() 1653114237Snjland RefOf() operators) in the ObjectType() and SizeOf() 1654126372Snjloperators. 1655126372SnjlThe definition of these operators includes the dereferencing of 1656126372Snjlall chained references to return information on the base object. 1657104470Siwasaki 1658104470SiwasakiFixed a problem with stores to indexed package elements - the 1659104470Siwasakiexisting code would not complete the store if an "implicit 1660114237Snjlconversion" was not performed. In other words, if the existing 1661114237Snjlobject (package element) was to be replaced completely, the code 1662114237Snjldidn't handle this case. 1663104470Siwasaki 1664104470SiwasakiRelaxed typechecking on the ASL "Scope" operator to allow the 1665104470Siwasakitarget name to refer to an object of type Integer, String, or 1666104470SiwasakiBuffer, in addition to the scoping object types (Device, 1667104470Siwasakipredefined Scopes, Processor, PowerResource, and ThermalZone.) 1668114237SnjlThis allows existing AML code that has workarounds for a bug in 1669114237SnjlWindows to function properly. A warning is issued, however. 1670126372SnjlThis 1671126372Snjlaffects both the AML interpreter and the iASL compiler. Below is 1672126372Snjlan example of this type of ASL code: 1673104470Siwasaki 1674104470Siwasaki Name(DEB,0x00) 1675104470Siwasaki Scope(DEB) 1676104470Siwasaki { 1677104470Siwasaki 1678114237SnjlFixed some reported problems with 64-bit integer support in the 1679114237Snjllocal implementation of C library functions (clib.c) 1680104470Siwasaki 1681104470Siwasaki 1682104470Siwasaki2) Linux 1683104470Siwasaki 1684104470SiwasakiUse ACPI fix map region instead of IOAPIC region, since it is 1685104470Siwasakiundefined in non-SMP. 1686104470Siwasaki 1687114237SnjlEnsure that the SCI has the proper polarity and trigger, even on 1688114237Snjlsystems that do not have an interrupt override entry in the MADT. 1689104470Siwasaki 1690104470Siwasaki2.5 big driver reorganization (Pat Mochel) 1691104470Siwasaki 1692104470SiwasakiUse early table mapping code from acpitable.c (Andi Kleen) 1693104470Siwasaki 1694104470SiwasakiNew blacklist entries (Andi Kleen) 1695104470Siwasaki 1696114237SnjlBlacklist improvements. Split blacklist code out into a separate 1697114237Snjlfile. Move checking the blacklist to very early. Previously, we 1698114237Snjlwould use ACPI tables, and then halfway through init, check the 1699114237Snjlblacklist -- too late. Now, it's early enough to completely fall- 1700114237Snjlback to non-ACPI. 1701104470Siwasaki 1702104470Siwasaki 1703104470Siwasaki3) iASL Compiler/Disassembler version 20020918: 1704104470Siwasaki 1705114237SnjlFixed a problem where the typechecking code didn't know that an 1706114237Snjlalias could point to a method. In other words, aliases were not 1707114237Snjlbeing dereferenced during typechecking. 1708104470Siwasaki 1709104470Siwasaki 1710104470Siwasaki---------------------------------------- 1711104470Siwasaki29 August 2002. Summary of changes for this release. 1712104470Siwasaki 1713104470Siwasaki1) ACPI CA Core Subsystem Version 20020829: 1714104470Siwasaki 1715114237SnjlIf the target of a Scope() operator already exists, it must be an 1716114237Snjlobject type that actually opens a scope -- such as a Device, 1717114237SnjlMethod, Scope, etc. This is a fatal runtime error. Similar 1718126372Snjlerror 1719126372Snjlcheck has been added to the iASL compiler also. 1720104470Siwasaki 1721114237SnjlTightened up the namespace load to disallow multiple names in the 1722114237Snjlsame scope. This previously was allowed if both objects were of 1723114237Snjlthe same type. (i.e., a lookup was the same as entering a new 1724114237Snjlname). 1725104470Siwasaki 1726104470Siwasaki 1727104470Siwasaki2) Linux 1728104470Siwasaki 1729104470SiwasakiEnsure that the ACPI interrupt has the proper trigger and 1730104470Siwasakipolarity. 1731104470Siwasaki 1732104470Siwasakilocal_irq_disable is extraneous. (Matthew Wilcox) 1733104470Siwasaki 1734104470SiwasakiMake "acpi=off" actually do what it says, and not use the ACPI 1735104470Siwasakiinterpreter *or* the tables. 1736104470Siwasaki 1737104470SiwasakiAdded arch-neutral support for parsing SLIT and SRAT tables 1738126372Snjl(Kochi 1739126372SnjlTakayoshi) 1740104470Siwasaki 1741104470Siwasaki 1742104470Siwasaki3) iASL Compiler/Disassembler Version 20020829: 1743104470Siwasaki 1744104470SiwasakiImplemented namepath optimization for name declarations. For 1745104470Siwasakiexample, a declaration like "Method (\_SB_.ABCD)" would get 1746104470Siwasakioptimized to "Method (ABCD)" if the declaration is within the 1747104470Siwasaki\_SB_ scope. This optimization is in addition to the named 1748104470Siwasakireference path optimization first released in the previous 1749114237Snjlversion. This would seem to complete all possible optimizations 1750114237Snjlfor namepaths within the ASL/AML. 1751104470Siwasaki 1752114237SnjlIf the target of a Scope() operator already exists, it must be an 1753114237Snjlobject type that actually opens a scope -- such as a Device, 1754114237SnjlMethod, Scope, etc. 1755104470Siwasaki 1756114237SnjlImplemented a check and warning for unreachable code in the same 1757114237Snjlblock below a Return() statement. 1758104470Siwasaki 1759114237SnjlFixed a problem where the listing file was not generated if the 1760114237Snjlcompiler aborted if the maximum error count was exceeded (200). 1761104470Siwasaki 1762104470SiwasakiFixed a problem where the typechecking of method return values 1763126372Snjlwas 1764126372Snjlbroken. This includes the check for a return value when the 1765114237Snjlmethod is invoked as a TermArg (a return value is expected.) 1766104470Siwasaki 1767104470SiwasakiFixed a reported problem where EOF conditions during a quoted 1768104470Siwasakistring or comment caused a fault. 1769104470Siwasaki 1770104470Siwasaki 1771104470Siwasaki---------------------------------------- 1772102550Siwasaki15 August 2002. Summary of changes for this release. 1773102550Siwasaki 1774102550Siwasaki1) ACPI CA Core Subsystem Version 20020815: 1775102550Siwasaki 1776114237SnjlFixed a reported problem where a Store to a method argument that 1777114237Snjlcontains a reference did not perform the indirect store 1778126372Snjlcorrectly. 1779126372SnjlThis problem was created during the conversion to the new 1780126372Snjlreference object model - the indirect store to a method argument 1781126372Snjlcode was not updated to reflect the new model. 1782102550Siwasaki 1783114237SnjlReworked the ACPI mode change code to better conform to ACPI 2.0, 1784114237Snjlhandle corner cases, and improve code legibility (Kochi 1785102550SiwasakiTakayoshi) 1786102550Siwasaki 1787102550SiwasakiFixed a problem with the pathname parsing for the carat (^) 1788114237Snjlprefix. The heavy use of the carat operator by the new namepath 1789114237Snjloptimization in the iASL compiler uncovered a problem with the 1790126372SnjlAML 1791126372Snjlinterpreter handling of this prefix. In the case where one or 1792126372Snjlmore carats precede a single nameseg, the nameseg was treated as 1793126372Snjlstandalone and the search rule (to root) was inadvertently 1794114237Snjlapplied. This could cause both the iASL compiler and the 1795114237Snjlinterpreter to find the wrong object or to miss the error that 1796114237Snjlshould occur if the object does not exist at that exact pathname. 1797102550Siwasaki 1798114237SnjlFound and fixed the problem where the HP Pavilion DSDT would not 1799114237Snjlload. This was a relatively minor tweak to the table loading 1800126372Snjlcode 1801126372Snjl(a problem caused by the unexpected encounter with a method 1802114237Snjlinvocation not within a control method), but it does not solve 1803126372Snjlthe 1804126372Snjloverall issue of the execution of AML code at the table level. 1805126372SnjlThis investigation is still ongoing. 1806102550Siwasaki 1807102550SiwasakiCode and Data Size: Current core subsystem library sizes are 1808126372Snjlshown 1809126372Snjlbelow. These are the code and data sizes for the acpica.lib 1810126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1811126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1812126372Snjlversion of the code includes the debug output trace mechanism and 1813126372Snjlhas a larger code and data size. Note that these values will 1814126372Snjlvary 1815126372Snjldepending on the efficiency of the compiler and the compiler 1816126372Snjloptions used during generation. 1817102550Siwasaki 1818102550Siwasaki Previous Release 1819104470Siwasaki Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 1820104470Siwasaki Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 1821102550Siwasaki Current Release: 1822104470Siwasaki Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 1823104470Siwasaki Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 1824102550Siwasaki 1825102550Siwasaki 1826102550Siwasaki2) Linux 1827102550Siwasaki 1828102550SiwasakiRemove redundant slab.h include (Brad Hards) 1829102550Siwasaki 1830102550SiwasakiFix several bugs in thermal.c (Herbert Nachtnebel) 1831102550Siwasaki 1832102550SiwasakiMake CONFIG_ACPI_BOOT work properly (Pavel Machek) 1833102550Siwasaki 1834104470SiwasakiChange acpi_system_suspend to use updated irq functions (Pavel 1835104470SiwasakiMachek) 1836102550Siwasaki 1837102550SiwasakiExport acpi_get_firmware_table (Matthew Wilcox) 1838102550Siwasaki 1839102550SiwasakiUse proper root proc entry for ACPI (Kochi Takayoshi) 1840102550Siwasaki 1841102550SiwasakiFix early-boot table parsing (Bjorn Helgaas) 1842102550Siwasaki 1843102550Siwasaki 1844102550Siwasaki3) iASL Compiler/Disassembler 1845102550Siwasaki 1846114237SnjlReworked the compiler options to make them more consistent and to 1847114237Snjluse two-letter options where appropriate. We were running out of 1848114237Snjlsensible letters. This may break some makefiles, so check the 1849114237Snjlcurrent options list by invoking the compiler with no parameters. 1850102550Siwasaki 1851102550SiwasakiCompleted the design and implementation of the ASL namepath 1852114237Snjloptimization option for the compiler. This option optimizes all 1853114237Snjlreferences to named objects to the shortest possible path. The 1854114237Snjlfirst attempt tries to utilize a single nameseg (4 characters) 1855126372Snjland 1856126372Snjlthe "search-to-root" algorithm used by the interpreter. If that 1857126372Snjlcannot be used (because either the name is not in the search path 1858126372Snjlor there is a conflict with another object with the same name), 1859126372Snjlthe pathname is optimized using the carat prefix (usually a 1860126372Snjlshorter string than specifying the entire path from the root.) 1861102550Siwasaki 1862114237SnjlImplemented support to obtain the DSDT from the Windows registry 1863114237Snjl(when the disassembly option is specified with no input file). 1864114237SnjlAdded this code as the implementation for AcpiOsTableOverride in 1865114237Snjlthe Windows OSL. Migrated the 16-bit code (used in the AcpiDump 1866114237Snjlutility) to scan memory for the DSDT to the AcpiOsTableOverride 1867114237Snjlfunction in the DOS OSL to make the disassembler truly OS 1868114237Snjlindependent. 1869102550Siwasaki 1870114237SnjlImplemented a new option to disassemble and compile in one step. 1871114237SnjlWhen used without an input filename, this option will grab the 1872114237SnjlDSDT from the local machine, disassemble it, and compile it in 1873126372Snjlone 1874126372Snjlstep. 1875102550Siwasaki 1876114237SnjlAdded a warning message for invalid escapes (a backslash followed 1877114237Snjlby any character other than the allowable escapes). This catches 1878114237Snjlthe quoted string error "\_SB_" (which should be "\\_SB_" ). 1879114237SnjlAlso, there are numerous instances in the ACPI specification 1880126372Snjlwhere 1881126372Snjlthis error occurs. 1882102550Siwasaki 1883104470SiwasakiAdded a compiler option to disable all optimizations. This is 1884114237Snjlbasically the "compatibility mode" because by using this option, 1885114237Snjlthe AML code will come out exactly the same as other ASL 1886114237Snjlcompilers. 1887102550Siwasaki 1888114237SnjlAdded error messages for incorrectly ordered dependent resource 1889114237Snjlfunctions. This includes: missing EndDependentFn macro at end of 1890114237Snjldependent resource list, nested dependent function macros (both 1891114237Snjlstart and end), and missing StartDependentFn macro. These are 1892114237Snjlcommon errors that should be caught at compile time. 1893102550Siwasaki 1894114237SnjlImplemented _OSI support for the disassembler and compiler. _OSI 1895114237Snjlmust be included in the namespace for proper disassembly (because 1896114237Snjlthe disassembler must know the number of arguments.) 1897102550Siwasaki 1898104470SiwasakiAdded an "optimization" message type that is optional (off by 1899114237Snjldefault). This message is used for all optimizations - including 1900114237Snjlconstant folding, integer optimization, and namepath 1901104470Siwasakioptimization. 1902102550Siwasaki 1903102550Siwasaki---------------------------------------- 1904102550Siwasaki25 July 2002. Summary of changes for this release. 1905102550Siwasaki 1906102550Siwasaki 1907102550Siwasaki1) ACPI CA Core Subsystem Version 20020725: 1908102550Siwasaki 1909114237SnjlThe AML Disassembler has been enhanced to produce compilable ASL 1910114237Snjlcode and has been integrated into the iASL compiler (see below) 1911126372Snjlas 1912126372Snjlwell as the single-step disassembly for the AML debugger and the 1913126372Snjldisassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 1914126372Snjlresource templates and macros are fully supported. The 1915114237Snjldisassembler has been tested on over 30 different AML files, 1916114237Snjlproducing identical AML when the resulting disassembled ASL file 1917114237Snjlis recompiled with the same ASL compiler. 1918102550Siwasaki 1919114237SnjlModified the Resource Manager to allow zero interrupts and zero 1920114237Snjldma channels during the GetCurrentResources call. This was 1921114237Snjlcausing problems on some platforms. 1922102550Siwasaki 1923114237SnjlAdded the AcpiOsRedirectOutput interface to the OSL to simplify 1924114237Snjloutput redirection for the AcpiOsPrintf and AcpiOsVprintf 1925114237Snjlinterfaces. 1926102550Siwasaki 1927102550SiwasakiCode and Data Size: Current core subsystem library sizes are 1928126372Snjlshown 1929126372Snjlbelow. These are the code and data sizes for the acpica.lib 1930126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 1931126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 1932126372Snjlversion of the code includes the debug output trace mechanism and 1933126372Snjlhas a larger code and data size. Note that these values will 1934126372Snjlvary 1935126372Snjldepending on the efficiency of the compiler and the compiler 1936126372Snjloptions used during generation. 1937102550Siwasaki 1938102550Siwasaki Previous Release 1939104470Siwasaki Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 1940104470Siwasaki Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 1941102550Siwasaki Current Release: 1942104470Siwasaki Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 1943104470Siwasaki Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 1944102550Siwasaki 1945102550Siwasaki 1946102550Siwasaki2) Linux 1947102550Siwasaki 1948102550SiwasakiFixed a panic in the EC driver (Dominik Brodowski) 1949102550Siwasaki 1950114237SnjlImplemented checksum of the R/XSDT itself during Linux table scan 1951114237Snjl(Richard Schaal) 1952102550Siwasaki 1953102550Siwasaki 1954102550Siwasaki3) iASL compiler 1955102550Siwasaki 1956114237SnjlThe AML disassembler is integrated into the compiler. The "-d" 1957114237Snjloption invokes the disassembler to completely disassemble an 1958114237Snjlinput AML file, producing as output a text ASL file with the 1959114237Snjlextension ".dsl" (to avoid name collisions with existing .asl 1960114237Snjlsource files.) A future enhancement will allow the disassembler 1961114237Snjlto obtain the BIOS DSDT from the registry under Windows. 1962102550Siwasaki 1963102550SiwasakiFixed a problem with the VendorShort and VendorLong resource 1964102550Siwasakidescriptors where an invalid AML sequence was created. 1965102550Siwasaki 1966114237SnjlImplemented a fix for BufferData term in the ASL parser. It was 1967114237Snjlinadvertently defined twice, allowing invalid syntax to pass and 1968114237Snjlcausing reduction conflicts. 1969102550Siwasaki 1970104470SiwasakiFixed a problem where the Ones opcode could get converted to a 1971104470Siwasakivalue of zero if "Ones" was used where a byte, word or dword 1972126372Snjlvalue 1973126372Snjlwas expected. The 64-bit value is now truncated to the correct 1974126372Snjlsize with the correct value. 1975102550Siwasaki 1976102550Siwasaki 1977102550Siwasaki---------------------------------------- 1978102550Siwasaki02 July 2002. Summary of changes for this release. 1979102550Siwasaki 1980102550Siwasaki 1981102550Siwasaki1) ACPI CA Core Subsystem Version 20020702: 1982102550Siwasaki 1983114237SnjlThe Table Manager code has been restructured to add several new 1984114237Snjlfeatures. Tables that are not required by the core subsystem 1985114237Snjl(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 1986114237Snjlvalidated in any way and are returned from AcpiGetFirmwareTable 1987126372Snjlif 1988126372Snjlrequested. The AcpiOsTableOverride interface is now called for 1989126372Snjleach table that is loaded by the subsystem in order to allow the 1990126372Snjlhost to override any table it chooses. Previously, only the DSDT 1991126372Snjlcould be overridden. Added one new files, tbrsdt.c and 1992114237Snjltbgetall.c. 1993102550Siwasaki 1994114237SnjlFixed a problem with the conversion of internal package objects 1995126372Snjlto 1996126372Snjlexternal objects (when a package is returned from a control 1997114237Snjlmethod.) The return buffer length was set to zero instead of the 1998114237Snjlproper length of the package object. 1999102550Siwasaki 2000104470SiwasakiFixed a reported problem with the use of the RefOf and DeRefOf 2001114237Snjloperators when passing reference arguments to control methods. A 2002114237Snjlnew type of Reference object is used internally for references 2003114237Snjlproduced by the RefOf operator. 2004102550Siwasaki 2005102550SiwasakiAdded additional error messages in the Resource Manager to 2006126372Snjlexplain 2007126372SnjlAE_BAD_DATA errors when they occur during resource parsing. 2008102550Siwasaki 2009104470SiwasakiSplit the AcpiEnableSubsystem into two primitives to enable a 2010104470Siwasakifiner granularity initialization sequence. These two calls 2011126372Snjlshould 2012126372Snjlbe called in this order: AcpiEnableSubsystem (flags), 2013114237SnjlAcpiInitializeObjects (flags). The flags parameter remains the 2014114237Snjlsame. 2015102550Siwasaki 2016102550Siwasaki 2017102550Siwasaki2) Linux 2018102550Siwasaki 2019114237SnjlUpdated the ACPI utilities module to understand the new style of 2020114237Snjlfully resolved package objects that are now returned from the 2021126372Snjlcore 2022126372Snjlsubsystem. This eliminates errors of the form: 2023102550Siwasaki 2024102550Siwasaki ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 2025102550Siwasaki acpi_utils-0430 [145] acpi_evaluate_reference: 2026102550Siwasaki Invalid element in package (not a device reference) 2027102550Siwasaki 2028102550SiwasakiThe method evaluation utility uses the new buffer allocation 2029102550Siwasakischeme instead of calling AcpiEvaluate Object twice. 2030102550Siwasaki 2031102550SiwasakiAdded support for ECDT. This allows the use of the Embedded 2032114237SnjlController before the namespace has been fully initialized, which 2033114237Snjlis necessary for ACPI 2.0 support, and for some laptops to 2034114237Snjlinitialize properly. (Laptops using ECDT are still rare, so only 2035114237Snjllimited testing was performed of the added functionality.) 2036102550Siwasaki 2037102550SiwasakiFixed memory leaks in the EC driver. 2038102550Siwasaki 2039102550SiwasakiEliminated a brittle code structure in acpi_bus_init(). 2040102550Siwasaki 2041114237SnjlEliminated the acpi_evaluate() helper function in utils.c. It is 2042114237Snjlno longer needed since acpi_evaluate_object can optionally 2043104470Siwasakiallocate memory for the return object. 2044102550Siwasaki 2045114237SnjlImplemented fix for keyboard hang when getting battery readings 2046126372Snjlon 2047126372Snjlsome systems (Stephen White) 2048102550Siwasaki 2049102550SiwasakiPCI IRQ routing update (Dominik Brodowski) 2050102550Siwasaki 2051114237SnjlFix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 2052114237Snjlsupport 2053102550Siwasaki 2054102550Siwasaki---------------------------------------- 2055102550Siwasaki11 June 2002. Summary of changes for this release. 2056102550Siwasaki 2057102550Siwasaki 2058102550Siwasaki1) ACPI CA Core Subsystem Version 20020611: 2059102550Siwasaki 2060104470SiwasakiFixed a reported problem where constants such as Zero and One 2061114237Snjlappearing within _PRT packages were not handled correctly within 2062114237Snjlthe resource manager code. Originally reported against the ASL 2063114237Snjlcompiler because the code generator now optimizes integers to 2064114237Snjltheir minimal AML representation (i.e. AML constants if 2065126372Snjlpossible.) 2066126372SnjlThe _PRT code now handles all AML constant opcodes correctly 2067126372Snjl(Zero, One, Ones, Revision). 2068102550Siwasaki 2069102550SiwasakiFixed a problem with the Concatenate operator in the AML 2070114237Snjlinterpreter where a buffer result object was incorrectly marked 2071126372Snjlas 2072126372Snjlnot fully evaluated, causing a run-time error of AE_AML_INTERNAL. 2073102550Siwasaki 2074104470SiwasakiAll package sub-objects are now fully resolved before they are 2075114237Snjlreturned from the external ACPI interfaces. This means that name 2076114237Snjlstrings are resolved to object handles, and constant operators 2077114237Snjl(Zero, One, Ones, Revision) are resolved to Integers. 2078102550Siwasaki 2079102550SiwasakiImplemented immediate resolution of the AML Constant opcodes 2080104470Siwasaki(Zero, One, Ones, Revision) to Integer objects upon detection 2081104470Siwasakiwithin the AML stream. This has simplified and reduced the 2082104470Siwasakigenerated code size of the subsystem by eliminating about 10 2083104470Siwasakiswitch statements for these constants (which previously were 2084104470Siwasakicontained in Reference objects.) The complicating issues are 2085126372Snjlthat 2086126372Snjlthe Zero opcode is used as a "placeholder" for unspecified 2087114237Snjloptional target operands and stores to constants are defined to 2088126372Snjlbe 2089126372Snjlno-ops. 2090102550Siwasaki 2091102550SiwasakiCode and Data Size: Current core subsystem library sizes are 2092126372Snjlshown 2093126372Snjlbelow. These are the code and data sizes for the acpica.lib 2094114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 2095114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 2096114237Snjlversion of the code includes the debug output trace mechanism and 2097114237Snjlhas a larger code and data size. Note that these values will 2098126372Snjlvary 2099126372Snjldepending on the efficiency of the compiler and the compiler 2100114237Snjloptions used during generation. 2101102550Siwasaki 2102102550Siwasaki Previous Release 2103104470Siwasaki Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 2104104470Siwasaki Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 2105102550Siwasaki Current Release: 2106104470Siwasaki Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 2107104470Siwasaki Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 2108102550Siwasaki 2109102550Siwasaki 2110102550Siwasaki2) Linux 2111102550Siwasaki 2112104470SiwasakiAdded preliminary support for obtaining _TRA data for PCI root 2113104470Siwasakibridges (Bjorn Helgaas). 2114102550Siwasaki 2115102550Siwasaki 2116102550Siwasaki3) iASL Compiler Version X2046: 2117102550Siwasaki 2118114237SnjlFixed a problem where the "_DDN" reserved name was defined to be 2119126372Snjla 2120126372Snjlcontrol method with one argument. There are no arguments, and 2121114237Snjl_DDN does not have to be a control method. 2122102550Siwasaki 2123114237SnjlFixed a problem with the Linux version of the compiler where the 2124114237Snjlsource lines printed with error messages were the wrong lines. 2125114237SnjlThis turned out to be the "LF versus CR/LF" difference between 2126114237SnjlWindows and Unix. This appears to be the longstanding issue 2127114237Snjlconcerning listing output and error messages. 2128102550Siwasaki 2129114237SnjlFixed a problem with the Linux version of compiler where opcode 2130114237Snjlnames within error messages were wrong. This was caused by a 2131114237Snjlslight difference in the output of the Flex tool on Linux versus 2132114237SnjlWindows. 2133102550Siwasaki 2134102550SiwasakiFixed a problem with the Linux compiler where the hex output 2135126372Snjlfiles 2136126372Snjlcontained some garbage data caused by an internal buffer overrun. 2137102550Siwasaki 2138102550Siwasaki 2139102550Siwasaki---------------------------------------- 2140102550Siwasaki17 May 2002. Summary of changes for this release. 2141102550Siwasaki 2142102550Siwasaki 2143102550Siwasaki1) ACPI CA Core Subsystem Version 20020517: 2144102550Siwasaki 2145102550SiwasakiImplemented a workaround to an BIOS bug discovered on the HP 2146104470SiwasakiOmniBook where the FADT revision number and the table size are 2147104470Siwasakiinconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The 2148126372Snjlnew 2149126372Snjlbehavior is to fallback to using only the ACPI 1.0 fields of the 2150126372SnjlFADT if the table is too small to be a ACPI 2.0 table as claimed 2151126372Snjlby the revision number. Although this is a BIOS bug, this is a 2152126372Snjlcase where the workaround is simple enough and with no side 2153126372Snjleffects, so it seemed prudent to add it. A warning message is 2154126372Snjlissued, however. 2155102550Siwasaki 2156114237SnjlImplemented minimum size checks for the fixed-length ACPI tables 2157126372Snjl- 2158126372Snjl- the FADT and FACS, as well as consistency checks between the 2159114237Snjlrevision number and the table size. 2160102550Siwasaki 2161114237SnjlFixed a reported problem in the table override support where the 2162114237Snjlnew table pointer was incorrectly treated as a physical address 2163114237Snjlinstead of a logical address. 2164102550Siwasaki 2165114237SnjlEliminated the use of the AE_AML_ERROR exception and replaced it 2166114237Snjlwith more descriptive codes. 2167102550Siwasaki 2168104470SiwasakiFixed a problem where an exception would occur if an ASL Field 2169126372Snjlwas 2170126372Snjldefined with no named Field Units underneath it (used by some 2171114237Snjlindex fields). 2172102550Siwasaki 2173102550SiwasakiCode and Data Size: Current core subsystem library sizes are 2174126372Snjlshown 2175126372Snjlbelow. These are the code and data sizes for the acpica.lib 2176126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 2177126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 2178126372Snjlversion of the code includes the debug output trace mechanism and 2179126372Snjlhas a larger code and data size. Note that these values will 2180126372Snjlvary 2181126372Snjldepending on the efficiency of the compiler and the compiler 2182126372Snjloptions used during generation. 2183102550Siwasaki 2184102550Siwasaki Previous Release 2185104470Siwasaki Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 2186104470Siwasaki Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 2187102550Siwasaki Current Release: 2188104470Siwasaki Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 2189104470Siwasaki Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 2190102550Siwasaki 2191102550Siwasaki 2192102550Siwasaki 2193102550Siwasaki2) Linux 2194102550Siwasaki 2195114237SnjlMuch work done on ACPI init (MADT and PCI IRQ routing support). 2196114237Snjl(Paul D. and Dominik Brodowski) 2197102550Siwasaki 2198102550SiwasakiFix PCI IRQ-related panic on boot (Sam Revitch) 2199102550Siwasaki 2200102550SiwasakiSet BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 2201102550Siwasaki 2202102550SiwasakiFix "MHz" typo (Dominik Brodowski) 2203102550Siwasaki 2204102550SiwasakiFix RTC year 2000 issue (Dominik Brodowski) 2205102550Siwasaki 2206102550SiwasakiPreclude multiple button proc entries (Eric Brunet) 2207102550Siwasaki 2208102550SiwasakiMoved arch-specific code out of include/platform/aclinux.h 2209102550Siwasaki 2210102550Siwasaki3) iASL Compiler Version X2044: 2211102550Siwasaki 2212102550SiwasakiImplemented error checking for the string used in the EISAID 2213126372Snjlmacro 2214126372Snjl(Usually used in the definition of the _HID object.) The code 2215126372Snjlnow 2216126372Snjlstrictly enforces the PnP format - exactly 7 characters, 3 2217126372Snjluppercase letters and 4 hex digits. 2218102550Siwasaki 2219102550SiwasakiIf a raw string is used in the definition of the _HID object 2220102550Siwasaki(instead of the EISAID macro), the string must contain all 2221114237Snjlalphanumeric characters (e.g., "*PNP0011" is not allowed because 2222114237Snjlof the asterisk.) 2223102550Siwasaki 2224114237SnjlImplemented checking for invalid use of ACPI reserved names for 2225114237Snjlmost of the name creation operators (Name, Device, Event, Mutex, 2226114237SnjlOperationRegion, PowerResource, Processor, and ThermalZone.) 2227114237SnjlPreviously, this check was only performed for control methods. 2228102550Siwasaki 2229114237SnjlImplemented an additional check on the Name operator to emit an 2230114237Snjlerror if a reserved name that must be implemented in ASL as a 2231114237Snjlcontrol method is used. We know that a reserved name must be a 2232114237Snjlmethod if it is defined with input arguments. 2233102550Siwasaki 2234102550SiwasakiThe warning emitted when a namespace object reference is not 2235126372Snjlfound 2236126372Snjlduring the cross reference phase has been changed into an error. 2237126372SnjlThe "External" directive should be used for names defined in 2238126372Snjlother 2239126372Snjlmodules. 2240102550Siwasaki 2241102550Siwasaki 2242102550Siwasaki4) Tools and Utilities 2243102550Siwasaki 2244114237SnjlThe 16-bit tools (adump16 and aexec16) have been regenerated and 2245114237Snjltested. 2246102550Siwasaki 2247102550SiwasakiFixed a problem with the output of both acpidump and adump16 2248126372Snjlwhere 2249126372Snjlthe indentation of closing parentheses and brackets was not 2250114237Snjlaligned properly with the parent block. 2251102550Siwasaki 2252102550Siwasaki 2253102550Siwasaki---------------------------------------- 2254102550Siwasaki03 May 2002. Summary of changes for this release. 2255102550Siwasaki 2256102550Siwasaki 2257102550Siwasaki1) ACPI CA Core Subsystem Version 20020503: 2258102550Siwasaki 2259114237SnjlAdded support a new OSL interface that allows the host operating 2260114237Snjlsystem software to override the DSDT found in the firmware - 2261114237SnjlAcpiOsTableOverride. With this interface, the OSL can examine 2262126372Snjlthe 2263126372Snjlversion of the firmware DSDT and replace it with a different one 2264126372Snjlif desired. 2265102550Siwasaki 2266114237SnjlAdded new external interfaces for accessing ACPI registers from 2267114237Snjldevice drivers and other system software - AcpiGetRegister and 2268114237SnjlAcpiSetRegister. This was simply an externalization of the 2269114237Snjlexisting AcpiHwBitRegister interfaces. 2270102550Siwasaki 2271104470SiwasakiFixed a regression introduced in the previous build where the 2272104470SiwasakiASL/AML CreateField operator always returned an error, 2273102550Siwasaki"destination must be a NS Node". 2274102550Siwasaki 2275114237SnjlExtended the maximum time (before failure) to successfully enable 2276114237SnjlACPI mode to 3 seconds. 2277102550Siwasaki 2278102550SiwasakiCode and Data Size: Current core subsystem library sizes are 2279126372Snjlshown 2280126372Snjlbelow. These are the code and data sizes for the acpica.lib 2281126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 2282126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 2283126372Snjlversion of the code includes the debug output trace mechanism and 2284126372Snjlhas a larger code and data size. Note that these values will 2285126372Snjlvary 2286126372Snjldepending on the efficiency of the compiler and the compiler 2287126372Snjloptions used during generation. 2288102550Siwasaki 2289102550Siwasaki Previous Release 2290104470Siwasaki Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 2291104470Siwasaki Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 2292102550Siwasaki Current Release: 2293104470Siwasaki Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 2294104470Siwasaki Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 2295102550Siwasaki 2296102550Siwasaki 2297102550Siwasaki2) Linux 2298102550Siwasaki 2299104470SiwasakiEnhanced ACPI init code for SMP. We are now fully MPS and $PIR- 2300104470Siwasakifree. While 3 out of 4 of our in-house systems work fine, the 2301126372Snjllast 2302126372Snjlone still hangs when testing the LAPIC timer. 2303102550Siwasaki 2304114237SnjlRenamed many files in 2.5 kernel release to omit "acpi_" from the 2305114237Snjlname. 2306102550Siwasaki 2307102550SiwasakiAdded warning on boot for Presario 711FR. 2308102550Siwasaki 2309102550SiwasakiSleep improvements (Pavel Machek) 2310102550Siwasaki 2311102550SiwasakiACPI can now be built without CONFIG_PCI enabled. 2312102550Siwasaki 2313102550SiwasakiIA64: Fixed memory map functions (JI Lee) 2314102550Siwasaki 2315102550Siwasaki 2316102550Siwasaki3) iASL Compiler Version X2043: 2317102550Siwasaki 2318114237SnjlAdded support to allow the compiler to be integrated into the MS 2319114237SnjlVC++ development environment for one-button compilation of single 2320114237Snjlfiles or entire projects -- with error-to-source-line mapping. 2321102550Siwasaki 2322104470SiwasakiImplemented support for compile-time constant folding for the 2323104470SiwasakiType3, Type4, and Type5 opcodes first defined in the ACPI 2.0 2324104470Siwasakispecification. This allows the ASL writer to use expressions 2325104470Siwasakiinstead of Integer/Buffer/String constants in terms that must 2326114237Snjlevaluate to constants at compile time and will also simplify the 2327114237Snjlemitted AML in any such sub-expressions that can be folded 2328104470Siwasaki(evaluated at compile-time.) This increases the size of the 2329104470Siwasakicompiler significantly because a portion of the ACPI CA AML 2330104470Siwasakiinterpreter is included within the compiler in order to pre- 2331104470Siwasakievaluate constant expressions. 2332102550Siwasaki 2333114237Snjl 2334102550SiwasakiFixed a problem with the "Unicode" ASL macro that caused the 2335114237Snjlcompiler to fault. (This macro is used in conjunction with the 2336114237Snjl_STR reserved name.) 2337102550Siwasaki 2338114237SnjlImplemented an AML opcode optimization to use the Zero, One, and 2339114237SnjlOnes opcodes where possible to further reduce the size of integer 2340114237Snjlconstants and thus reduce the overall size of the generated AML 2341114237Snjlcode. 2342102550Siwasaki 2343102550SiwasakiImplemented error checking for new reserved terms for ACPI 2344126372Snjlversion 2345126372Snjl2.0A. 2346102550Siwasaki 2347104470SiwasakiImplemented the -qr option to display the current list of ACPI 2348104470Siwasakireserved names known to the compiler. 2349102550Siwasaki 2350104470SiwasakiImplemented the -qc option to display the current list of ASL 2351104470Siwasakioperators that are allowed within constant expressions and can 2352104470Siwasakitherefore be folded at compile time if the operands are 2353104470Siwasakiconstants. 2354102550Siwasaki 2355102550Siwasaki 2356102550Siwasaki4) Documentation 2357102550Siwasaki 2358102550SiwasakiUpdated the Programmer's Reference for new interfaces, data 2359126372Snjltypes, 2360126372Snjland memory allocation model options. 2361102550Siwasaki 2362114237SnjlUpdated the iASL Compiler User Reference to apply new format and 2363114237Snjladd information about new features and options. 2364102550Siwasaki 2365102550Siwasaki---------------------------------------- 2366102550Siwasaki19 April 2002. Summary of changes for this release. 2367102550Siwasaki 2368102550Siwasaki1) ACPI CA Core Subsystem Version 20020419: 2369102550Siwasaki 2370114237SnjlThe source code base for the Core Subsystem has been completely 2371114237Snjlcleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 2372114237Snjlversions. The Lint option files used are included in the 2373114237Snjl/acpi/generate/lint directory. 2374102550Siwasaki 2375102550SiwasakiImplemented enhanced status/error checking across the entire 2376114237SnjlHardware manager subsystem. Any hardware errors (reported from 2377114237Snjlthe OSL) are now bubbled up and will abort a running control 2378114237Snjlmethod. 2379102550Siwasaki 2380114237SnjlFixed a problem where the per-ACPI-table integer width (32 or 64) 2381114237Snjlwas stored only with control method nodes, causing a fault when 2382114237Snjlnon-control method code was executed during table loading. The 2383114237Snjlsolution implemented uses a global variable to indicate table 2384114237Snjlwidth across the entire ACPI subsystem. Therefore, ACPI CA does 2385114237Snjlnot support mixed integer widths across different ACPI tables 2386114237Snjl(DSDT, SSDT). 2387102550Siwasaki 2388114237SnjlFixed a problem where NULL extended fields (X fields) in an ACPI 2389114237Snjl2.0 ACPI FADT caused the table load to fail. Although the 2390114237Snjlexisting ACPI specification is a bit fuzzy on this topic, the new 2391114237Snjlbehavior is to fall back on a ACPI 1.0 field if the corresponding 2392114237SnjlACPI 2.0 X field is zero (even though the table revision 2393126372Snjlindicates 2394126372Snjla full ACPI 2.0 table.) The ACPI specification will be updated 2395126372Snjlto 2396126372Snjlclarify this issue. 2397102550Siwasaki 2398104470SiwasakiFixed a problem with the SystemMemory operation region handler 2399104470Siwasakiwhere memory was always accessed byte-wise even if the AML- 2400104470Siwasakispecified access width was larger than a byte. This caused 2401104470Siwasakiproblems on systems with memory-mapped I/O. Memory is now 2402104470Siwasakiaccessed with the width specified. On systems that do not 2403126372Snjlsupport 2404126372Snjlnon-aligned transfers, a check is made to guarantee proper 2405126372Snjladdress 2406126372Snjlalignment before proceeding in order to avoid an AML-caused 2407126372Snjlalignment fault within the kernel. 2408102550Siwasaki 2409102550Siwasaki 2410114237SnjlFixed a problem with the ExtendedIrq resource where only one byte 2411114237Snjlof the 4-byte Irq field was extracted. 2412102550Siwasaki 2413114237SnjlFixed the AcpiExDigitsNeeded() procedure to support _UID. This 2414114237Snjlfunction was out of date and required a rewrite. 2415114237Snjl 2416102550SiwasakiCode and Data Size: Current core subsystem library sizes are 2417126372Snjlshown 2418126372Snjlbelow. These are the code and data sizes for the acpica.lib 2419126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 2420126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 2421126372Snjlversion of the code includes the debug output trace mechanism and 2422126372Snjlhas a larger code and data size. Note that these values will 2423126372Snjlvary 2424126372Snjldepending on the efficiency of the compiler and the compiler 2425126372Snjloptions used during generation. 2426102550Siwasaki 2427102550Siwasaki Previous Release 2428104470Siwasaki Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 2429104470Siwasaki Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 2430102550Siwasaki Current Release: 2431104470Siwasaki Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 2432104470Siwasaki Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 2433102550Siwasaki 2434102550Siwasaki 2435102550Siwasaki2) Linux 2436102550Siwasaki 2437102550SiwasakiPCI IRQ routing fixes (Dominik Brodowski) 2438102550Siwasaki 2439102550Siwasaki 2440102550Siwasaki3) iASL Compiler Version X2042: 2441102550Siwasaki 2442104470SiwasakiImplemented an additional compile-time error check for a field 2443104470Siwasakiunit whose size + minimum access width would cause a run-time 2444114237Snjlaccess beyond the end-of-region. Previously, only the field size 2445114237Snjlitself was checked. 2446102550Siwasaki 2447104470SiwasakiThe Core subsystem and iASL compiler now share a common parse 2448104470Siwasakiobject in preparation for compile-time evaluation of the type 2449104470Siwasaki3/4/5 ASL operators. 2450102550Siwasaki 2451102550Siwasaki 2452102550Siwasaki---------------------------------------- 2453102550SiwasakiSummary of changes for this release: 03_29_02 2454102550Siwasaki 2455102550Siwasaki1) ACPI CA Core Subsystem Version 20020329: 2456102550Siwasaki 2457104470SiwasakiImplemented support for late evaluation of TermArg operands to 2458114237SnjlBuffer and Package objects. This allows complex expressions to 2459126372Snjlbe 2460126372Snjlused in the declarations of these object types. 2461102550Siwasaki 2462104470SiwasakiFixed an ACPI 1.0 compatibility issue when reading Fields. In 2463126372SnjlACPI 2464126372Snjl1.0, if the field was larger than 32 bits, it was returned as a 2465126372Snjlbuffer - otherwise it was returned as an integer. In ACPI 2.0, 2466126372Snjlthe field is returned as a buffer only if the field is larger 2467126372Snjlthan 2468126372Snjl64 bits. The TableRevision is now considered when making this 2469126372Snjlconversion to avoid incompatibility with existing ASL code. 2470102550Siwasaki 2471104470SiwasakiImplemented logical addressing for AcpiOsGetRootPointer. This 2472114237Snjlallows an RSDP with either a logical or physical address. With 2473114237Snjlthis support, the host OS can now override all ACPI tables with 2474114237Snjlone logical RSDP. Includes implementation of "typed" pointer 2475114237Snjlsupport to allow a common data type for both physical and logical 2476114237Snjlpointers internally. This required a change to the 2477114237SnjlAcpiOsGetRootPointer interface. 2478102550Siwasaki 2479104470SiwasakiImplemented the use of ACPI 2.0 Generic Address Structures for 2480126372Snjlall 2481126372SnjlGPE, Fixed Event, and PM Timer I/O. This allows the use of 2482126372Snjlmemory 2483126372Snjlmapped I/O for these ACPI features. 2484102550Siwasaki 2485102550SiwasakiInitialization now ignores not only non-required tables (All 2486114237Snjltables other than the FADT, FACS, DSDT, and SSDTs), but also does 2487114237Snjlnot validate the table headers of unrecognized tables. 2488102550Siwasaki 2489102550SiwasakiFixed a problem where a notify handler could only be 2490102550Siwasakiinstalled/removed on an object of type Device. All "notify" 2491102550Siwasakiobjects are now supported -- Devices, Processor, Power, and 2492102550SiwasakiThermal. 2493102550Siwasaki 2494114237SnjlRemoved most verbosity from the ACPI_DB_INFO debug level. Only 2495114237Snjlcritical information is returned when this debug level is 2496104470Siwasakienabled. 2497102550Siwasaki 2498102550SiwasakiCode and Data Size: Current core subsystem library sizes are 2499126372Snjlshown 2500126372Snjlbelow. These are the code and data sizes for the acpica.lib 2501126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 2502126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 2503126372Snjlversion of the code includes the debug output trace mechanism and 2504126372Snjlhas a larger code and data size. Note that these values will 2505126372Snjlvary 2506126372Snjldepending on the efficiency of the compiler and the compiler 2507126372Snjloptions used during generation. 2508102550Siwasaki 2509102550Siwasaki Previous Release 2510104470Siwasaki Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 2511104470Siwasaki Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 2512102550Siwasaki Current Release: 2513104470Siwasaki Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 2514104470Siwasaki Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 2515102550Siwasaki 2516102550Siwasaki 2517102550Siwasaki2) Linux: 2518102550Siwasaki 2519114237SnjlThe processor driver (acpi_processor.c) now fully supports ACPI 2520114237Snjl2.0-based processor performance control (e.g. Intel(R) 2521114237SnjlSpeedStep(TM) technology) Note that older laptops that only have 2522114237Snjlthe Intel "applet" interface are not supported through this. The 2523114237Snjl'limit' and 'performance' interface (/proc) are fully functional. 2524114237Snjl[Note that basic policy for controlling performance state 2525114237Snjltransitions will be included in the next version of ospmd.] The 2526114237Snjlidle handler was modified to more aggressively use C2, and PIIX4 2527114237Snjlerrata handling underwent a complete overhaul (big thanks to 2528114237SnjlDominik Brodowski). 2529102550Siwasaki 2530114237SnjlAdded support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 2531114237Snjlbased devices in the ACPI namespace are now dynamically bound 2532114237Snjl(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 2533114237SnjlThis allows, among other things, ACPI to resolve bus numbers for 2534114237Snjlsubordinate PCI bridges. 2535102550Siwasaki 2536104470SiwasakiEnhanced PCI IRQ routing to get the proper bus number for _PRT 2537104470Siwasakientries defined underneath PCI bridges. 2538102550Siwasaki 2539104470SiwasakiAdded IBM 600E to bad bios list due to invalid _ADR value for 2540104470SiwasakiPIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 2541102550Siwasaki 2542114237SnjlIn the process of adding full MADT support (e.g. IOAPIC) for IA32 2543114237Snjl(acpi.c, mpparse.c) -- stay tuned. 2544102550Siwasaki 2545102550SiwasakiAdded back visual differentiation between fixed-feature and 2546114237Snjlcontrol-method buttons in dmesg. Buttons are also subtyped (e.g. 2547114237Snjlbutton/power/PWRF) to simplify button identification. 2548102550Siwasaki 2549114237SnjlWe no longer use -Wno-unused when compiling debug. Please ignore 2550114237Snjlany "_THIS_MODULE defined but not used" messages. 2551102550Siwasaki 2552102550SiwasakiCan now shut down the system using "magic sysrq" key. 2553102550Siwasaki 2554102550Siwasaki 2555102550Siwasaki3) iASL Compiler version 2041: 2556102550Siwasaki 2557104470SiwasakiFixed a problem where conversion errors for hex/octal/decimal 2558104470Siwasakiconstants were not reported. 2559102550Siwasaki 2560102550SiwasakiImplemented a fix for the General Register template Address 2561126372Snjlfield. 2562126372SnjlThis field was 8 bits when it should be 64. 2563102550Siwasaki 2564102550SiwasakiFixed a problem where errors/warnings were no longer being 2565126372Snjlemitted 2566126372Snjlwithin the listing output file. 2567102550Siwasaki 2568114237SnjlImplemented the ACPI 2.0A restriction on ACPI Table Signatures to 2569114237Snjlexactly 4 characters, alphanumeric only. 2570102550Siwasaki 2571102550Siwasaki 2572102550Siwasaki 2573102550Siwasaki 2574102550Siwasaki---------------------------------------- 2575102550SiwasakiSummary of changes for this release: 03_08_02 2576102550Siwasaki 2577102550Siwasaki 2578102550Siwasaki1) ACPI CA Core Subsystem Version 20020308: 2579102550Siwasaki 2580114237SnjlFixed a problem with AML Fields where the use of the "AccessAny" 2581114237Snjlkeyword could cause an interpreter error due to attempting to 2582126372Snjlread 2583126372Snjlor write beyond the end of the parent Operation Region. 2584102550Siwasaki 2585102550SiwasakiFixed a problem in the SystemMemory Operation Region handler 2586126372Snjlwhere 2587126372Snjlan attempt was made to map memory beyond the end of the region. 2588126372SnjlThis was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 2589126372Snjlerrors on some Linux systems. 2590102550Siwasaki 2591114237SnjlFixed a problem where the interpreter/namespace "search to root" 2592114237Snjlalgorithm was not functioning for some object types. Relaxed the 2593114237Snjlinternal restriction on the search to allow upsearches for all 2594114237Snjlexternal object types as well as most internal types. 2595102550Siwasaki 2596102550Siwasaki 2597102550Siwasaki2) Linux: 2598102550Siwasaki 2599104470SiwasakiWe now use safe_halt() macro versus individual calls to sti | 2600104470Siwasakihlt. 2601102550Siwasaki 2602114237SnjlWriting to the processor limit interface should now work. "echo 2603126372Snjl1" 2604126372Snjlwill increase the limit, 2 will decrease, and 0 will reset to the 2605126372Snjldefault. 2606102550Siwasaki 2607102550Siwasaki 2608102550Siwasaki3) ASL compiler: 2609102550Siwasaki 2610102550SiwasakiFixed segfault on Linux version. 2611102550Siwasaki 2612102550Siwasaki 2613102550Siwasaki---------------------------------------- 2614102550SiwasakiSummary of changes for this release: 02_25_02 2615102550Siwasaki 2616102550Siwasaki1) ACPI CA Core Subsystem: 2617102550Siwasaki 2618102550Siwasaki 2619102550SiwasakiFixed a problem where the GPE bit masks were not initialized 2620102550Siwasakiproperly, causing erratic GPE behavior. 2621102550Siwasaki 2622104470SiwasakiImplemented limited support for multiple calling conventions. 2623126372SnjlThe 2624126372Snjlcode can be generated with either the VPL (variable parameter 2625114237Snjllist, or "C") convention, or the FPL (fixed parameter list, or 2626114237Snjl"Pascal") convention. The core subsystem is about 3.4% smaller 2627114237Snjlwhen generated with FPL. 2628102550Siwasaki 2629102550Siwasaki 2630102550Siwasaki2) Linux 2631102550Siwasaki 2632114237SnjlRe-add some /proc/acpi/event functionality that was lost during 2633114237Snjlthe rewrite 2634102550Siwasaki 2635102550SiwasakiResolved issue with /proc events for fixed-feature buttons 2636126372Snjlshowing 2637126372Snjlup as the system device. 2638102550Siwasaki 2639102550SiwasakiFixed checks on C2/C3 latencies to be inclusive of maximum 2640102550Siwasakivalues. 2641102550Siwasaki 2642114237SnjlReplaced AE_ERRORs in acpi_osl.c with more specific error codes. 2643102550Siwasaki 2644114237SnjlChanged ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 2645102550Siwasaki 2646104470SiwasakiFixed limit interface & usage to fix bugs with passive cooling 2647104470Siwasakihysterisis. 2648102550Siwasaki 2649102550SiwasakiRestructured PRT support. 2650102550Siwasaki 2651102550Siwasaki 2652102550Siwasaki---------------------------------------- 2653102550SiwasakiSummary of changes for this label: 02_14_02 2654102550Siwasaki 2655102550Siwasaki 2656102550Siwasaki1) ACPI CA Core Subsystem: 2657102550Siwasaki 2658114237SnjlImplemented support in AcpiLoadTable to allow loading of FACS and 2659114237SnjlFADT tables. 2660102550Siwasaki 2661114237SnjlSuport for the now-obsolete interim 0.71 64-bit ACPI tables has 2662114237Snjlbeen removed. All 64-bit platforms should be migrated to the 2663126372SnjlACPI 2664126372Snjl2.0 tables. The actbl71.h header has been removed from the 2665126372Snjlsource 2666126372Snjltree. 2667102550Siwasaki 2668114237SnjlAll C macros defined within the subsystem have been prefixed with 2669114237Snjl"ACPI_" to avoid collision with other system include files. 2670102550Siwasaki 2671102550SiwasakiRemoved the return value for the two AcpiOsPrint interfaces, 2672126372Snjlsince 2673126372Snjlit is never used and causes lint warnings for ignoring the return 2674126372Snjlvalue. 2675102550Siwasaki 2676104470SiwasakiAdded error checking to all internal mutex acquire and release 2677104470Siwasakicalls. Although a failure from one of these interfaces is 2678104470Siwasakiprobably a fatal system error, these checks will cause the 2679114237Snjlimmediate abort of the currently executing method or interface. 2680102550Siwasaki 2681114237SnjlFixed a problem where the AcpiSetCurrentResources interface could 2682114237Snjlfault. This was a side effect of the deployment of the new 2683126372Snjlmemory 2684126372Snjlallocation model. 2685102550Siwasaki 2686102550SiwasakiFixed a couple of problems with the Global Lock support 2687126372Snjlintroduced 2688126372Snjlin the last major build. The "common" (1.0/2.0) internal FACS 2689126372Snjlwas 2690126372Snjlbeing overwritten with the FACS signature and clobbering the 2691126372SnjlGlobal Lock pointer. Also, the actual firmware FACS was being 2692126372Snjlunmapped after construction of the "common" FACS, preventing 2693126372Snjlaccess to the actual Global Lock field within it. The "common" 2694126372Snjlinternal FACS is no longer installed as an actual ACPI table; it 2695126372Snjlis used simply as a global. 2696102550Siwasaki 2697102550SiwasakiCode and Data Size: Current core subsystem library sizes are 2698126372Snjlshown 2699126372Snjlbelow. These are the code and data sizes for the acpica.lib 2700126372Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 2701126372Snjlvalues do not include any ACPI driver or OSPM code. The debug 2702126372Snjlversion of the code includes the debug output trace mechanism and 2703126372Snjlhas a larger code and data size. Note that these values will 2704126372Snjlvary 2705126372Snjldepending on the efficiency of the compiler and the compiler 2706126372Snjloptions used during generation. 2707102550Siwasaki 2708102550Siwasaki Previous Release (02_07_01) 2709104470Siwasaki Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 2710104470Siwasaki Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 2711102550Siwasaki Current Release: 2712104470Siwasaki Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 2713104470Siwasaki Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 2714102550Siwasaki 2715102550Siwasaki 2716102550Siwasaki2) Linux 2717102550Siwasaki 2718102550SiwasakiUpdated Linux-specific code for core macro and OSL interface 2719102550Siwasakichanges described above. 2720102550Siwasaki 2721114237SnjlImproved /proc/acpi/event. It now can be opened only once and has 2722114237Snjlproper poll functionality. 2723102550Siwasaki 2724102550SiwasakiFixed and restructured power management (acpi_bus). 2725102550Siwasaki 2726102550SiwasakiOnly create /proc "view by type" when devices of that class 2727102550Siwasakiexist. 2728102550Siwasaki 2729104470SiwasakiFixed "charging/discharging" bug (and others) in acpi_battery. 2730102550Siwasaki 2731102550SiwasakiImproved thermal zone code. 2732102550Siwasaki 2733102550Siwasaki 2734102550Siwasaki3) ASL Compiler, version X2039: 2735102550Siwasaki 2736114237Snjl 2737114237SnjlImplemented the new compiler restriction on ASL String hex/octal 2738114237Snjlescapes to non-null, ASCII values. An error results if an 2739126372Snjlinvalid 2740126372Snjlvalue is used. (This will require an ACPI 2.0 specification 2741126372Snjlchange.) 2742102550Siwasaki 2743102550SiwasakiAML object labels that are output to the optional C and ASM 2744126372Snjlsource 2745126372Snjlare now prefixed with both the ACPI table signature and table ID 2746126372Snjlto help guarantee uniqueness within a large BIOS project. 2747102550Siwasaki 2748102550Siwasaki 2749102550Siwasaki---------------------------------------- 2750102550SiwasakiSummary of changes for this label: 02_01_02 2751102550Siwasaki 2752102550Siwasaki1) ACPI CA Core Subsystem: 2753102550Siwasaki 2754114237SnjlACPI 2.0 support is complete in the entire Core Subsystem and the 2755114237SnjlASL compiler. All new ACPI 2.0 operators are implemented and all 2756114237Snjlother changes for ACPI 2.0 support are complete. With 2757104470Siwasakisimultaneous code and data optimizations throughout the 2758126372Snjlsubsystem, 2759126372SnjlACPI 2.0 support has been implemented with almost no additional 2760126372Snjlcost in terms of code and data size. 2761102550Siwasaki 2762114237SnjlImplemented a new mechanism for allocation of return buffers. If 2763114237Snjlthe buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 2764114237Snjlbe allocated on behalf of the caller. Consolidated all return 2765114237Snjlbuffer validation and allocation to a common procedure. Return 2766114237Snjlbuffers will be allocated via the primary OSL allocation 2767126372Snjlinterface 2768126372Snjlsince it appears that a separate pool is not needed by most 2769126372Snjlusers. 2770126372SnjlIf a separate pool is required for these buffers, the caller can 2771126372Snjlstill use the original mechanism and pre-allocate the buffer(s). 2772102550Siwasaki 2773102550SiwasakiImplemented support for string operands within the DerefOf 2774102550Siwasakioperator. 2775102550Siwasaki 2776114237SnjlRestructured the Hardware and Event managers to be table driven, 2777114237Snjlsimplifying the source code and reducing the amount of generated 2778114237Snjlcode. 2779102550Siwasaki 2780102550SiwasakiSplit the common read/write low-level ACPI register bitfield 2781104470Siwasakiprocedure into a separate read and write, simplifying the code 2782104470Siwasakiconsiderably. 2783102550Siwasaki 2784114237SnjlObsoleted the AcpiOsCallocate OSL interface. This interface was 2785114237Snjlused only a handful of times and didn't have enough critical mass 2786114237Snjlfor a separate interface. Replaced with a common calloc 2787126372Snjlprocedure 2788126372Snjlin the core. 2789102550Siwasaki 2790104470SiwasakiFixed a reported problem with the GPE number mapping mechanism 2791104470Siwasakithat allows GPE1 numbers to be non-contiguous with GPE0. 2792114237SnjlReorganized the GPE information and shrunk a large array that was 2793114237Snjloriginally large enough to hold info for all possible GPEs (256) 2794114237Snjlto simply large enough to hold all GPEs up to the largest GPE 2795114237Snjlnumber on the machine. 2796102550Siwasaki 2797114237SnjlFixed a reported problem with resource structure alignment on 64- 2798114237Snjlbit platforms. 2799102550Siwasaki 2800102550SiwasakiChanged the AcpiEnableEvent and AcpiDisableEvent external 2801102550Siwasakiinterfaces to not require any flags for the common case of 2802102550Siwasakienabling/disabling a GPE. 2803102550Siwasaki 2804104470SiwasakiImplemented support to allow a "Notify" on a Processor object. 2805102550Siwasaki 2806114237SnjlMost TBDs in comments within the source code have been resolved 2807114237Snjland eliminated. 2808102550Siwasaki 2809102550SiwasakiFixed a problem in the interpreter where a standalone parent 2810102550Siwasakiprefix (^) was not handled correctly in the interpreter and 2811102550Siwasakidebugger. 2812102550Siwasaki 2813102550SiwasakiRemoved obsolete and unnecessary GPE save/restore code. 2814102550Siwasaki 2815114237SnjlImplemented Field support in the ASL Load operator. This allows 2816126372Snjla 2817126372Snjltable to be loaded from a named field, in addition to loading a 2818114237Snjltable directly from an Operation Region. 2819102550Siwasaki 2820104470SiwasakiImplemented timeout and handle support in the external Global 2821126372SnjlLock 2822126372Snjlinterfaces. 2823102550Siwasaki 2824114237SnjlFixed a problem in the AcpiDump utility where pathnames were no 2825114237Snjllonger being generated correctly during the dump of named 2826102550Siwasakiobjects. 2827102550Siwasaki 2828102550SiwasakiModified the AML debugger to give a full display of if/while 2829102550Siwasakipredicates instead of just one AML opcode at a time. (The 2830102550Siwasakipredicate can have several nested ASL statements.) The old 2831126372Snjlmethod 2832126372Snjlwas confusing during single stepping. 2833102550Siwasaki 2834102550SiwasakiCode and Data Size: Current core subsystem library sizes are 2835126372Snjlshown 2836126372Snjlbelow. These are the code and data sizes for the acpica.lib 2837114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 2838114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 2839114237Snjlversion of the code includes the debug output trace mechanism and 2840114237Snjlhas a larger code and data size. Note that these values will 2841126372Snjlvary 2842126372Snjldepending on the efficiency of the compiler and the compiler 2843114237Snjloptions used during generation. 2844102550Siwasaki 2845102550Siwasaki Previous Release (12_18_01) 2846114237Snjl Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 2847114237Snjl Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 2848102550Siwasaki Current Release: 2849114237Snjl Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 2850114237Snjl Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 2851102550Siwasaki 2852102550Siwasaki2) Linux 2853102550Siwasaki 2854104470Siwasaki Implemented fix for PIIX reverse throttling errata (Processor 2855104470Siwasakidriver) 2856102550Siwasaki 2857102550SiwasakiAdded new Limit interface (Processor and Thermal drivers) 2858102550Siwasaki 2859102550SiwasakiNew thermal policy (Thermal driver) 2860102550Siwasaki 2861102550SiwasakiMany updates to /proc 2862102550Siwasaki 2863102550SiwasakiBattery "low" event support (Battery driver) 2864102550Siwasaki 2865104470SiwasakiSupports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 2866102550Siwasaki 2867104470SiwasakiIA32 - IA64 initialization unification, no longer experimental 2868102550Siwasaki 2869102550SiwasakiMenuconfig options redesigned 2870102550Siwasaki 2871102550Siwasaki3) ASL Compiler, version X2037: 2872102550Siwasaki 2873114237SnjlImplemented several new output features to simplify integration 2874126372Snjlof 2875126372SnjlAML code into firmware: 1) Output the AML in C source code with 2876126372Snjllabels for each named ASL object. The original ASL source 2877126372Snjlcode 2878126372Snjlis interleaved as C comments. 2) Output the AML in ASM source 2879126372Snjlcode 2880126372Snjlwith labels and interleaved ASL source. 3) Output the AML in 2881126372Snjlraw hex table form, in either C or ASM. 2882102550Siwasaki 2883102550SiwasakiImplemented support for optional string parameters to the 2884102550SiwasakiLoadTable operator. 2885102550Siwasaki 2886104470SiwasakiCompleted support for embedded escape sequences within string 2887114237Snjlliterals. The compiler now supports all single character escapes 2888114237Snjlas well as the Octal and Hex escapes. Note: the insertion of a 2889114237Snjlnull byte into a string literal (via the hex/octal escape) causes 2890114237Snjlthe string to be immediately terminated. A warning is issued. 2891102550Siwasaki 2892104470SiwasakiFixed a problem where incorrect AML was generated for the case 2893104470Siwasakiwhere an ASL namepath consists of a single parent prefix ( 2894102550Siwasaki 2895102550Siwasaki) with no trailing name segments. 2896102550Siwasaki 2897102550SiwasakiThe compiler has been successfully generated with a 64-bit C 2898102550Siwasakicompiler. 2899102550Siwasaki 2900102550Siwasaki 2901102550Siwasaki 2902102550Siwasaki 2903102550Siwasaki---------------------------------------- 2904102550SiwasakiSummary of changes for this label: 12_18_01 2905102550Siwasaki 2906102550Siwasaki1) Linux 2907102550Siwasaki 2908114237SnjlEnhanced blacklist with reason and severity fields. Any table's 2909114237Snjlsignature may now be used to identify a blacklisted system. 2910102550Siwasaki 2911114237SnjlCall _PIC control method to inform the firmware which interrupt 2912114237Snjlmodel the OS is using. Turn on any disabled link devices. 2913102550Siwasaki 2914102550SiwasakiCleaned up busmgr /proc error handling (Andreas Dilger) 2915102550Siwasaki 2916102550Siwasaki 2) ACPI CA Core Subsystem: 2917102550Siwasaki 2918104470SiwasakiImplemented ACPI 2.0 semantics for the "Break" operator (Exit 2919126372Snjlfrom 2920126372Snjlwhile loop) 2921102550Siwasaki 2922102550SiwasakiCompleted implementation of the ACPI 2.0 "Continue", 2923102550Siwasaki"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 2924104470Siwasakioperators. All new ACPI 2.0 operators are now implemented in 2925126372Snjlboth 2926126372Snjlthe ASL compiler and the AML interpreter. The only remaining 2927126372SnjlACPI 2928126372Snjl2.0 task is support for the String data type in the DerefOf 2929126372Snjloperator. Fixed a problem with AcquireMutex where the status 2930126372Snjlcode 2931126372Snjlwas lost if the caller had to actually wait for the mutex. 2932102550Siwasaki 2933104470SiwasakiIncreased the maximum ASL Field size from 64K bits to 4G bits. 2934102550Siwasaki 2935114237SnjlCompleted implementation of the external Global Lock interfaces - 2936126372Snjl- 2937126372SnjlAcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 2938126372SnjlHandler parameters were added. 2939102550Siwasaki 2940102550SiwasakiCompleted another pass at removing warnings and issues when 2941114237Snjlcompiling with 64-bit compilers. The code now compiles cleanly 2942114237Snjlwith the Intel 64-bit C/C++ compiler. Most notably, the pointer 2943114237Snjladd and subtract (diff) macros have changed considerably. 2944102550Siwasaki 2945114237SnjlCreated and deployed a new ACPI_SIZE type that is 64-bits wide on 2946114237Snjl64-bit platforms, 32-bits on all others. This type is used 2947104470Siwasakiwherever memory allocation and/or the C sizeof() operator is 2948126372Snjlused, 2949126372Snjland affects the OSL memory allocation interfaces AcpiOsAllocate 2950126372Snjland AcpiOsCallocate. 2951102550Siwasaki 2952102550SiwasakiImplemented sticky user breakpoints in the AML debugger. 2953102550Siwasaki 2954102550SiwasakiCode and Data Size: Current core subsystem library sizes are 2955126372Snjlshown 2956126372Snjlbelow. These are the code and data sizes for the acpica.lib 2957114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 2958114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 2959114237Snjlversion of the code includes the debug output trace mechanism and 2960114237Snjlhas a larger code and data size. Note that these values will vary 2961114237Snjldepending on the efficiency of the compiler and the compiler 2962114237Snjloptions used during generation. 2963102550Siwasaki 2964102550Siwasaki Previous Release (12_05_01) 2965114237Snjl Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 2966114237Snjl Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 2967102550Siwasaki Current Release: 2968114237Snjl Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 2969114237Snjl Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 2970102550Siwasaki 2971102550Siwasaki 3) ASL Compiler, version X2034: 2972102550Siwasaki 2973114237SnjlNow checks for (and generates an error if detected) the use of a 2974114237SnjlBreak or Continue statement without an enclosing While statement. 2975102550Siwasaki 2976102550SiwasakiSuccessfully generated the compiler with the Intel 64-bit C 2977102550Siwasakicompiler. 2978102550Siwasaki 2979102550Siwasaki ---------------------------------------- 2980102550SiwasakiSummary of changes for this label: 12_05_01 2981102550Siwasaki 2982102550Siwasaki 1) ACPI CA Core Subsystem: 2983102550Siwasaki 2984102550SiwasakiThe ACPI 2.0 CopyObject operator is fully implemented. This 2985104470Siwasakioperator creates a new copy of an object (and is also used to 2986104470Siwasakibypass the "implicit conversion" mechanism of the Store 2987102550Siwasakioperator.) 2988102550Siwasaki 2989102550SiwasakiThe ACPI 2.0 semantics for the SizeOf operator are fully 2990102550Siwasakiimplemented. The change is that performing a SizeOf on a 2991114237Snjlreference object causes an automatic dereference of the object to 2992114237Snjltha actual value before the size is evaluated. This behavior was 2993114237Snjlundefined in ACPI 1.0. 2994102550Siwasaki 2995114237SnjlThe ACPI 2.0 semantics for the Extended IRQ resource descriptor 2996114237Snjlhave been implemented. The interrupt polarity and mode are now 2997114237Snjlindependently set. 2998102550Siwasaki 2999114237SnjlFixed a problem where ASL Constants (Zero, One, Ones, Revision) 3000114237Snjlappearing in Package objects were not properly converted to 3001114237Snjlintegers when the internal Package was converted to an external 3002114237Snjlobject (via the AcpiEvaluateObject interface.) 3003102550Siwasaki 3004114237SnjlFixed a problem with the namespace object deletion mechanism for 3005114237Snjlobjects created by control methods. There were two parts to this 3006114237Snjlproblem: 1) Objects created during the initialization phase 3007126372Snjlmethod 3008126372Snjlparse were not being deleted, and 2) The object owner ID 3009126372Snjlmechanism 3010126372Snjlto track objects was broken. 3011102550Siwasaki 3012114237SnjlFixed a problem where the use of the ASL Scope operator within a 3013114237Snjlcontrol method would result in an invalid opcode exception. 3014102550Siwasaki 3015114237SnjlFixed a problem introduced in the previous label where the buffer 3016114237Snjllength required for the _PRT structure was not being returned 3017114237Snjlcorrectly. 3018102550Siwasaki 3019102550SiwasakiCode and Data Size: Current core subsystem library sizes are 3020126372Snjlshown 3021126372Snjlbelow. These are the code and data sizes for the acpica.lib 3022114237Snjlproduced by the Microsoft Visual C++ 6.0 compiler, and these 3023114237Snjlvalues do not include any ACPI driver or OSPM code. The debug 3024114237Snjlversion of the code includes the debug output trace mechanism and 3025114237Snjlhas a larger code and data size. Note that these values will 3026126372Snjlvary 3027126372Snjldepending on the efficiency of the compiler and the compiler 3028114237Snjloptions used during generation. 3029102550Siwasaki 3030102550Siwasaki Previous Release (11_20_01) 3031114237Snjl Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 3032114237Snjl Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 3033102550Siwasaki 3034102550Siwasaki Current Release: 3035114237Snjl Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 3036114237Snjl Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 3037102550Siwasaki 3038102550Siwasaki 2) Linux: 3039102550Siwasaki 3040102550SiwasakiUpdated all files to apply cleanly against 2.4.16. 3041102550Siwasaki 3042104470SiwasakiAdded basic PCI Interrupt Routing Table (PRT) support for IA32 3043114237Snjl(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 3044114237Snjlversion supports both static and dyanmic PRT entries, but dynamic 3045114237Snjlentries are treated as if they were static (not yet 3046114237Snjlreconfigurable). Architecture- specific code to use this data is 3047114237Snjlabsent on IA32 but should be available shortly. 3048102550Siwasaki 3049114237SnjlChanged the initialization sequence to start the ACPI interpreter 3050114237Snjl(acpi_init) prior to initialization of the PCI driver (pci_init) 3051114237Snjlin init/main.c. This ordering is required to support PRT and 3052114237Snjlfacilitate other (future) enhancement. A side effect is that the 3053114237SnjlACPI bus driver and certain device drivers can no longer be 3054126372Snjlloaded 3055126372Snjlas modules. 3056102550Siwasaki 3057104470SiwasakiModified the 'make menuconfig' options to allow PCI Interrupt 3058104470SiwasakiRouting support to be included without the ACPI Bus and other 3059104470Siwasakidevice drivers. 3060102550Siwasaki 3061102550Siwasaki 3) ASL Compiler, version X2033: 3062102550Siwasaki 3063102550SiwasakiFixed some issues with the use of the new CopyObject and 3064102550SiwasakiDataTableRegion operators. Both are fully functional. 3065102550Siwasaki 3066102550Siwasaki ---------------------------------------- 3067102550SiwasakiSummary of changes for this label: 11_20_01 3068102550Siwasaki 3069102550Siwasaki 20 November 2001. Summary of changes for this release. 3070102550Siwasaki 3071102550Siwasaki 1) ACPI CA Core Subsystem: 3072102550Siwasaki 3073104470SiwasakiUpdated Index support to match ACPI 2.0 semantics. Storing a 3074104470SiwasakiInteger, String, or Buffer to an Index of a Buffer will store 3075126372Snjlonly 3076126372Snjlthe least-significant byte of the source to the Indexed buffer 3077126372Snjlbyte. Multiple writes are not performed. 3078102550Siwasaki 3079104470SiwasakiFixed a problem where the access type used in an AccessAs ASL 3080104470Siwasakioperator was not recorded correctly into the field object. 3081102550Siwasaki 3082102550SiwasakiFixed a problem where ASL Event objects were created in a 3083114237Snjlsignalled state. Events are now created in an unsignalled state. 3084102550Siwasaki 3085114237SnjlThe internal object cache is now purged after table loading and 3086114237Snjlinitialization to reduce the use of dynamic kernel memory -- on 3087114237Snjlthe assumption that object use is greatest during the parse phase 3088114237Snjlof the entire table (versus the run-time use of individual 3089126372Snjlcontrol 3090126372Snjlmethods.) 3091102550Siwasaki 3092102550SiwasakiACPI 2.0 variable-length packages are now fully operational. 3093102550Siwasaki 3094104470SiwasakiCode and Data Size: Code and Data optimizations have permitted 3095126372Snjlnew 3096126372Snjlfeature development with an actual reduction in the library size. 3097126372SnjlCurrent core subsystem library sizes are shown below. These are 3098126372Snjlthe code and data sizes for the acpica.lib produced by the 3099126372SnjlMicrosoft Visual C++ 6.0 compiler, and these values do not 3100126372Snjlinclude 3101126372Snjlany ACPI driver or OSPM code. The debug version of the code 3102126372Snjlincludes the debug output trace mechanism and has a larger code 3103126372Snjland data size. Note that these values will vary depending on the 3104126372Snjlefficiency of the compiler and the compiler options used during 3105126372Snjlgeneration. 3106102550Siwasaki 3107102550Siwasaki Previous Release (11_09_01): 3108114237Snjl Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 3109114237Snjl Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 3110102550Siwasaki 3111102550Siwasaki Current Release: 3112114237Snjl Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 3113114237Snjl Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 3114102550Siwasaki 3115102550Siwasaki 2) Linux: 3116102550Siwasaki 3117114237SnjlEnhanced the ACPI boot-time initialization code to allow the use 3118114237Snjlof Local APIC tables for processor enumeration on IA-32, and to 3119114237Snjlpave the way for a fully MPS-free boot (on SMP systems) in the 3120114237Snjlnear future. This functionality replaces 3121114237Snjlarch/i386/kernel/acpitables.c, which was introduced in an earlier 3122114237Snjl2.4.15-preX release. To enable this feature you must add 3123114237Snjl"acpi_boot=on" to the kernel command line -- see the help entry 3124114237Snjlfor CONFIG_ACPI_BOOT for more information. An IA-64 release is 3125126372Snjlin 3126126372Snjlthe works... 3127102550Siwasaki 3128114237SnjlRestructured the configuration options to allow boot-time table 3129114237Snjlparsing support without inclusion of the ACPI Interpreter (and 3130114237Snjlother) code. 3131102550Siwasaki 3132102550SiwasakiNOTE: This release does not include fixes for the reported 3133126372Snjlevents, 3134126372Snjlpower-down, and thermal passive cooling issues (coming soon). 3135102550Siwasaki 3136102550Siwasaki 3) ASL Compiler: 3137102550Siwasaki 3138114237SnjlAdded additional typechecking for Fields within restricted access 3139114237SnjlOperation Regions. All fields within EC and CMOS regions must be 3140114237Snjldeclared with ByteAcc. All fields withing SMBus regions must be 3141114237Snjldeclared with the BufferAcc access type. 3142102550Siwasaki 3143114237SnjlFixed a problem where the listing file output of control methods 3144114237Snjlno longer interleaved the actual AML code with the ASL source 3145114237Snjlcode. 3146102550Siwasaki 3147102550Siwasaki 3148102550Siwasaki 3149102550Siwasaki---------------------------------------- 3150102550SiwasakiSummary of changes for this label: 11_09_01 3151102550Siwasaki 3152102550Siwasaki1) ACPI CA Core Subsystem: 3153102550Siwasaki 3154114237SnjlImplemented ACPI 2.0-defined support for writes to fields with a 3155114237SnjlBuffer, String, or Integer source operand that is smaller than 3156126372Snjlthe 3157126372Snjltarget field. In these cases, the source operand is zero-extended 3158126372Snjlto fill the target field. 3159102550Siwasaki 3160104470SiwasakiFixed a problem where a Field starting bit offset (within the 3161104470Siwasakiparent operation region) was calculated incorrectly if the 3162104470Siwasakialignment of the field differed from the access width. This 3163114237Snjlaffected CreateWordField, CreateDwordField, CreateQwordField, and 3164114237Snjlpossibly other fields that use the "AccessAny" keyword. 3165102550Siwasaki 3166114237SnjlFixed a problem introduced in the 11_02_01 release where indirect 3167114237Snjlstores through method arguments did not operate correctly. 3168102550Siwasaki 3169102550Siwasaki2) Linux: 3170102550Siwasaki 3171102550SiwasakiImplemented boot-time ACPI table parsing support 3172114237Snjl(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 3173114237Snjlfacilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 3174114237Snjllegacy BIOS interfaces (e.g. MPS) for the configuration of system 3175114237Snjlprocessors, memory, and interrupts during setup_arch(). Note 3176126372Snjlthat 3177126372Snjlthis patch does not include the required architecture-specific 3178126372Snjlchanges required to apply this information -- subsequent patches 3179126372Snjlwill be posted for both IA32 and IA64 to achieve this. 3180102550Siwasaki 3181114237SnjlAdded low-level sleep support for IA32 platforms, courtesy of Pat 3182114237SnjlMochel. This allows IA32 systems to transition to/from various 3183114237Snjlsleeping states (e.g. S1, S3), although the lack of a centralized 3184114237Snjldriver model and power-manageable drivers will prevent its 3185114237Snjl(successful) use on most systems. 3186102550Siwasaki 3187114237SnjlRevamped the ACPI 'menuconfig' layout: created new "ACPI Support" 3188114237Snjlsubmenu, unified IA32 and IA64 options, added new "Boot using 3189126372SnjlACPI 3190126372Snjltables" option, etc. 3191102550Siwasaki 3192114237SnjlIncreased the default timeout for the EC driver from 1ms to 10ms 3193114237Snjl(1000 cycles of 10us) to try to address AE_TIME errors during EC 3194114237Snjltransactions. 3195102550Siwasaki 3196102550Siwasaki ---------------------------------------- 3197102550SiwasakiSummary of changes for this label: 11_02_01 3198102550Siwasaki 3199102550Siwasaki1) ACPI CA Core Subsystem: 3200102550Siwasaki 3201102550SiwasakiACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 3202102550Siwasaki(QWordAcc keyword). All ACPI 2.0 64-bit support is now 3203102550Siwasakiimplemented. 3204102550Siwasaki 3205114237SnjlOSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 3206114237Snjlchanges to support ACPI 2.0 Qword field access. Read/Write 3207114237SnjlPciConfiguration(), Read/Write Memory(), and Read/Write Port() 3208126372Snjlnow 3209126372Snjlaccept an ACPI_INTEGER (64 bits) as the value parameter. Also, 3210126372Snjlthe value parameter for the address space handler interface is 3211126372Snjlnow 3212126372Snjlan ACPI_INTEGER. OSL implementations of these interfaces must 3213126372Snjlnow 3214126372Snjlhandle the case where the Width parameter is 64. 3215102550Siwasaki 3216104470SiwasakiIndex Fields: Fixed a problem where unaligned bit assembly and 3217104470Siwasakidisassembly for IndexFields was not supported correctly. 3218102550Siwasaki 3219102550SiwasakiIndex and Bank Fields: Nested Index and Bank Fields are now 3220104470Siwasakisupported. During field access, a check is performed to ensure 3221114237Snjlthat the value written to an Index or Bank register is not out of 3222114237Snjlthe range of the register. The Index (or Bank) register is 3223114237Snjlwritten before each access to the field data. Future support will 3224114237Snjlinclude allowing individual IndexFields to be wider than the 3225114237SnjlDataRegister width. 3226102550Siwasaki 3227114237SnjlFields: Fixed a problem where the AML interpreter was incorrectly 3228114237Snjlattempting to write beyond the end of a Field/OpRegion. This was 3229114237Snjla boundary case that occurred when a DWORD field was written to a 3230114237SnjlBYTE access OpRegion, forcing multiple writes and causing the 3231114237Snjlinterpreter to write one datum too many. 3232102550Siwasaki 3233102550SiwasakiFields: Fixed a problem with Field/OpRegion access where the 3234114237Snjlstarting bit address of a field was incorrectly calculated if the 3235114237Snjlcurrent access type was wider than a byte (WordAcc, DwordAcc, or 3236114237SnjlQwordAcc). 3237102550Siwasaki 3238104470SiwasakiFields: Fixed a problem where forward references to individual 3239104470SiwasakiFieldUnits (individual Field names within a Field definition) 3240126372Snjlwere 3241126372Snjlnot resolved during the AML table load. 3242102550Siwasaki 3243104470SiwasakiFields: Fixed a problem where forward references from a Field 3244104470Siwasakidefinition to the parent Operation Region definition were not 3245104470Siwasakiresolved during the AML table load. 3246104470Siwasaki 3247114237SnjlFields: Duplicate FieldUnit names within a scope are now detected 3248114237Snjlduring AML table load. 3249102550Siwasaki 3250102550SiwasakiAcpi Interfaces: Fixed a problem where the AcpiGetName() 3251126372Snjlinterface 3252126372Snjlreturned an incorrect name for the root node. 3253102550Siwasaki 3254104470SiwasakiCode and Data Size: Code and Data optimizations have permitted 3255126372Snjlnew 3256126372Snjlfeature development with an actual reduction in the library size. 3257126372SnjlCurrent core subsystem library sizes are shown below. These are 3258126372Snjlthe code and data sizes for the acpica.lib produced by the 3259126372SnjlMicrosoft Visual C++ 6.0 compiler, and these values do not 3260126372Snjlinclude 3261126372Snjlany ACPI driver or OSPM code. The debug version of the code 3262126372Snjlincludes the debug output trace mechanism and has a larger code 3263126372Snjland data size. Note that these values will vary depending on the 3264126372Snjlefficiency of the compiler and the compiler options used during 3265126372Snjlgeneration. 3266102550Siwasaki 3267102550Siwasaki Previous Release (10_18_01): 3268114237Snjl Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 3269114237Snjl Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 3270102550Siwasaki 3271102550Siwasaki Current Release: 3272114237Snjl Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 3273114237Snjl Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 3274102550Siwasaki 3275102550Siwasaki 2) Linux: 3276102550Siwasaki 3277102550SiwasakiImproved /proc processor output (Pavel Machek) Re-added 3278102550SiwasakiMODULE_LICENSE("GPL") to all modules. 3279102550Siwasaki 3280102550Siwasaki 3) ASL Compiler version X2030: 3281102550Siwasaki 3282104470SiwasakiDuplicate FieldUnit names within a scope are now detected and 3283104470Siwasakiflagged as errors. 3284102550Siwasaki 3285102550Siwasaki 4) Documentation: 3286102550Siwasaki 3287104470SiwasakiProgrammer Reference updated to reflect OSL and address space 3288104470Siwasakihandler interface changes described above. 3289102550Siwasaki 3290102550Siwasaki---------------------------------------- 3291102550SiwasakiSummary of changes for this label: 10_18_01 3292102550Siwasaki 3293102550SiwasakiACPI CA Core Subsystem: 3294102550Siwasaki 3295102550SiwasakiFixed a problem with the internal object reference count 3296126372Snjlmechanism 3297126372Snjlthat occasionally caused premature object deletion. This resolves 3298126372Snjlall of the outstanding problem reports where an object is deleted 3299126372Snjlin the middle of an interpreter evaluation. Although this 3300126372Snjlproblem 3301126372Snjlonly showed up in rather obscure cases, the solution to the 3302126372Snjlproblem involved an adjustment of all reference counts involving 3303126372Snjlobjects attached to namespace nodes. 3304102550Siwasaki 3305102550SiwasakiFixed a problem with Field support in the interpreter where 3306114237Snjlwriting to an aligned field whose length is an exact multiple (2 3307114237Snjlor greater) of the field access granularity would cause an 3308126372Snjlattempt 3309126372Snjlto write beyond the end of the field. 3310102550Siwasaki 3311102550SiwasakiThe top level AML opcode execution functions within the 3312102550Siwasakiinterpreter have been renamed with a more meaningful and 3313102550Siwasakiconsistent naming convention. The modules exmonad.c and 3314102550Siwasakiexdyadic.c were eliminated. New modules are exoparg1.c, 3315102550Siwasakiexoparg2.c, exoparg3.c, and exoparg6.c. 3316102550Siwasaki 3317114237SnjlSupport for the ACPI 2.0 "Mid" ASL operator has been implemented. 3318102550Siwasaki 3319114237SnjlFixed a problem where the AML debugger was causing some internal 3320114237Snjlobjects to not be deleted during subsystem termination. 3321102550Siwasaki 3322104470SiwasakiFixed a problem with the external AcpiEvaluateObject interface 3323104470Siwasakiwhere the subsystem would fault if the named object to be 3324104470Siwasakievaluated refered to a constant such as Zero, Ones, etc. 3325102550Siwasaki 3326102550SiwasakiFixed a problem with IndexFields and BankFields where the 3327114237Snjlsubsystem would fault if the index, data, or bank registers were 3328114237Snjlnot defined in the same scope as the field itself. 3329102550Siwasaki 3330104470SiwasakiAdded printf format string checking for compilers that support 3331104470Siwasakithis feature. Corrected more than 50 instances of issues with 3332104470Siwasakiformat specifiers within invocations of ACPI_DEBUG_PRINT 3333104470Siwasakithroughout the core subsystem code. 3334102550Siwasaki 3335104470SiwasakiThe ASL "Revision" operator now returns the ACPI support level 3336104470Siwasakiimplemented in the core - the value "2" since the ACPI 2.0 3337126372Snjlsupport 3338126372Snjlis more than 50% implemented. 3339102550Siwasaki 3340114237SnjlEnhanced the output of the AML debugger "dump namespace" command 3341114237Snjlto output in a more human-readable form. 3342102550Siwasaki 3343114237SnjlCurrent core subsystem library code sizes are shown below. These 3344114237Snjlare the code and data sizes for the acpica.lib produced by the 3345114237SnjlMicrosoft Visual C++ 6.0 compiler, and these values do not 3346126372Snjlinclude 3347126372Snjlany ACPI driver or OSPM code. The debug version of the code 3348126372Snjlincludes the full debug trace mechanism -- leading to a much 3349114237Snjllarger code and data size. Note that these values will vary 3350114237Snjldepending on the efficiency of the compiler and the compiler 3351114237Snjloptions used during generation. 3352102550Siwasaki 3353102550Siwasaki Previous Label (09_20_01): 3354114237Snjl Non-Debug Version: 65K Code, 5K Data, 70K Total 3355114237Snjl Debug Version: 138K Code, 58K Data, 196K Total 3356102550Siwasaki 3357102550Siwasaki This Label: 3358102550Siwasaki 3359114237Snjl Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 3360114237Snjl Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 3361114237Snjl 3362102550SiwasakiLinux: 3363102550Siwasaki 3364104470SiwasakiImplemented a "Bad BIOS Blacklist" to track machines that have 3365104470Siwasakiknown ASL/AML problems. 3366102550Siwasaki 3367102550SiwasakiEnhanced the /proc interface for the thermal zone driver and 3368126372Snjladded 3369126372Snjlsupport for _HOT (the critical suspend trip point). The 'info' 3370126372Snjlfile now includes threshold/policy information, and allows 3371126372Snjlsetting 3372126372Snjlof _SCP (cooling preference) and _TZP (polling frequency) values 3373126372Snjlto the 'info' file. Examples: "echo tzp=5 > info" sets the 3374126372Snjlpolling 3375126372Snjlfrequency to 5 seconds, and "echo scp=1 > info" sets the cooling 3376126372Snjlpreference to the passive/quiet mode (if supported by the ASL). 3377102550Siwasaki 3378104470SiwasakiImplemented a workaround for a gcc bug that resuted in an OOPs 3379104470Siwasakiwhen loading the control method battery driver. 3380102550Siwasaki 3381102550Siwasaki ---------------------------------------- 3382102550SiwasakiSummary of changes for this label: 09_20_01 3383102550Siwasaki 3384102550Siwasaki ACPI CA Core Subsystem: 3385102550Siwasaki 3386104470SiwasakiThe AcpiEnableEvent and AcpiDisableEvent interfaces have been 3387104470Siwasakimodified to allow individual GPE levels to be flagged as wake- 3388114237Snjlenabled (i.e., these GPEs are to remain enabled when the platform 3389114237Snjlsleeps.) 3390102550Siwasaki 3391104470SiwasakiThe AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 3392104470Siwasakisupport wake-enabled GPEs. This means that upon entering the 3393104470Siwasakisleep state, all GPEs that are not wake-enabled are disabled. 3394104470SiwasakiWhen leaving the sleep state, these GPEs are reenabled. 3395102550Siwasaki 3396114237SnjlA local double-precision divide/modulo module has been added to 3397114237Snjlenhance portability to OS kernels where a 64-bit math library is 3398114237Snjlnot available. The new module is "utmath.c". 3399102550Siwasaki 3400104470SiwasakiSeveral optimizations have been made to reduce the use of CPU 3401114237Snjlstack. Originally over 2K, the maximum stack usage is now below 3402114237Snjl2K at 1860 bytes (1.82k) 3403102550Siwasaki 3404114237SnjlFixed a problem with the AcpiGetFirmwareTable interface where the 3405114237Snjlroot table pointer was not mapped into a logical address 3406104470Siwasakiproperly. 3407102550Siwasaki 3408104470SiwasakiFixed a problem where a NULL pointer was being dereferenced in 3409126372Snjlthe 3410126372Snjlinterpreter code for the ASL Notify operator. 3411102550Siwasaki 3412102550SiwasakiFixed a problem where the use of the ASL Revision operator 3413114237Snjlreturned an error. This operator now returns the current version 3414114237Snjlof the ACPI CA core subsystem. 3415102550Siwasaki 3416114237SnjlFixed a problem where objects passed as control method parameters 3417114237Snjlto AcpiEvaluateObject were always deleted at method termination. 3418114237SnjlHowever, these objects may end up being stored into the namespace 3419114237Snjlby the called method. The object reference count mechanism was 3420114237Snjlapplied to these objects instead of a force delete. 3421102550Siwasaki 3422114237SnjlFixed a problem where static strings or buffers (contained in the 3423114237SnjlAML code) that are declared as package elements within the ASL 3424114237Snjlcode could cause a fault because the interpreter would attempt to 3425114237Snjldelete them. These objects are now marked with the "static 3426114237Snjlobject" flag to prevent any attempt to delete them. 3427102550Siwasaki 3428114237SnjlImplemented an interpreter optimization to use operands directly 3429114237Snjlfrom the state object instead of extracting the operands to local 3430114237Snjlvariables. This reduces stack use and code size, and improves 3431114237Snjlperformance. 3432102550Siwasaki 3433102550SiwasakiThe module exxface.c was eliminated as it was an unnecessary 3434126372Snjlextra 3435126372Snjllayer of code. 3436102550Siwasaki 3437114237SnjlCurrent core subsystem library code sizes are shown below. These 3438114237Snjlare the code and data sizes for the acpica.lib produced by the 3439114237SnjlMicrosoft Visual C++ 6.0 compiler, and these values do not 3440126372Snjlinclude 3441126372Snjlany ACPI driver or OSPM code. The debug version of the code 3442126372Snjlincludes the full debug trace mechanism -- leading to a much 3443114237Snjllarger code and data size. Note that these values will vary 3444114237Snjldepending on the efficiency of the compiler and the compiler 3445114237Snjloptions used during generation. 3446102550Siwasaki 3447102550Siwasaki Non-Debug Version: 65K Code, 5K Data, 70K Total 3448114237Snjl(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 3449114237SnjlTotal (Previously 195K) 3450102550Siwasaki 3451102550SiwasakiLinux: 3452102550Siwasaki 3453114237SnjlSupport for ACPI 2.0 64-bit integers has been added. All ACPI 3454114237SnjlInteger objects are now 64 bits wide 3455102550Siwasaki 3456114237SnjlAll Acpi data types and structures are now in lower case. Only 3457114237SnjlAcpi macros are upper case for differentiation. 3458102550Siwasaki 3459102550Siwasaki Documentation: 3460102550Siwasaki 3461102550SiwasakiChanges to the external interfaces as described above. 3462102550Siwasaki 3463102550Siwasaki ---------------------------------------- 3464102550SiwasakiSummary of changes for this label: 08_31_01 3465102550Siwasaki 3466102550Siwasaki ACPI CA Core Subsystem: 3467102550Siwasaki 3468114237SnjlA bug with interpreter implementation of the ASL Divide operator 3469114237Snjlwas found and fixed. The implicit function return value (not the 3470114237Snjlexplicit store operands) was returning the remainder instead of 3471114237Snjlthe quotient. This was a longstanding bug and it fixes several 3472114237Snjlknown outstanding issues on various platforms. 3473102550Siwasaki 3474104470SiwasakiThe ACPI_DEBUG_PRINT and function trace entry/exit macros have 3475104470Siwasakibeen further optimized for size. There are 700 invocations of 3476126372Snjlthe 3477126372SnjlDEBUG_PRINT macro alone, so each optimization reduces the size of 3478126372Snjlthe debug version of the subsystem significantly. 3479102550Siwasaki 3480114237SnjlA stack trace mechanism has been implemented. The maximum stack 3481114237Snjlusage is about 2K on 32-bit platforms. The debugger command 3482126372Snjl"stat 3483126372Snjlstack" will display the current maximum stack usage. 3484102550Siwasaki 3485114237SnjlAll public symbols and global variables within the subsystem are 3486114237Snjlnow prefixed with the string "Acpi". This keeps all of the 3487114237Snjlsymbols grouped together in a kernel map, and avoids conflicts 3488114237Snjlwith other kernel subsystems. 3489102550Siwasaki 3490114237SnjlMost of the internal fixed lookup tables have been moved into the 3491114237Snjlcode segment via the const operator. 3492102550Siwasaki 3493104470SiwasakiSeveral enhancements have been made to the interpreter to both 3494104470Siwasakireduce the code size and improve performance. 3495102550Siwasaki 3496114237SnjlCurrent core subsystem library code sizes are shown below. These 3497114237Snjlare the code and data sizes for the acpica.lib produced by the 3498114237SnjlMicrosoft Visual C++ 6.0 compiler, and these values do not 3499126372Snjlinclude 3500126372Snjlany ACPI driver or OSPM code. The debug version of the code 3501126372Snjlincludes the full debug trace mechanism which contains over 700 3502126372Snjlinvocations of the DEBUG_PRINT macro, 500 function entry macro 3503126372Snjlinvocations, and over 900 function exit macro invocations -- 3504126372Snjlleading to a much larger code and data size. Note that these 3505114237Snjlvalues will vary depending on the efficiency of the compiler and 3506114237Snjlthe compiler options used during generation. 3507102550Siwasaki 3508102550Siwasaki Non-Debug Version: 64K Code, 5K Data, 69K Total 3509102550SiwasakiDebug Version: 137K Code, 58K Data, 195K Total 3510102550Siwasaki 3511102550Siwasaki Linux: 3512102550Siwasaki 3513104470SiwasakiImplemented wbinvd() macro, pending a kernel-wide definition. 3514102550Siwasaki 3515102550SiwasakiFixed /proc/acpi/event to handle poll() and short reads. 3516102550Siwasaki 3517102550Siwasaki ASL Compiler, version X2026: 3518102550Siwasaki 3519104470SiwasakiFixed a problem introduced in the previous label where the AML 3520104470Siwasakicode emitted for package objects produced packages with zero 3521104470Siwasakilength. 3522102550Siwasaki 3523102550Siwasaki ---------------------------------------- 3524102550SiwasakiSummary of changes for this label: 08_16_01 3525102550Siwasaki 3526102550SiwasakiACPI CA Core Subsystem: 3527102550Siwasaki 3528114237SnjlThe following ACPI 2.0 ASL operators have been implemented in the 3529114237SnjlAML interpreter (These are already supported by the Intel ASL 3530114237Snjlcompiler): ToDecimalString, ToHexString, ToString, ToInteger, 3531126372Snjland 3532126372SnjlToBuffer. Support for 64-bit AML constants is implemented in the 3533126372SnjlAML parser, debugger, and disassembler. 3534102550Siwasaki 3535114237SnjlThe internal memory tracking mechanism (leak detection code) has 3536114237Snjlbeen upgraded to reduce the memory overhead (a separate tracking 3537114237Snjlblock is no longer allocated for each memory allocation), and now 3538114237Snjlsupports all of the internal object caches. 3539102550Siwasaki 3540114237SnjlThe data structures and code for the internal object caches have 3541114237Snjlbeen coelesced and optimized so that there is a single cache and 3542114237Snjlmemory list data structure and a single group of functions that 3543114237Snjlimplement generic cache management. This has reduced the code 3544114237Snjlsize in both the debug and release versions of the subsystem. 3545102550Siwasaki 3546102550SiwasakiThe DEBUG_PRINT macro(s) have been optimized for size and 3547126372Snjlreplaced 3548126372Snjlby ACPI_DEBUG_PRINT. The syntax for this macro is slightly 3549126372Snjldifferent, because it generates a single call to an internal 3550126372Snjlfunction. This results in a savings of about 90 bytes per 3551126372Snjlinvocation, resulting in an overall code and data savings of 3552126372Snjlabout 3553126372Snjl16% in the debug version of the subsystem. 3554102550Siwasaki 3555102550Siwasaki Linux: 3556102550Siwasaki 3557114237SnjlFixed C3 disk corruption problems and re-enabled C3 on supporting 3558114237Snjlmachines. 3559102550Siwasaki 3560102550SiwasakiIntegrated low-level sleep code by Patrick Mochel. 3561102550Siwasaki 3562102550SiwasakiFurther tweaked source code Linuxization. 3563102550Siwasaki 3564102550SiwasakiOther minor fixes. 3565102550Siwasaki 3566102550Siwasaki ASL Compiler: 3567102550Siwasaki 3568114237SnjlSupport for ACPI 2.0 variable length packages is fixed/completed. 3569102550Siwasaki 3570114237SnjlFixed a problem where the optional length parameter for the ACPI 3571114237Snjl2.0 ToString operator. 3572102550Siwasaki 3573114237SnjlFixed multiple extraneous error messages when a syntax error is 3574114237Snjldetected within the declaration line of a control method. 3575102550Siwasaki 3576102550Siwasaki ---------------------------------------- 3577102550SiwasakiSummary of changes for this label: 07_17_01 3578102550Siwasaki 3579102550SiwasakiACPI CA Core Subsystem: 3580102550Siwasaki 3581104470SiwasakiAdded a new interface named AcpiGetFirmwareTable to obtain any 3582114237SnjlACPI table via the ACPI signature. The interface can be called 3583126372Snjlat 3584126372Snjlany time during kernel initialization, even before the kernel 3585114237Snjlvirtual memory manager is initialized and paging is enabled. 3586126372SnjlThis 3587126372Snjlallows kernel subsystems to obtain ACPI tables very early, even 3588126372Snjlbefore the ACPI CA subsystem is initialized. 3589102550Siwasaki 3590104470SiwasakiFixed a problem where Fields defined with the AnyAcc attribute 3591104470Siwasakicould be resolved to the incorrect address under the following 3592114237Snjlconditions: 1) the field width is larger than 8 bits and 2) the 3593114237Snjlparent operation region is not defined on a DWORD boundary. 3594102550Siwasaki 3595114237SnjlFixed a problem where the interpreter is not being locked during 3596114237Snjlnamespace initialization (during execution of the _INI control 3597114237Snjlmethods), causing an error when an attempt is made to release it 3598114237Snjllater. 3599102550Siwasaki 3600104470SiwasakiACPI 2.0 support in the AML Interpreter has begun and will be 3601114237Snjlongoing throughout the rest of this year. In this label, The Mod 3602114237Snjloperator is implemented. 3603102550Siwasaki 3604102550SiwasakiAdded a new data type to contain full PCI addresses named 3605102550SiwasakiACPI_PCI_ID. This structure contains the PCI Segment, Bus, 3606126372SnjlDevice, 3607126372Snjland Function values. 3608102550Siwasaki 3609102550Siwasaki Linux: 3610102550Siwasaki 3611102550SiwasakiEnhanced the Linux version of the source code to change most 3612102550Siwasakicapitalized ACPI type names to lowercase. For example, all 3613114237Snjlinstances of ACPI_STATUS are changed to acpi_status. This will 3614114237Snjlresult in a large diff, but the change is strictly cosmetic and 3615114237Snjlaligns the CA code closer to the Linux coding standard. 3616102550Siwasaki 3617102550SiwasakiOSL Interfaces: 3618102550Siwasaki 3619114237SnjlThe interfaces to the PCI configuration space have been changed 3620126372Snjlto 3621126372Snjladd the PCI Segment number and to split the single 32-bit 3622126372Snjlcombined 3623126372SnjlDeviceFunction field into two 16-bit fields. This was 3624114237Snjlaccomplished by moving the four values that define an address in 3625114237SnjlPCI configuration space (segment, bus, device, and function) to 3626114237Snjlthe new ACPI_PCI_ID structure. 3627102550Siwasaki 3628104470SiwasakiThe changes to the PCI configuration space interfaces led to a 3629104470Siwasakireexamination of the complete set of address space access 3630114237Snjlinterfaces for PCI, I/O, and Memory. The previously existing 18 3631114237Snjlinterfaces have proven difficult to maintain (any small change 3632114237Snjlmust be propagated across at least 6 interfaces) and do not 3633126372Snjleasily 3634126372Snjlallow for future expansion to 64 bits if necessary. Also, on 3635126372Snjlsome 3636126372Snjlsystems, it would not be appropriate to demultiplex the access 3637126372Snjlwidth (8, 16, 32,or 64) before calling the OSL if the 3638114237Snjlcorresponding native OS interfaces contain a similar access width 3639114237Snjlparameter. For these reasons, the 18 address space interfaces 3640114237Snjlhave been replaced by these 6 new ones: 3641102550Siwasaki 3642102550SiwasakiAcpiOsReadPciConfiguration 3643102550SiwasakiAcpiOsWritePciConfiguration 3644102550SiwasakiAcpiOsReadMemory 3645102550SiwasakiAcpiOsWriteMemory 3646102550SiwasakiAcpiOsReadPort 3647102550SiwasakiAcpiOsWritePort 3648102550Siwasaki 3649114237SnjlAdded a new interface named AcpiOsGetRootPointer to allow the OSL 3650114237Snjlto perform the platform and/or OS-specific actions necessary to 3651114237Snjlobtain the ACPI RSDP table pointer. On IA-32 platforms, this 3652114237Snjlinterface will simply call down to the CA core to perform the low- 3653114237Snjlmemory search for the table. On IA-64, the RSDP is obtained from 3654114237SnjlEFI. Migrating this interface to the OSL allows the CA core to 3655114237Snjlremain OS and platform independent. 3656102550Siwasaki 3657104470SiwasakiAdded a new interface named AcpiOsSignal to provide a generic 3658114237Snjl"function code and pointer" interface for various miscellaneous 3659114237Snjlsignals and notifications that must be made to the host OS. The 3660114237Snjlfirst such signals are intended to support the ASL Fatal and 3661114237SnjlBreakpoint operators. In the latter case, the AcpiOsBreakpoint 3662114237Snjlinterface has been obsoleted. 3663102550Siwasaki 3664102550SiwasakiThe definition of the AcpiFormatException interface has been 3665114237Snjlchanged to simplify its use. The caller no longer must supply a 3666114237Snjlbuffer to the call; A pointer to a const string is now returned 3667114237Snjldirectly. This allows the call to be easily used in printf 3668114237Snjlstatements, etc. since the caller does not have to manage a local 3669114237Snjlbuffer. 3670102550Siwasaki 3671114237Snjl 3672102550Siwasaki ASL Compiler, Version X2025: 3673102550Siwasaki 3674114237SnjlThe ACPI 2.0 Switch/Case/Default operators have been implemented 3675114237Snjland are fully functional. They will work with all ACPI 1.0 3676114237Snjlinterpreters, since the operators are simply translated to 3677126372SnjlIf/Else 3678126372Snjlpairs. 3679102550Siwasaki 3680104470SiwasakiThe ACPI 2.0 ElseIf operator is implemented and will also work 3681104470Siwasakiwith 1.0 interpreters, for the same reason. 3682102550Siwasaki 3683114237SnjlImplemented support for ACPI 2.0 variable-length packages. These 3684114237Snjlpackages have a separate opcode, and their size is determined by 3685114237Snjlthe interpreter at run-time. 3686102550Siwasaki 3687114237SnjlDocumentation The ACPI CA Programmer Reference has been updated 3688126372Snjlto 3689126372Snjlreflect the new interfaces and changes to existing interfaces. 3690102550Siwasaki 3691102550Siwasaki ------------------------------------------ 3692102550SiwasakiSummary of changes for this label: 06_15_01 3693102550Siwasaki 3694102550Siwasaki ACPI CA Core Subsystem: 3695102550Siwasaki 3696102550SiwasakiFixed a problem where a DWORD-accessed field within a Buffer 3697114237Snjlobject would get its byte address inadvertently rounded down to 3698114237Snjlthe nearest DWORD. Buffers are always Byte-accessible. 3699102550Siwasaki 3700102550Siwasaki ASL Compiler, version X2024: 3701102550Siwasaki 3702114237SnjlFixed a problem where the Switch() operator would either fault or 3703114237Snjlhang the compiler. Note however, that the AML code for this ACPI 3704114237Snjl2.0 operator is not yet implemented. 3705102550Siwasaki 3706114237SnjlCompiler uses the new AcpiOsGetTimer interface to obtain compile 3707114237Snjltimings. 3708102550Siwasaki 3709114237SnjlImplementation of the CreateField operator automatically converts 3710114237Snjla reference to a named field within a resource descriptor from a 3711114237Snjlbyte offset to a bit offset if required. 3712102550Siwasaki 3713102550SiwasakiAdded some missing named fields from the resource descriptor 3714104470Siwasakisupport. These are the names that are automatically created by 3715126372Snjlthe 3716126372Snjlcompiler to reference fields within a descriptor. They are only 3717126372Snjlvalid at compile time and are not passed through to the AML 3718114237Snjlinterpreter. 3719102550Siwasaki 3720104470SiwasakiResource descriptor named fields are now typed as Integers and 3721104470Siwasakisubject to compile-time typechecking when used in expressions. 3722102550Siwasaki 3723102550Siwasaki ------------------------------------------ 3724102550SiwasakiSummary of changes for this label: 05_18_01 3725102550Siwasaki 3726102550Siwasaki ACPI CA Core Subsystem: 3727102550Siwasaki 3728114237SnjlFixed a couple of problems in the Field support code where bits 3729114237Snjlfrom adjacent fields could be returned along with the proper 3730126372Snjlfield 3731126372Snjlbits. Restructured the field support code to improve performance, 3732126372Snjlreadability and maintainability. 3733102550Siwasaki 3734114237SnjlNew DEBUG_PRINTP macro automatically inserts the procedure name 3735114237Snjlinto the output, saving hundreds of copies of procedure name 3736114237Snjlstrings within the source, shrinking the memory footprint of the 3737114237Snjldebug version of the core subsystem. 3738102550Siwasaki 3739102550Siwasaki Source Code Structure: 3740102550Siwasaki 3741104470SiwasakiThe source code directory tree was restructured to reflect the 3742114237Snjlcurrent organization of the component architecture. Some files 3743114237Snjland directories have been moved and/or renamed. 3744102550Siwasaki 3745102550Siwasaki Linux: 3746102550Siwasaki 3747102550SiwasakiFixed leaking kacpidpc processes. 3748102550Siwasaki 3749102550SiwasakiFixed queueing event data even when /proc/acpi/event is not 3750102550Siwasakiopened. 3751102550Siwasaki 3752102550Siwasaki ASL Compiler, version X2020: 3753102550Siwasaki 3754114237SnjlMemory allocation performance enhancement - over 24X compile time 3755114237Snjlimprovement on large ASL files. Parse nodes and namestring 3756114237Snjlbuffers are now allocated from a large internal compiler buffer. 3757102550Siwasaki 3758102550SiwasakiThe temporary .SRC file is deleted unless the "-s" option is 3759102550Siwasakispecified 3760102550Siwasaki 3761104470SiwasakiThe "-d" debug output option now sends all output to the .DBG 3762126372Snjlfile 3763126372Snjlinstead of the console. 3764102550Siwasaki 3765102550Siwasaki"External" second parameter is now optional 3766102550Siwasaki 3767102550Siwasaki"ElseIf" syntax now properly allows the predicate 3768102550Siwasaki 3769102550SiwasakiLast operand to "Load" now recognized as a Target operand 3770102550Siwasaki 3771102550SiwasakiDebug object can now be used anywhere as a normal object. 3772102550Siwasaki 3773102550SiwasakiResourceTemplate now returns an object of type BUFFER 3774102550Siwasaki 3775102550SiwasakiEISAID now returns an object of type INTEGER 3776102550Siwasaki 3777102550Siwasaki"Index" now works with a STRING operand 3778102550Siwasaki 3779102550Siwasaki"LoadTable" now accepts optional parameters 3780102550Siwasaki 3781102550Siwasaki"ToString" length parameter is now optional 3782102550Siwasaki 3783102550Siwasaki"Interrupt (ResourceType," parse error fixed. 3784102550Siwasaki 3785104470Siwasaki"Register" with a user-defined region space parse error fixed 3786102550Siwasaki 3787114237SnjlEscaped backslash at the end of a string ("\\") scan/parse error 3788114237Snjlfixed 3789102550Siwasaki 3790102550Siwasaki"Revision" is now an object of type INTEGER. 3791102550Siwasaki 3792102550Siwasaki 3793102550Siwasaki 3794102550Siwasaki------------------------------------------ 3795102550SiwasakiSummary of changes for this label: 05_02_01 3796102550Siwasaki 3797102550SiwasakiLinux: 3798102550Siwasaki 3799102550Siwasaki/proc/acpi/event now blocks properly. 3800102550Siwasaki 3801102550SiwasakiRemoved /proc/sys/acpi. You can still dump your DSDT from 3802102550Siwasaki/proc/acpi/dsdt. 3803102550Siwasaki 3804102550Siwasaki ACPI CA Core Subsystem: 3805102550Siwasaki 3806104470SiwasakiFixed a problem introduced in the previous label where some of 3807126372Snjlthe 3808126372Snjl"small" resource descriptor types were not recognized. 3809102550Siwasaki 3810102550SiwasakiImproved error messages for the case where an ASL Field is 3811126372Snjloutside 3812126372Snjlthe range of the parent operation region. 3813102550Siwasaki 3814102550Siwasaki ASL Compiler, version X2018: 3815102550Siwasaki 3816102550SiwasakiAdded error detection for ASL Fields that extend beyond the 3817126372Snjllength 3818126372Snjlof the parent operation region (only if the length of the region 3819126372Snjlis known at compile time.) This includes fields that have a 3820126372Snjlminimum access width that is smaller than the parent region, and 3821126372Snjlindividual field units that are partially or entirely beyond the 3822126372Snjlextent of the parent. 3823102550Siwasaki 3824102550Siwasaki 3825102550Siwasaki 3826102550Siwasaki------------------------------------------ 3827102550SiwasakiSummary of changes for this label: 04_27_01 3828102550Siwasaki 3829102550Siwasaki ACPI CA Core Subsystem: 3830102550Siwasaki 3831104470SiwasakiFixed a problem where the namespace mutex could be released at 3832126372Snjlthe 3833126372Snjlwrong time during execution of AcpiRemoveAddressSpaceHandler. 3834102550Siwasaki 3835104470SiwasakiAdded optional thread ID output for debug traces, to simplify 3836114237Snjldebugging of multiple threads. Added context switch notification 3837114237Snjlwhen the debug code realizes that a different thread is now 3838114237Snjlexecuting ACPI code. 3839102550Siwasaki 3840114237SnjlSome additional external data types have been prefixed with the 3841114237Snjlstring "ACPI_" for consistency. This may effect existing code. 3842114237SnjlThe data types affected are the external callback typedefs - 3843126372Snjle.g., 3844126372SnjlWALK_CALLBACK becomes ACPI_WALK_CALLBACK. 3845102550Siwasaki 3846102550Siwasaki Linux: 3847102550Siwasaki 3848102550SiwasakiFixed an issue with the OSL semaphore implementation where a 3849102550Siwasakithread was waking up with an error from receiving a SIGCHLD 3850102550Siwasakisignal. 3851102550Siwasaki 3852114237SnjlLinux version of ACPI CA now uses the system C library for string 3853114237Snjlmanipulation routines instead of a local implementation. 3854102550Siwasaki 3855102550SiwasakiCleaned up comments and removed TBDs. 3856102550Siwasaki 3857102550Siwasaki ASL Compiler, version X2017: 3858102550Siwasaki 3859102550SiwasakiEnhanced error detection and reporting for all file I/O 3860102550Siwasakioperations. 3861102550Siwasaki 3862102550Siwasaki Documentation: 3863102550Siwasaki 3864102550SiwasakiProgrammer Reference updated to version 1.06. 3865102550Siwasaki 3866102550Siwasaki 3867102550Siwasaki 3868102550Siwasaki------------------------------------------ 3869102550SiwasakiSummary of changes for this label: 04_13_01 3870102550Siwasaki 3871102550Siwasaki ACPI CA Core Subsystem: 3872102550Siwasaki 3873102550SiwasakiRestructured support for BufferFields and RegionFields. 3874104470SiwasakiBankFields support is now fully operational. All known 32-bit 3875114237Snjllimitations on field sizes have been removed. Both BufferFields 3876114237Snjland (Operation) RegionFields are now supported by the same field 3877114237Snjlmanagement code. 3878102550Siwasaki 3879114237SnjlResource support now supports QWORD address and IO resources. The 3880114237Snjl16/32/64 bit address structures and the Extended IRQ structure 3881114237Snjlhave been changed to properly handle Source Resource strings. 3882102550Siwasaki 3883114237SnjlA ThreadId of -1 is now used to indicate a "mutex not acquired" 3884114237Snjlcondition internally and must never be returned by 3885126372SnjlAcpiOsThreadId. 3886126372SnjlThis reserved value was changed from 0 since Unix systems allow a 3887126372Snjlthread ID of 0. 3888102550Siwasaki 3889102550SiwasakiLinux: 3890102550Siwasaki 3891102550SiwasakiDriver code reorganized to enhance portability 3892102550Siwasaki 3893102550SiwasakiAdded a kernel configuration option to control ACPI_DEBUG 3894102550Siwasaki 3895102550SiwasakiFixed the EC driver to honor _GLK. 3896102550Siwasaki 3897102550SiwasakiASL Compiler, version X2016: 3898102550Siwasaki 3899114237SnjlFixed support for the "FixedHw" keyword. Previously, the FixedHw 3900114237Snjladdress space was set to 0, not 0x7f as it should be. 3901102550Siwasaki 3902102550Siwasaki ------------------------------------------ 3903102550SiwasakiSummary of changes for this label: 03_13_01 3904102550Siwasaki 3905102550Siwasaki ACPI CA Core Subsystem: 3906102550Siwasaki 3907104470SiwasakiDuring ACPI initialization, the _SB_._INI method is now run if 3908104470Siwasakipresent. 3909102550Siwasaki 3910102550SiwasakiNotify handler fix - notifies are deferred until the parent 3911126372Snjlmethod 3912126372Snjlcompletes execution. This fixes the "mutex already acquired" 3913126372Snjlissue seen occasionally. 3914102550Siwasaki 3915104470SiwasakiPart of the "implicit conversion" rules in ACPI 2.0 have been 3916114237Snjlfound to cause compatibility problems with existing ASL/AML. The 3917114237Snjlconvert "result-to-target-type" implementation has been removed 3918114237Snjlfor stores to method Args and Locals. Source operand conversion 3919114237Snjlis still fully implemented. Possible changes to ACPI 2.0 3920114237Snjlspecification pending. 3921102550Siwasaki 3922104470SiwasakiFix to AcpiRsCalculatePciRoutingTableLength to return correct 3923104470Siwasakilength. 3924102550Siwasaki 3925102550SiwasakiFix for compiler warnings for 64-bit compiles. 3926102550Siwasaki 3927102550Siwasaki Linux: 3928102550Siwasaki 3929102550Siwasaki/proc output aligned for easier parsing. 3930102550Siwasaki 3931102550SiwasakiRelease-version compile problem fixed. 3932102550Siwasaki 3933104470SiwasakiNew kernel configuration options documented in Configure.help. 3934102550Siwasaki 3935102550SiwasakiIBM 600E - Fixed Sleep button may generate "Invalid <NULL> 3936102550Siwasakicontext" message. 3937102550Siwasaki 3938102550Siwasaki OSPM: 3939102550Siwasaki 3940102550SiwasakiPower resource driver integrated with bus manager. 3941102550Siwasaki 3942102550SiwasakiFixed kernel fault during active cooling for thermal zones. 3943102550Siwasaki 3944102550SiwasakiSource Code: 3945102550Siwasaki 3946102550SiwasakiThe source code tree has been restructured. 3947102550Siwasaki 3948102550Siwasaki 3949102550Siwasaki 3950102550Siwasaki------------------------------------------ 3951102550SiwasakiSummary of changes for this label: 03_02_01 3952102550Siwasaki 3953102550Siwasaki Linux OS Services Layer (OSL): 3954102550Siwasaki 3955102550SiwasakiMajor revision of all Linux-specific code. 3956102550Siwasaki 3957102550SiwasakiModularized all ACPI-specific drivers. 3958102550Siwasaki 3959102550SiwasakiAdded new thermal zone and power resource drivers. 3960102550Siwasaki 3961114237SnjlRevamped /proc interface (new functionality is under /proc/acpi). 3962102550Siwasaki 3963102550SiwasakiNew kernel configuration options. 3964102550Siwasaki 3965102550Siwasaki Linux known issues: 3966102550Siwasaki 3967114237SnjlNew kernel configuration options not documented in Configure.help 3968114237Snjlyet. 3969102550Siwasaki 3970114237Snjl 3971102550SiwasakiModule dependencies not currently implemented. If used, they 3972102550Siwasakishould be loaded in this order: busmgr, power, ec, system, 3973102550Siwasakiprocessor, battery, ac_adapter, button, thermal. 3974102550Siwasaki 3975102550SiwasakiModules will not load if CONFIG_MODVERSION is set. 3976102550Siwasaki 3977102550SiwasakiIBM 600E - entering S5 may reboot instead of shutting down. 3978102550Siwasaki 3979104470SiwasakiIBM 600E - Sleep button may generate "Invalid <NULL> context" 3980104470Siwasakimessage. 3981102550Siwasaki 3982104470SiwasakiSome systems may fail with "execution mutex already acquired" 3983104470Siwasakimessage. 3984102550Siwasaki 3985102550Siwasaki ACPI CA Core Subsystem: 3986102550Siwasaki 3987114237SnjlAdded a new OSL Interface, AcpiOsGetThreadId. This was required 3988114237Snjlfor the deadlock detection code. Defined to return a non-zero, 3989126372Snjl32- 3990126372Snjlbit thread ID for the currently executing thread. May be a non- 3991126372Snjlzero constant integer on single-thread systems. 3992102550Siwasaki 3993104470SiwasakiImplemented deadlock detection for internal subsystem mutexes. 3994126372SnjlWe 3995126372Snjlmay add conditional compilation for this code (debug only) later. 3996102550Siwasaki 3997104470SiwasakiASL/AML Mutex object semantics are now fully supported. This 3998114237Snjlincludes multiple acquires/releases by owner and support for the 3999114237SnjlMutex SyncLevel parameter. 4000102550Siwasaki 4001102550SiwasakiA new "Force Release" mechanism automatically frees all ASL 4002104470SiwasakiMutexes that have been acquired but not released when a thread 4003114237Snjlexits the interpreter. This forces conformance to the ACPI spec 4004114237Snjl("All mutexes must be released when an invocation exits") and 4005114237Snjlprevents deadlocked ASL threads. This mechanism can be expanded 4006114237Snjl(later) to monitor other resource acquisitions if OEM ASL code 4007114237Snjlcontinues to misbehave (which it will). 4008102550Siwasaki 4009104470SiwasakiSeveral new ACPI exception codes have been added for the Mutex 4010104470Siwasakisupport. 4011102550Siwasaki 4012104470SiwasakiRecursive method calls are now allowed and supported (the ACPI 4013114237Snjlspec does in fact allow recursive method calls.) The number of 4014114237Snjlrecursive calls is subject to the restrictions imposed by the 4015114237SnjlSERIALIZED method keyword and SyncLevel (ACPI 2.0) method 4016104470Siwasakiparameter. 4017102550Siwasaki 4018102550SiwasakiImplemented support for the SyncLevel parameter for control 4019102550Siwasakimethods (ACPI 2.0 feature) 4020102550Siwasaki 4021114237SnjlFixed a deadlock problem when multiple threads attempted to use 4022114237Snjlthe interpreter. 4023102550Siwasaki 4024102550SiwasakiFixed a problem where the string length of a String package 4025102550Siwasakielement was not always set in a package returned from 4026102550SiwasakiAcpiEvaluateObject. 4027102550Siwasaki 4028114237SnjlFixed a problem where the length of a String package element was 4029114237Snjlnot always included in the length of the overall package returned 4030114237Snjlfrom AcpiEvaluateObject. 4031102550Siwasaki 4032102550SiwasakiAdded external interfaces (Acpi*) to the ACPI debug memory 4033102550Siwasakimanager. This manager keeps a list of all outstanding 4034114237Snjlallocations, and can therefore detect memory leaks and attempts 4035126372Snjlto 4036126372Snjlfree memory blocks more than once. Useful for code such as the 4037114237Snjlpower manager, etc. May not be appropriate for device drivers. 4038114237SnjlPerformance with the debug code enabled is slow. 4039102550Siwasaki 4040102550SiwasakiThe ACPI Global Lock is now an optional hardware element. 4041102550Siwasaki 4042102550Siwasaki ASL Compiler Version X2015: 4043102550Siwasaki 4044102550SiwasakiIntegrated changes to allow the compiler to be generated on 4045102550Siwasakimultiple platforms. 4046102550Siwasaki 4047102550SiwasakiLinux makefile added to generate the compiler on Linux 4048102550Siwasaki 4049102550Siwasaki Source Code: 4050102550Siwasaki 4051102550SiwasakiAll platform-specific headers have been moved to their own 4052102550Siwasakisubdirectory, Include/Platform. 4053102550Siwasaki 4054102550SiwasakiNew source file added, Interpreter/ammutex.c 4055102550Siwasaki 4056102550SiwasakiNew header file, Include/acstruct.h 4057102550Siwasaki 4058102550Siwasaki Documentation: 4059102550Siwasaki 4060114237SnjlThe programmer reference has been updated for the following new 4061114237Snjlinterfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 4062102550Siwasaki 4063102550Siwasaki ------------------------------------------ 4064102550SiwasakiSummary of changes for this label: 02_08_01 4065102550Siwasaki 4066102550SiwasakiCore ACPI CA Subsystem: Fixed a problem where an error was 4067104470Siwasakiincorrectly returned if the return resource buffer was larger 4068126372Snjlthan 4069126372Snjlthe actual data (in the resource interfaces). 4070102550Siwasaki 4071114237SnjlReferences to named objects within packages are resolved to the 4072114237Snjlfull pathname string before packages are returned directly (via 4073114237Snjlthe AcpiEvaluateObject interface) or indirectly via the resource 4074114237Snjlinterfaces. 4075102550Siwasaki 4076102550SiwasakiLinux OS Services Layer (OSL): 4077102550Siwasaki 4078102550SiwasakiImproved /proc battery interface. 4079102550Siwasaki 4080102550Siwasaki 4081104470SiwasakiAdded C-state debugging output and other miscellaneous fixes. 4082102550Siwasaki 4083102550SiwasakiASL Compiler Version X2014: 4084102550Siwasaki 4085114237SnjlAll defined method arguments can now be used as local variables, 4086114237Snjlincluding the ones that are not actually passed in as parameters. 4087114237SnjlThe compiler tracks initialization of the arguments and issues an 4088114237Snjlexception if they are used without prior assignment (just like 4089114237Snjllocals). 4090102550Siwasaki 4091104470SiwasakiThe -o option now specifies a filename prefix that is used for 4092126372Snjlall 4093126372Snjloutput files, including the AML output file. Otherwise, the 4094114237Snjldefault behavior is as follows: 1) the AML goes to the file 4095114237Snjlspecified in the DSDT. 2) all other output files use the input 4096114237Snjlsource filename as the base. 4097102550Siwasaki 4098102550Siwasaki ------------------------------------------ 4099102550SiwasakiSummary of changes for this label: 01_25_01 4100102550Siwasaki 4101114237SnjlCore ACPI CA Subsystem: Restructured the implementation of object 4102114237Snjlstore support within the interpreter. This includes support for 4103114237Snjlthe Store operator as well as any ASL operators that include a 4104114237Snjltarget operand. 4105102550Siwasaki 4106102550SiwasakiPartially implemented support for Implicit Result-to-Target 4107114237Snjlconversion. This is when a result object is converted on the fly 4108114237Snjlto the type of an existing target object. Completion of this 4109114237Snjlsupport is pending further analysis of the ACPI specification 4110114237Snjlconcerning this matter. 4111102550Siwasaki 4112114237SnjlCPU-specific code has been removed from the subsystem (hardware 4113114237Snjldirectory). 4114102550Siwasaki 4115102550SiwasakiNew Power Management Timer functions added 4116102550Siwasaki 4117114237SnjlLinux OS Services Layer (OSL): Moved system state transition code 4118114237Snjlto the core, fixed it, and modified Linux OSL accordingly. 4119102550Siwasaki 4120102550SiwasakiFixed C2 and C3 latency calculations. 4121102550Siwasaki 4122102550Siwasaki 4123114237SnjlWe no longer use the compilation date for the version message on 4124114237Snjlinitialization, but retrieve the version from 4125102550SiwasakiAcpiGetSystemInfo(). 4126102550Siwasaki 4127102550SiwasakiIncorporated for fix Sony VAIO machines. 4128102550Siwasaki 4129104470SiwasakiDocumentation: The Programmer Reference has been updated and 4130104470Siwasakireformatted. 4131102550Siwasaki 4132102550Siwasaki 4133102550SiwasakiASL Compiler: Version X2013: Fixed a problem where the line 4134102550Siwasakinumbering and error reporting could get out of sync in the 4135102550Siwasakipresence of multiple include files. 4136102550Siwasaki 4137102550Siwasaki ------------------------------------------ 4138102550SiwasakiSummary of changes for this label: 01_15_01 4139102550Siwasaki 4140102550SiwasakiCore ACPI CA Subsystem: 4141102550Siwasaki 4142114237SnjlImplemented support for type conversions in the execution of the 4143114237SnjlASL Concatenate operator (The second operand is converted to 4144114237Snjlmatch the type of the first operand before concatenation.) 4145102550Siwasaki 4146102550SiwasakiSupport for implicit source operand conversion is partially 4147114237Snjlimplemented. The ASL source operand types Integer, Buffer, and 4148114237SnjlString are freely interchangeable for most ASL operators and are 4149114237Snjlconverted by the interpreter on the fly as required. Implicit 4150114237SnjlTarget operand conversion (where the result is converted to the 4151114237Snjltarget type before storing) is not yet implemented. 4152102550Siwasaki 4153102550SiwasakiSupport for 32-bit and 64-bit BCD integers is implemented. 4154102550Siwasaki 4155114237SnjlProblem fixed where a field read on an aligned field could cause 4156126372Snjla 4157126372Snjlread past the end of the field. 4158102550Siwasaki 4159114237SnjlNew exception, AE_AML_NO_RETURN_VALUE, is returned when a method 4160114237Snjldoes not return a value, but the caller expects one. (The ASL 4161114237Snjlcompiler flags this as a warning.) 4162102550Siwasaki 4163102550SiwasakiASL Compiler: 4164102550Siwasaki 4165102550SiwasakiVersion X2011: 4166102550Siwasaki1. Static typechecking of all operands is implemented. This 4167102550Siwasakiprevents the use of invalid objects (such as using a Package 4168126372Snjlwhere 4169126372Snjlan Integer is required) at compile time instead of at interpreter 4170126372Snjlrun-time. 4171114237Snjl2. The ASL source line is printed with ALL errors and warnings. 4172102550Siwasaki3. Bug fix for source EOF without final linefeed. 4173102550Siwasaki4. Debug option is split into a parse trace and a namespace 4174102550Siwasakitrace. 4175102550Siwasaki5. Namespace output option (-n) includes initial values for 4176102550Siwasakiintegers and strings. 4177102550Siwasaki6. Parse-only option added for quick syntax checking. 4178102550Siwasaki7. Compiler checks for duplicate ACPI name declarations 4179102550Siwasaki 4180102550SiwasakiVersion X2012: 4181102550Siwasaki1. Relaxed typechecking to allow interchangeability between 4182114237Snjlstrings, integers, and buffers. These types are now converted by 4183114237Snjlthe interpreter at runtime. 4184114237Snjl2. Compiler reports time taken by each internal subsystem in the 4185114237Snjldebug output file. 4186102550Siwasaki 4187102550Siwasaki 4188102550Siwasaki ------------------------------------------ 4189102550SiwasakiSummary of changes for this label: 12_14_00 4190102550Siwasaki 4191102550SiwasakiASL Compiler: 4192102550Siwasaki 4193104470SiwasakiThis is the first official release of the compiler. Since the 4194104470Siwasakicompiler requires elements of the Core Subsystem, this label 4195104470Siwasakisynchronizes everything. 4196102550Siwasaki 4197102550Siwasaki------------------------------------------ 4198102550SiwasakiSummary of changes for this label: 12_08_00 4199102550Siwasaki 4200102550Siwasaki 4201114237SnjlFixed a problem where named references within the ASL definition 4202114237Snjlof both OperationRegions and CreateXXXFields did not work 4203114237Snjlproperly. The symptom was an AE_AML_OPERAND_TYPE during 4204114237Snjlinitialization of the region/field. This is similar (but not 4205114237Snjlrelated internally) to the problem that was fixed in the last 4206114237Snjllabel. 4207114237Snjl 4208102550SiwasakiImplemented both 32-bit and 64-bit support for the BCD ASL 4209102550Siwasakifunctions ToBCD and FromBCD. 4210102550Siwasaki 4211102550SiwasakiUpdated all legal headers to include "2000" in the copyright 4212102550Siwasakiyears. 4213102550Siwasaki 4214102550Siwasaki ------------------------------------------ 4215102550SiwasakiSummary of changes for this label: 12_01_00 4216102550Siwasaki 4217102550SiwasakiFixed a problem where method invocations within the ASL 4218126372Snjldefinition 4219126372Snjlof both OperationRegions and CreateXXXFields did not work 4220126372Snjlproperly. The symptom was an AE_AML_OPERAND_TYPE during 4221114237Snjlinitialization of the region/field: 4222102550Siwasaki 4223114237Snjl nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 4224114237Snjl[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 4225114237Snjl(0x3005) 4226102550Siwasaki 4227102550SiwasakiFixed a problem where operators with more than one nested 4228104470Siwasakisubexpression would fail. The symptoms were varied, by mostly 4229114237SnjlAE_AML_OPERAND_TYPE errors. This was actually a rather serious 4230114237Snjlproblem that has gone unnoticed until now. 4231102550Siwasaki 4232102550Siwasaki Subtract (Add (1,2), Multiply (3,4)) 4233102550Siwasaki 4234114237SnjlFixed a problem where AcpiGetHandle didn't quite get fixed in the 4235114237Snjlprevious build (The prefix part of a relative path was handled 4236114237Snjlincorrectly). 4237102550Siwasaki 4238114237SnjlFixed a problem where Operation Region initialization failed if 4239114237Snjlthe operation region name was a "namepath" instead of a simple 4240114237Snjl"nameseg". Symptom was an AE_NO_OPERAND error. 4241102550Siwasaki 4242114237SnjlFixed a problem where an assignment to a local variable via the 4243114237Snjlindirect RefOf mechanism only worked for the first such 4244102550Siwasakiassignment. Subsequent assignments were ignored. 4245102550Siwasaki 4246102550Siwasaki ------------------------------------------ 4247102550SiwasakiSummary of changes for this label: 11_15_00 4248102550Siwasaki 4249104470SiwasakiACPI 2.0 table support with backwards support for ACPI 1.0 and 4250126372Snjlthe 4251126372Snjl0.71 extensions. Note: although we can read ACPI 2.0 BIOS 4252126372Snjltables, 4253126372Snjlthe AML interpreter does NOT have support for the new 2.0 ASL 4254126372Snjlgrammar terms at this time. 4255102550Siwasaki 4256104470SiwasakiAll ACPI hardware access is via the GAS structures in the ACPI 4257126372Snjl2.0 4258126372SnjlFADT. 4259102550Siwasaki 4260104470SiwasakiAll physical memory addresses across all platforms are now 64 4261126372Snjlbits 4262126372Snjlwide. Logical address width remains dependent on the platform 4263126372Snjl(i.e., "void *"). 4264102550Siwasaki 4265114237SnjlAcpiOsMapMemory interface changed to a 64-bit physical address. 4266102550Siwasaki 4267114237SnjlThe AML interpreter integer size is now 64 bits, as per the ACPI 4268114237Snjl2.0 specification. 4269102550Siwasaki 4270104470SiwasakiFor backwards compatibility with ACPI 1.0, ACPI tables with a 4271104470Siwasakirevision number less than 2 use 32-bit integers only. 4272102550Siwasaki 4273114237SnjlFixed a problem where the evaluation of OpRegion operands did not 4274114237Snjlalways resolve them to numbers properly. 4275102550Siwasaki 4276102550Siwasaki------------------------------------------ 4277102550SiwasakiSummary of changes for this label: 10_20_00 4278102550Siwasaki 4279114237SnjlFix for CBN_._STA issue. This fix will allow correct access to 4280114237SnjlCBN_ OpRegions when the _STA returns 0x8. 4281102550Siwasaki 4282104470SiwasakiSupport to convert ACPI constants (Ones, Zeros, One) to actual 4283104470Siwasakivalues before a package object is returned 4284102550Siwasaki 4285104470SiwasakiFix for method call as predicate to if/while construct causing 4286104470Siwasakiincorrect if/while behavior 4287102550Siwasaki 4288114237SnjlFix for Else block package lengths sometimes calculated wrong (if 4289114237Snjlblock > 63 bytes) 4290102550Siwasaki 4291102550SiwasakiFix for Processor object length field, was always zero 4292102550Siwasaki 4293102550SiwasakiTable load abort if FACP sanity check fails 4294102550Siwasaki 4295102550SiwasakiFix for problem with Scope(name) if name already exists 4296102550Siwasaki 4297102550SiwasakiWarning emitted if a named object referenced cannot be found 4298102550Siwasaki(resolved) during method execution. 4299102550Siwasaki 4300102550Siwasaki 4301102550Siwasaki 4302102550Siwasaki 4303102550Siwasaki 4304102550Siwasaki------------------------------------------ 4305102550SiwasakiSummary of changes for this label: 9_29_00 4306102550Siwasaki 4307114237SnjlNew table initialization interfaces: AcpiInitializeSubsystem no 4308114237Snjllonger has any parameters AcpiFindRootPointer - Find the RSDP (if 4309114237Snjlnecessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 4310114237Snjl>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 4311114237SnjlAcpiLoadTables 4312102550Siwasaki 4313104470SiwasakiNote: These interface changes require changes to all existing 4314104470SiwasakiOSDs 4315102550Siwasaki 4316114237SnjlThe PCI_Config default address space handler is always installed 4317114237Snjlat the root namespace object. 4318102550Siwasaki 4319102550Siwasaki------------------------------------------- 4320102550SiwasakiSummary of changes for this label: 09_15_00 4321102550Siwasaki 4322102550SiwasakiThe new initialization architecture is implemented. New 4323114237Snjlinterfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 4324114237SnjlAcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 4325114237Snjl(Namespace is automatically loaded when a table is loaded) 4326102550Siwasaki 4327104470SiwasakiThe ACPI_OPERAND_OBJECT has been optimized to shrink its size 4328126372Snjlfrom 4329126372Snjl52 bytes to 32 bytes. There is usually one of these for every 4330126372Snjlnamespace object, so the memory savings is significant. 4331102550Siwasaki 4332114237SnjlImplemented just-in-time evaluation of the CreateField operators. 4333102550Siwasaki 4334102550SiwasakiBug fixes for IA-64 support have been integrated. 4335102550Siwasaki 4336102550SiwasakiAdditional code review comments have been implemented 4337102550Siwasaki 4338104470SiwasakiThe so-called "third pass parse" has been replaced by a final 4339126372Snjlwalk 4340126372Snjlthrough the namespace to initialize all operation regions 4341126372Snjl(address 4342126372Snjlspaces) and fields that have not yet been initialized during the 4343126372Snjlexecution of the various _INI and REG methods. 4344102550Siwasaki 4345102550SiwasakiNew file - namespace/nsinit.c 4346102550Siwasaki 4347102550Siwasaki------------------------------------------- 4348102550SiwasakiSummary of changes for this label: 09_01_00 4349102550Siwasaki 4350104470SiwasakiNamespace manager data structures have been reworked to change 4351126372Snjlthe 4352126372Snjlprimary object from a table to a single object. This has 4353104470Siwasakiresulted in dynamic memory savings of 3X within the namespace 4354126372Snjland 4355126372Snjl2X overall in the ACPI CA subsystem. 4356102550Siwasaki 4357102550SiwasakiFixed problem where the call to AcpiEvFindPciRootBuses was 4358102550Siwasakiinadvertently left commented out. 4359102550Siwasaki 4360114237SnjlReduced the warning count when generating the source with the GCC 4361114237Snjlcompiler. 4362102550Siwasaki 4363102550SiwasakiRevision numbers added to each module header showing the 4364104470SiwasakiSourceSafe version of the file. Please refer to this version 4365114237Snjlnumber when giving us feedback or comments on individual modules. 4366102550Siwasaki 4367114237SnjlThe main object types within the subsystem have been renamed to 4368114237Snjlclarify their purpose: 4369102550Siwasaki 4370102550SiwasakiACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 4371102550SiwasakiACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 4372102550SiwasakiACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 4373102550Siwasaki 4374114237SnjlNOTE: no changes to the initialization sequence are included in 4375114237Snjlthis label. 4376102550Siwasaki 4377102550Siwasaki------------------------------------------- 4378102550SiwasakiSummary of changes for this label: 08_23_00 4379102550Siwasaki 4380102550SiwasakiFixed problem where TerminateControlMethod was being called 4381102550Siwasakimultiple times per method 4382102550Siwasaki 4383114237SnjlFixed debugger problem where single stepping caused a semaphore 4384126372Snjlto 4385126372Snjlbe oversignalled 4386102550Siwasaki 4387104470SiwasakiImproved performance through additional parse object caching - 4388104470Siwasakiadded ACPI_EXTENDED_OP type 4389102550Siwasaki 4390102550Siwasaki------------------------------------------- 4391102550SiwasakiSummary of changes for this label: 08_10_00 4392102550Siwasaki 4393102550SiwasakiParser/Interpreter integration: Eliminated the creation of 4394102550Siwasakicomplete parse trees for ACPI tables and control methods. 4395114237SnjlInstead, parse subtrees are created and then deleted as soon as 4396114237Snjlthey are processed (Either entered into the namespace or 4397126372Snjlexecuted 4398126372Snjlby the interpreter). This reduces the use of dynamic kernel 4399126372Snjlmemory significantly. (about 10X) 4400102550Siwasaki 4401114237SnjlException codes broken into classes and renumbered. Be sure to 4402114237Snjlrecompile all code that includes acexcep.h. Hopefully we won't 4403114237Snjlhave to renumber the codes again now that they are split into 4404114237Snjlclasses (environment, programmer, AML code, ACPI table, and 4405114237Snjlinternal). 4406102550Siwasaki 4407104470SiwasakiFixed some additional alignment issues in the Resource Manager 4408104470Siwasakisubcomponent 4409102550Siwasaki 4410114237SnjlImplemented semaphore tracking in the AcpiExec utility, and fixed 4411114237Snjlseveral places where mutexes/semaphores were being unlocked 4412114237Snjlwithout a corresponding lock operation. There are no known 4413114237Snjlsemaphore or mutex "leaks" at this time. 4414102550Siwasaki 4415114237SnjlFixed the case where an ASL Return operator is used to return an 4416114237Snjlunnamed package. 4417102550Siwasaki 4418102550Siwasaki------------------------------------------- 4419102550SiwasakiSummary of changes for this label: 07_28_00 4420102550Siwasaki 4421102550SiwasakiFixed a problem with the way addresses were calculated in 4422114237SnjlAcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 4423114237Snjlmanifested itself when a Field was created with WordAccess or 4424114237SnjlDwordAccess, but the field unit defined within the Field was 4425126372Snjlless 4426126372Snjlthan a Word or Dword. 4427102550Siwasaki 4428102550SiwasakiFixed a problem in AmlDumpOperands() module's loop to pull 4429104470Siwasakioperands off of the operand stack to display information. The 4430114237Snjlproblem manifested itself as a TLB error on 64-bit systems when 4431114237Snjlaccessing an operand stack with two or more operands. 4432102550Siwasaki 4433114237SnjlFixed a problem with the PCI configuration space handlers where 4434114237Snjlcontext was getting confused between accesses. This required a 4435114237Snjlchange to the generic address space handler and address space 4436114237Snjlsetup definitions. Handlers now get both a global handler 4437126372Snjlcontext 4438126372Snjl(this is the one passed in by the user when executing 4439114237SnjlAcpiInstallAddressSpaceHandler() and a specific region context 4440114237Snjlthat is unique to each region (For example, the _ADR, _SEG and 4441114237Snjl_BBN values associated with a specific region). The generic 4442114237Snjlfunction definitions have changed to the following: 4443102550Siwasaki 4444114237Snjltypedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 4445114237SnjlUINT32 Address, UINT32 BitWidth, UINT32 *Value, void 4446104470Siwasaki*HandlerContext, // This used to be void *Context void 4447102550Siwasaki*RegionContext); // This is an additional parameter 4448102550Siwasaki 4449102550Siwasakitypedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 4450102550SiwasakiRegionHandle, UINT32 Function, void *HandlerContext, void 4451102550Siwasaki**RegionContext); // This used to be **ReturnContext 4452102550Siwasaki 4453102550Siwasaki------------------------------------------- 4454102550SiwasakiSummary of changes for this label: 07_21_00 4455102550Siwasaki 4456102550SiwasakiMajor file consolidation and rename. All files within the 4457102550Siwasakiinterpreter have been renamed as well as most header files. 4458126372SnjlThis 4459126372Snjlwas done to prevent collisions with existing files in the host 4460126372SnjlOSs -- filenames such as "config.h" and "global.h" seem to be 4461126372Snjlquite common. The VC project files have been updated. All 4462114237Snjlmakefiles will require modification. 4463102550Siwasaki 4464114237SnjlThe parser/interpreter integration continues in Phase 5 with the 4465114237Snjlimplementation of a complete 2-pass parse (the AML is parsed 4466114237Snjltwice) for each table; This avoids the construction of a huge 4467114237Snjlparse tree and therefore reduces the amount of dynamic memory 4468114237Snjlrequired by the subsystem. Greater use of the parse object cache 4469114237Snjlmeans that performance is unaffected. 4470102550Siwasaki 4471102550SiwasakiMany comments from the two code reviews have been rolled in. 4472102550Siwasaki 4473102550SiwasakiThe 64-bit alignment support is complete. 4474102550Siwasaki 4475102550Siwasaki------------------------------------------- 4476102550SiwasakiSummary of changes for this label: 06_30_00 4477102550Siwasaki 4478114237SnjlWith a nod and a tip of the hat to the technology of yesteryear, 4479114237Snjlwe've added support in the source code for 80 column output 4480114237Snjldevices. The code is now mostly constrained to 80 columns or 4481114237Snjlless to support environments and editors that 1) cannot display 4482114237Snjlor print more than 80 characters on a single line, and 2) cannot 4483114237Snjldisable line wrapping. 4484102550Siwasaki 4485104470SiwasakiA major restructuring of the namespace data structure has been 4486104470Siwasakicompleted. The result is 1) cleaner and more 4487114237Snjlunderstandable/maintainable code, and 2) a significant reduction 4488114237Snjlin the dynamic memory requirement for each named ACPI object 4489114237Snjl(almost half). 4490102550Siwasaki 4491102550Siwasaki------------------------------------------- 4492102550SiwasakiSummary of changes for this label: 06_23_00 4493102550Siwasaki 4494114237SnjlLinux support has been added. In order to obtain approval to get 4495114237Snjlthe ACPI CA subsystem into the Linux kernel, we've had to make 4496114237Snjlquite a few changes to the base subsystem that will affect all 4497114237Snjlusers (all the changes are generic and OS- independent). The 4498114237Snjleffects of these global changes have been somewhat far reaching. 4499114237SnjlFiles have been merged and/or renamed and interfaces have been 4500114237Snjlrenamed. The major changes are described below. 4501102550Siwasaki 4502102550SiwasakiOsd* interfaces renamed to AcpiOs* to eliminate namespace 4503102550Siwasakipollution/confusion within our target kernels. All OSD 4504114237Snjlinterfaces must be modified to match the new naming convention. 4505102550Siwasaki 4506102550SiwasakiFiles merged across the subsystem. A number of the smaller 4507126372Snjlsource 4508126372Snjland header files have been merged to reduce the file count and 4509126372Snjlincrease the density of the existing files. There are too many 4510126372Snjlto list here. In general, makefiles that call out individual 4511126372Snjlfiles will require rebuilding. 4512102550Siwasaki 4513104470SiwasakiInterpreter files renamed. All interpreter files now have the 4514104470Siwasakiprefix am* instead of ie* and is*. 4515102550Siwasaki 4516104470SiwasakiHeader files renamed: The acapi.h file is now acpixf.h. The 4517114237Snjlacpiosd.h file is now acpiosxf.h. We are removing references to 4518114237Snjlthe acronym "API" since it is somewhat windowsy. The new name is 4519114237Snjl"external interface" or xface or xf in the filenames.j 4520102550Siwasaki 4521102550Siwasaki 4522114237SnjlAll manifest constants have been forced to upper case (some were 4523114237Snjlmixed case.) Also, the string "ACPI_" has been prepended to 4524126372Snjlmany 4525126372Snjl(not all) of the constants, typedefs, and structs. 4526102550Siwasaki 4527102550SiwasakiThe globals "DebugLevel" and "DebugLayer" have been renamed 4528102550Siwasaki"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 4529102550Siwasaki 4530102550SiwasakiAll other globals within the subsystem are now prefixed with 4531102550Siwasaki"AcpiGbl_" Internal procedures within the subsystem are now 4532114237Snjlprefixed with "Acpi" (with only a few exceptions). The original 4533114237Snjltwo-letter abbreviation for the subcomponent remains after 4534126372Snjl"Acpi" 4535126372Snjl- for example, CmCallocate became AcpiCmCallocate. 4536102550Siwasaki 4537102550SiwasakiAdded a source code translation/conversion utility. Used to 4538114237Snjlgenerate the Linux source code, it can be modified to generate 4539114237Snjlother types of source as well. Can also be used to cleanup 4540114237Snjlexisting source by removing extraneous spaces and blank lines. 4541114237SnjlFound in tools/acpisrc/* 4542102550Siwasaki 4543102550SiwasakiOsdUnMapMemory was renamed to OsdUnmapMemory and then 4544102550SiwasakiAcpiOsUnmapMemory. (UnMap became Unmap). 4545102550Siwasaki 4546114237SnjlA "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 4547114237SnjlWhen set to one, this indicates that the caller wants to use the 4548114237Snjlsemaphore as a mutex, not a counting semaphore. ACPI CA uses 4549114237Snjlboth types. However, implementers of this call may want to use 4550114237Snjldifferent OS primitives depending on the type of semaphore 4551114237Snjlrequested. For example, some operating systems provide separate 4552114237Snjl"mutex" and "semaphore" interfaces - where the mutex interface 4553126372Snjlis 4554126372Snjlmuch faster because it doesn't have all the overhead of a full 4555126372Snjlsemaphore implementation. 4556102550Siwasaki 4557104470SiwasakiFixed a deadlock problem where a method that accesses the PCI 4558114237Snjladdress space can block forever if it is the first access to the 4559114237Snjlspace. 4560102550Siwasaki 4561102550Siwasaki------------------------------------------- 4562102550SiwasakiSummary of changes for this label: 06_02_00 4563102550Siwasaki 4564102550SiwasakiSupport for environments that cannot handle unaligned data 4565114237Snjlaccesses (e.g. firmware and OS environments devoid of alignment 4566114237Snjlhandler technology namely SAL/EFI and the IA-64 Linux kernel) 4567126372Snjlhas 4568126372Snjlbeen added (via configurable macros) in these three areas: - 4569114237SnjlTransfer of data from the raw AML byte stream is done via byte 4570114237Snjlmoves instead of word/dword/qword moves. - External objects 4571126372Snjlare 4572126372Snjlaligned within the user buffer, including package elements (sub- 4573126372Snjlobjects). - Conversion of name strings to UINT32 Acpi Names is 4574126372Snjlnow 4575126372Snjldone byte-wise. 4576102550Siwasaki 4577102550SiwasakiThe Store operator was modified to mimic Microsoft's 4578102550Siwasakiimplementation when storing to a Buffer Field. 4579102550Siwasaki 4580102550SiwasakiAdded a check of the BM_STS bit before entering C3. 4581102550Siwasaki 4582114237SnjlThe methods subdirectory has been obsoleted and removed. A new 4583114237Snjlfile, cmeval.c subsumes the functionality. 4584102550Siwasaki 4585102550SiwasakiA 16-bit (DOS) version of AcpiExec has been developed. The 4586102550Siwasakimakefile is under the acpiexec directory. 4587