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